1
1
"""RestSession class for creating 'connections' to the Cisco Spark APIs."""
2
2
3
-
4
3
import urlparse
5
- import requests
6
- from .exceptions import ciscosparkapiException , SparkApiError
7
-
8
-
9
- # Default api.ciscospark.com base URL
10
- DEFAULT_API_URL = 'https://api.ciscospark.com/v1/'
11
-
12
- # Cisco Spark cloud Expected Response Codes (HTTP Response Codes)
13
- ERC = {
14
- 'GET' : 200 ,
15
- 'POST' : 200 ,
16
- 'PUT' : 200 ,
17
- 'DELETE' : 204
18
- }
19
-
20
-
21
- def _validate_base_url (base_url ):
22
- parsed_url = urlparse .urlparse (base_url )
23
- if parsed_url .scheme and parsed_url .netloc :
24
- return parsed_url .geturl ()
25
- else :
26
- error_message = "base_url must contain a valid scheme (protocol " \
27
- "specifier) and network location (hostname)"
28
- raise ciscosparkapiException (error_message )
29
-
30
-
31
- def _raise_if_extra_kwargs (kwargs ):
32
- if kwargs :
33
- raise TypeError ("Unexpected **kwargs: %r" % kwargs )
34
-
35
-
36
- def _check_response_code (response , erc ):
37
- if response .status_code != erc :
38
- raise SparkApiError (response .status_code ,
39
- request = response .request ,
40
- response = response )
41
4
5
+ import requests
42
6
43
- def _extract_and_parse_json (response ):
44
- return response .json ()
7
+ from .exceptions import ciscosparkapiException
8
+ from .helper import ERC , validate_base_url , \
9
+ raise_if_extra_kwargs , check_response_code , extract_and_parse_json
45
10
46
11
47
12
class RestSession (object ):
48
- def __init__ (self , access_token , base_url = DEFAULT_API_URL , timeout = None ):
13
+ def __init__ (self , access_token , base_url , timeout = None ):
49
14
super (RestSession , self ).__init__ ()
50
- self ._base_url = _validate_base_url (base_url )
15
+ self ._base_url = validate_base_url (base_url )
51
16
self ._access_token = access_token
52
17
self ._req_session = requests .session ()
53
18
self ._timeout = None
@@ -91,13 +56,13 @@ def get(self, url, params=None, **kwargs):
91
56
# Process kwargs
92
57
timeout = kwargs .pop ('timeout' , self .timeout )
93
58
erc = kwargs .pop ('erc' , ERC ['GET' ])
94
- _raise_if_extra_kwargs (kwargs )
59
+ raise_if_extra_kwargs (kwargs )
95
60
# API request
96
61
response = self ._req_session .get (abs_url , params = params ,
97
62
timeout = timeout )
98
63
# Process response
99
- _check_response_code (response , erc )
100
- return _extract_and_parse_json (response )
64
+ check_response_code (response , erc )
65
+ return extract_and_parse_json (response )
101
66
102
67
def get_pages (self , url , params = None , ** kwargs ):
103
68
# Process args
@@ -107,14 +72,14 @@ def get_pages(self, url, params=None, **kwargs):
107
72
# Process kwargs
108
73
timeout = kwargs .pop ('timeout' , self .timeout )
109
74
erc = kwargs .pop ('erc' , ERC ['GET' ])
110
- _raise_if_extra_kwargs (kwargs )
75
+ raise_if_extra_kwargs (kwargs )
111
76
# API request - get first page
112
77
response = self ._req_session .get (abs_url , params = params ,
113
78
timeout = timeout )
114
79
while True :
115
80
# Process response - Yield page's JSON data
116
- _check_response_code (response , erc )
117
- yield _extract_and_parse_json (response )
81
+ check_response_code (response , erc )
82
+ yield extract_and_parse_json (response )
118
83
# Get next page
119
84
if response .links .get ('next' ):
120
85
next_url = response .links .get ('next' ).get ('url' )
@@ -148,12 +113,12 @@ def post(self, url, json, **kwargs):
148
113
# Process kwargs
149
114
timeout = kwargs .pop ('timeout' , self .timeout )
150
115
erc = kwargs .pop ('erc' , ERC ['POST' ])
151
- _raise_if_extra_kwargs (kwargs )
116
+ raise_if_extra_kwargs (kwargs )
152
117
# API request
153
118
response = self ._req_session .post (abs_url , json = json , timeout = timeout )
154
119
# Process response
155
- _check_response_code (response , erc )
156
- return _extract_and_parse_json (response )
120
+ check_response_code (response , erc )
121
+ return extract_and_parse_json (response )
157
122
158
123
def put (self , url , json , ** kwargs ):
159
124
# Process args
@@ -163,12 +128,12 @@ def put(self, url, json, **kwargs):
163
128
# Process kwargs
164
129
timeout = kwargs .pop ('timeout' , self .timeout )
165
130
erc = kwargs .pop ('erc' , ERC ['PUT' ])
166
- _raise_if_extra_kwargs (kwargs )
131
+ raise_if_extra_kwargs (kwargs )
167
132
# API request
168
133
response = self ._req_session .put (abs_url , json = json , timeout = timeout )
169
134
# Process response
170
- _check_response_code (response , erc )
171
- return _extract_and_parse_json (response )
135
+ check_response_code (response , erc )
136
+ return extract_and_parse_json (response )
172
137
173
138
def delete (self , url , ** kwargs ):
174
139
# Process args
@@ -177,8 +142,8 @@ def delete(self, url, **kwargs):
177
142
# Process kwargs
178
143
timeout = kwargs .pop ('timeout' , self .timeout )
179
144
erc = kwargs .pop ('erc' , ERC ['DELETE' ])
180
- _raise_if_extra_kwargs (kwargs )
145
+ raise_if_extra_kwargs (kwargs )
181
146
# API request
182
147
response = self ._req_session .delete (abs_url , timeout = timeout )
183
148
# Process response
184
- _check_response_code (response , erc )
149
+ check_response_code (response , erc )
0 commit comments