Guest User

Untitled

a guest
Jul 20th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. import urllib.parse
  2. import json
  3.  
  4.  
  5. # Class approach
  6. class OktaStateParams(object):
  7.  
  8. def __init__(self, values=None, url_string=None):
  9. '''
  10. Class to serialize state variables during Okta authentication
  11. :param values: A dictionary, list, or tuple of keys and values
  12. :param url_string: String of params to parse
  13. '''
  14. self.values = {}
  15.  
  16. if values:
  17. v_type = type(values)
  18. if v_type == dict:
  19. for key, value in values.items():
  20. self.add(key, value)
  21. else:
  22. for item in values:
  23. self.add(item[0], item[1])
  24.  
  25. if url_string:
  26. self.from_url_string(url_string)
  27.  
  28. def add(self, key, value):
  29. self.values[key] = value
  30.  
  31. def remove(self, key):
  32. if key in self.values:
  33. del self.values[key]
  34.  
  35. def get(self, key, default=None):
  36. return self.values.get(key, default)
  37.  
  38. def clear(self):
  39. self.values.clear()
  40.  
  41. def to_url_string(self, encode=False):
  42. _val = json.dumps(self.values)
  43. if encode:
  44. _val = urllib.parse.quote_plus(_val)
  45. return _val
  46.  
  47. def from_url_string(self, url_string, decode=False):
  48. if decode:
  49. url_string = urllib.parse.unquote_plus(url_string)
  50. self.values = json.loads(url_string)
  51.  
  52.  
  53. # Function approach
  54. def state_to_string(values, encode=False):
  55. if type(values) == dict:
  56. _val = json.dumps(values)
  57. else:
  58. _d = {}
  59. for item in values:
  60. _d[item[0]] = item[1]
  61. _val = json.dumps(_d)
  62.  
  63. if encode:
  64. _val = urllib.parse.quote_plus(_val)
  65.  
  66. return _val
  67.  
  68.  
  69. def string_to_state(url_string, decode=False):
  70. if decode:
  71. url_string = urllib.parse.unquote_plus(url_string)
  72.  
  73. return json.loads(url_string)
Add Comment
Please, Sign In to add comment