Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import urllib.parse
- import json
- # Class approach
- class OktaStateParams(object):
- def __init__(self, values=None, url_string=None):
- '''
- Class to serialize state variables during Okta authentication
- :param values: A dictionary, list, or tuple of keys and values
- :param url_string: String of params to parse
- '''
- self.values = {}
- if values:
- v_type = type(values)
- if v_type == dict:
- for key, value in values.items():
- self.add(key, value)
- else:
- for item in values:
- self.add(item[0], item[1])
- if url_string:
- self.from_url_string(url_string)
- def add(self, key, value):
- self.values[key] = value
- def remove(self, key):
- if key in self.values:
- del self.values[key]
- def get(self, key, default=None):
- return self.values.get(key, default)
- def clear(self):
- self.values.clear()
- def to_url_string(self, encode=False):
- _val = json.dumps(self.values)
- if encode:
- _val = urllib.parse.quote_plus(_val)
- return _val
- def from_url_string(self, url_string, decode=False):
- if decode:
- url_string = urllib.parse.unquote_plus(url_string)
- self.values = json.loads(url_string)
- # Function approach
- def state_to_string(values, encode=False):
- if type(values) == dict:
- _val = json.dumps(values)
- else:
- _d = {}
- for item in values:
- _d[item[0]] = item[1]
- _val = json.dumps(_d)
- if encode:
- _val = urllib.parse.quote_plus(_val)
- return _val
- def string_to_state(url_string, decode=False):
- if decode:
- url_string = urllib.parse.unquote_plus(url_string)
- return json.loads(url_string)
Add Comment
Please, Sign In to add comment