11"""RestSession class for creating 'connections' to the Cisco Spark APIs."""
22
3-
43import 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 )
414
5+ import requests
426
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
4510
4611
4712class 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 ):
4914 super (RestSession , self ).__init__ ()
50- self ._base_url = _validate_base_url (base_url )
15+ self ._base_url = validate_base_url (base_url )
5116 self ._access_token = access_token
5217 self ._req_session = requests .session ()
5318 self ._timeout = None
@@ -91,13 +56,13 @@ def get(self, url, params=None, **kwargs):
9156 # Process kwargs
9257 timeout = kwargs .pop ('timeout' , self .timeout )
9358 erc = kwargs .pop ('erc' , ERC ['GET' ])
94- _raise_if_extra_kwargs (kwargs )
59+ raise_if_extra_kwargs (kwargs )
9560 # API request
9661 response = self ._req_session .get (abs_url , params = params ,
9762 timeout = timeout )
9863 # 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 )
10166
10267 def get_pages (self , url , params = None , ** kwargs ):
10368 # Process args
@@ -107,14 +72,14 @@ def get_pages(self, url, params=None, **kwargs):
10772 # Process kwargs
10873 timeout = kwargs .pop ('timeout' , self .timeout )
10974 erc = kwargs .pop ('erc' , ERC ['GET' ])
110- _raise_if_extra_kwargs (kwargs )
75+ raise_if_extra_kwargs (kwargs )
11176 # API request - get first page
11277 response = self ._req_session .get (abs_url , params = params ,
11378 timeout = timeout )
11479 while True :
11580 # 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 )
11883 # Get next page
11984 if response .links .get ('next' ):
12085 next_url = response .links .get ('next' ).get ('url' )
@@ -148,12 +113,12 @@ def post(self, url, json, **kwargs):
148113 # Process kwargs
149114 timeout = kwargs .pop ('timeout' , self .timeout )
150115 erc = kwargs .pop ('erc' , ERC ['POST' ])
151- _raise_if_extra_kwargs (kwargs )
116+ raise_if_extra_kwargs (kwargs )
152117 # API request
153118 response = self ._req_session .post (abs_url , json = json , timeout = timeout )
154119 # 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 )
157122
158123 def put (self , url , json , ** kwargs ):
159124 # Process args
@@ -163,12 +128,12 @@ def put(self, url, json, **kwargs):
163128 # Process kwargs
164129 timeout = kwargs .pop ('timeout' , self .timeout )
165130 erc = kwargs .pop ('erc' , ERC ['PUT' ])
166- _raise_if_extra_kwargs (kwargs )
131+ raise_if_extra_kwargs (kwargs )
167132 # API request
168133 response = self ._req_session .put (abs_url , json = json , timeout = timeout )
169134 # 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 )
172137
173138 def delete (self , url , ** kwargs ):
174139 # Process args
@@ -177,8 +142,8 @@ def delete(self, url, **kwargs):
177142 # Process kwargs
178143 timeout = kwargs .pop ('timeout' , self .timeout )
179144 erc = kwargs .pop ('erc' , ERC ['DELETE' ])
180- _raise_if_extra_kwargs (kwargs )
145+ raise_if_extra_kwargs (kwargs )
181146 # API request
182147 response = self ._req_session .delete (abs_url , timeout = timeout )
183148 # Process response
184- _check_response_code (response , erc )
149+ check_response_code (response , erc )
0 commit comments