10
10
class RequestOptionBuilder :
11
11
def __init__ (
12
12
self ,
13
- options : Optional [Dict [str , Dict [str , str ]]] = None ,
14
- edge_headers : Optional [Dict [str , str ]] = None ,
13
+ edge_id : Optional [str ] = None ,
14
+ edge_ip_address : Optional [str ] = None ,
15
+ edge_user : Optional [str ] = None ,
15
16
):
16
17
"""
17
- RequestOptionBuilder is a utility class used to format and produce options for Polygon Requests\
18
- :param options: preset options object to be the base of the options dictionary.
19
- :param options: preset options for launchpad edge headers
18
+ RequestOptionBuilder is a utility class to build polygon api options used in requests.
19
+ :param edge_id: is a required Launchpad header. It identifies the Edge User requesting data
20
+ :param edge_ip_address: is a required Launchpad header. It denotes the originating IP Address of the Edge User
21
+ :param edge_user: is an optional Launchpad header. It denotes the originating UserAgent of the Edge User requesting data.
20
22
"""
21
- self .options = {} if options is None else options
22
- self .edge_headers = {} if edge_headers is None else edge_headers
23
+ self .edge_headers : Dict [str , str ] = {}
24
+ self .__handle_edge_header_options (
25
+ edge_id = edge_id , edge_ip_address = edge_ip_address , edge_user = edge_user
26
+ )
27
+
28
+ def __handle_edge_header_options (
29
+ self ,
30
+ edge_id : Optional [str ],
31
+ edge_ip_address : Optional [str ] = None ,
32
+ edge_user : Optional [str ] = None ,
33
+ ):
34
+ edge_headers = {}
35
+ if edge_id is not None :
36
+ edge_headers [X_POLYGON_EDGE_ID ] = edge_id
37
+ if edge_ip_address is not None :
38
+ edge_headers [X_POLYGON_EDGE_IP_ADDRESS ] = edge_ip_address
39
+ if edge_user is not None :
40
+ edge_headers [X_POLYGON_EDGE_USER_AGENT ] = edge_user
41
+ self .__set_edge_headers (edge_headers )
23
42
24
43
def __set_edge_headers (self , headers : Dict [str , str ]):
25
44
self .edge_headers = headers
26
45
27
- def __add_to_options (self , key : str , ** options ):
28
- """
29
- __add_to_options is a utility method used to add dicts and values
30
- to the options' dictionary.
31
- :param key: name of the dict a user is adding values to
32
- :param options: values to be added to specified dict
33
- :return: RequestOptionBuilder
34
- """
35
- if key not in self .options :
36
- self .options [key ] = {}
37
-
38
- for k , v in options .items ():
39
- self .options [key ][k ] = v
40
-
41
- # python 3.8 does not support match case...
42
- if key == HEADER :
43
- self .__set_edge_headers (options [key ])
46
+ def __add_to_edge_headers (self , ** headers ):
47
+ for k , v in headers .items ():
48
+ self .edge_headers [k ] = v
44
49
45
50
def required_edge_headers (
46
51
self ,
@@ -54,14 +59,15 @@ def required_edge_headers(
54
59
requesting data.
55
60
:return: RequestOptionBuilder
56
61
"""
57
- self .__add_to_options (
58
- key = HEADER ,
59
- X_POLYGON_EDGE_ID = edge_id ,
60
- X_POLYGON_EDGE_IP_ADDRESS = edge_ip_address ,
62
+ self .__add_to_edge_headers (
63
+ ** {
64
+ X_POLYGON_EDGE_ID : edge_id ,
65
+ X_POLYGON_EDGE_IP_ADDRESS : edge_ip_address ,
66
+ } # object destructure is needed for correct key formatting.
61
67
)
62
68
return self
63
69
64
- def edge_user_agent_header (
70
+ def optional_edge_headers (
65
71
self ,
66
72
user_agent : str ,
67
73
):
@@ -70,8 +76,9 @@ def edge_user_agent_header(
70
76
:param user_agent: is an optional Launchpad header. It denotes the originating UserAgent of the Edge User requesting data.
71
77
:return: RequestOptionBuilder
72
78
"""
73
- self .__add_to_options (
74
- key = HEADER ,
75
- X_POLYGON_EDGE_USER_AGENT = user_agent ,
79
+ self .__add_to_edge_headers (
80
+ ** {
81
+ X_POLYGON_EDGE_USER_AGENT : user_agent ,
82
+ }
76
83
)
77
84
return self
0 commit comments