66from . import common , __about__
77from .push import Push , ScheduledPush , TemplatePush
88
9- logger = logging .getLogger (' urbanairship' )
9+ logger = logging .getLogger (" urbanairship" )
1010
11- VALID_KEY = re .compile (r' ^[\w-]{22}$' )
12- VALID_LOCATIONS = ['eu' , 'us' , None ]
11+ VALID_KEY = re .compile (r" ^[\w-]{22}$" )
12+ VALID_LOCATIONS = ["eu" , "us" , None ]
1313
1414
1515class Urls (object ):
1616 def __init__ (self , location = None ):
17- if not location or location .lower () == 'us' :
18- self .base_url = ' https://go.urbanairship.com/api/'
19- elif location .lower () == 'eu' :
20- self .base_url = ' https://go.airship.eu/api/'
21-
22- self .channel_url = self .base_url + ' channels/'
23- self .open_channel_url = self .channel_url + ' open/'
24- self .device_token_url = self .base_url + ' device_tokens/'
25- self .apid_url = self .base_url + ' apids/'
26- self .push_url = self .base_url + ' push/'
27- self .schedules_url = self .base_url + ' schedules/'
28- self .tags_url = self .base_url + ' tags/'
29- self .segments_url = self .base_url + ' segments/'
30- self .reports_url = self .base_url + ' reports/'
31- self .lists_url = self .base_url + ' lists/'
32- self .location_url = self .base_url + ' location/'
33-
34- self .templates_url = self .base_url + ' templates/'
35- self .schedule_template_url = self .templates_url + ' schedules/'
36-
37- self .pipelines_url = self .base_url + ' pipelines/'
38-
39- self .named_user_url = self .base_url + ' named_users/'
40- self .named_user_tag_url = self .named_user_url + ' tags/'
41- self .named_user_disassociate_url = self .named_user_url + ' disassociate/'
42- self .named_user_associate_url = self .named_user_url + ' associate/'
43-
44- self .sms_url = self .channel_url + ' sms/'
45- self .sms_opt_out_url = self .sms_url + ' opt-out/'
46- self .sms_uninstall_url = self .sms_url + ' uninstall/'
47-
48- self .email_url = self .channel_url + ' email/'
49- self .email_tags_url = self .email_url + ' tags/'
50- self .email_uninstall_url = self .email_url + ' uninstall/'
51-
52- self .create_and_send_url = self .base_url + ' create-and-send/'
53- self .schedule_create_and_send_url = self .schedules_url + ' create-and-send/'
54-
55- self .experiments_url = self .base_url + ' experiments/'
56- self .experiments_schedule_url = self .experiments_url + ' scheduled/'
57- self .experiments_validate = self .experiments_url + ' validate/'
17+ if not location or location .lower () == "us" :
18+ self .base_url = " https://go.urbanairship.com/api/"
19+ elif location .lower () == "eu" :
20+ self .base_url = " https://go.airship.eu/api/"
21+
22+ self .channel_url = self .base_url + " channels/"
23+ self .open_channel_url = self .channel_url + " open/"
24+ self .device_token_url = self .base_url + " device_tokens/"
25+ self .apid_url = self .base_url + " apids/"
26+ self .push_url = self .base_url + " push/"
27+ self .schedules_url = self .base_url + " schedules/"
28+ self .tags_url = self .base_url + " tags/"
29+ self .segments_url = self .base_url + " segments/"
30+ self .reports_url = self .base_url + " reports/"
31+ self .lists_url = self .base_url + " lists/"
32+ self .location_url = self .base_url + " location/"
33+
34+ self .templates_url = self .base_url + " templates/"
35+ self .schedule_template_url = self .templates_url + " schedules/"
36+
37+ self .pipelines_url = self .base_url + " pipelines/"
38+
39+ self .named_user_url = self .base_url + " named_users/"
40+ self .named_user_tag_url = self .named_user_url + " tags/"
41+ self .named_user_disassociate_url = self .named_user_url + " disassociate/"
42+ self .named_user_associate_url = self .named_user_url + " associate/"
43+
44+ self .sms_url = self .channel_url + " sms/"
45+ self .sms_opt_out_url = self .sms_url + " opt-out/"
46+ self .sms_uninstall_url = self .sms_url + " uninstall/"
47+
48+ self .email_url = self .channel_url + " email/"
49+ self .email_tags_url = self .email_url + " tags/"
50+ self .email_uninstall_url = self .email_url + " uninstall/"
51+
52+ self .create_and_send_url = self .base_url + " create-and-send/"
53+ self .schedule_create_and_send_url = self .schedules_url + " create-and-send/"
54+
55+ self .experiments_url = self .base_url + " experiments/"
56+ self .experiments_schedule_url = self .experiments_url + " scheduled/"
57+ self .experiments_validate = self .experiments_url + " validate/"
5858
5959 def get (self , endpoint ):
6060 url = getattr (self , endpoint , None )
6161
6262 if not url :
63- raise AttributeError (' No url for endpoint %s' % endpoint )
63+ raise AttributeError (" No url for endpoint %s" % endpoint )
6464
6565 return url
6666
6767
6868class Airship (object ):
69-
7069 def __init__ (self , key , secret , location = None , timeout = None ):
7170 self .key = key
7271 self .secret = secret
@@ -84,7 +83,7 @@ def timeout(self):
8483 @timeout .setter
8584 def timeout (self , value ):
8685 if not isinstance (value , int ) and value is not None :
87- raise ValueError (' Timeout must be an integer' )
86+ raise ValueError (" Timeout must be an integer" )
8887 self ._timeout = value
8988
9089 @property
@@ -94,7 +93,7 @@ def key(self):
9493 @key .setter
9594 def key (self , value ):
9695 if not VALID_KEY .match (value ):
97- raise ValueError (' keys must be 22 characters' )
96+ raise ValueError (" keys must be 22 characters" )
9897 self ._key = value
9998
10099 @property
@@ -104,7 +103,7 @@ def location(self):
104103 @location .setter
105104 def location (self , value ):
106105 if value not in VALID_LOCATIONS :
107- raise ValueError (' location must be one of {}' .format (VALID_LOCATIONS ))
106+ raise ValueError (" location must be one of {}" .format (VALID_LOCATIONS ))
108107 self ._location = value
109108
110109 @property
@@ -114,49 +113,54 @@ def secret(self):
114113 @secret .setter
115114 def secret (self , value ):
116115 if not VALID_KEY .match (value ):
117- raise ValueError (' secrets must be 22 characters' )
116+ raise ValueError (" secrets must be 22 characters" )
118117 self ._secret = value
119118
120- def request (self , method , body , url ,
121- content_type = None , version = None , params = None ):
122- return self ._request (method , body , url ,
123- content_type , version , params )
124-
125- def _request (self , method , body , url , content_type = None ,
126- version = None , params = None , encoding = None ):
127-
128- headers = \
129- {'User-agent' : 'UAPythonLib/{0}' .format (__about__ .__version__ )}
119+ def request (self , method , body , url , content_type = None , version = None , params = None ):
120+ return self ._request (method , body , url , content_type , version , params )
121+
122+ def _request (
123+ self ,
124+ method ,
125+ body ,
126+ url ,
127+ content_type = None ,
128+ version = None ,
129+ params = None ,
130+ encoding = None ,
131+ ):
132+
133+ headers = {
134+ "User-agent" : "UAPythonLib/{0} {1}" .format (__about__ .__version__ , self .key ),
135+ }
130136 if content_type :
131- headers [' Content-type' ] = content_type
137+ headers [" Content-type" ] = content_type
132138 if version :
133- headers ['Accept' ] = ('application/vnd.urbanairship+json; '
134- 'version=%d;' % version )
139+ headers ["Accept" ] = (
140+ "application/vnd.urbanairship+json; " "version=%d;" % version
141+ )
135142 if encoding :
136- headers [' Content-Encoding' ] = encoding
143+ headers [" Content-Encoding" ] = encoding
137144
138145 logger .debug (
139- ' Making %s request to %s. Headers:\n \t %s\n Body:\n \t %s' ,
146+ " Making %s request to %s. Headers:\n \t %s\n Body:\n \t %s" ,
140147 method ,
141148 url ,
142- '\n \t ' .join (
143- '%s: %s' % (key , value ) for (key , value ) in headers .items ()
144- ),
145- body
149+ "\n \t " .join ("%s: %s" % (key , value ) for (key , value ) in headers .items ()),
150+ body ,
146151 )
147152
148153 response = self .session .request (
149- method , url , data = body , params = params ,
150- headers = headers , timeout = self . timeout )
154+ method , url , data = body , params = params , headers = headers , timeout = self . timeout
155+ )
151156
152157 logger .debug (
153- ' Received %s response. Headers:\n \t %s\n Body:\n \t %s' ,
158+ " Received %s response. Headers:\n \t %s\n Body:\n \t %s" ,
154159 response .status_code ,
155- '\n \t ' .join (
156- '%s: %s' % (key , value ) for (key , value )
157- in response .headers .items ()
160+ "\n \t " .join (
161+ "%s: %s" % (key , value ) for (key , value ) in response .headers .items ()
158162 ),
159- response .content
163+ response .content ,
160164 )
161165
162166 if response .status_code == 401 :
0 commit comments