6
6
from . import common , __about__
7
7
from .push import Push , ScheduledPush , TemplatePush
8
8
9
- logger = logging .getLogger (' urbanairship' )
9
+ logger = logging .getLogger (" urbanairship" )
10
10
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 ]
13
13
14
14
15
15
class Urls (object ):
16
16
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/"
58
58
59
59
def get (self , endpoint ):
60
60
url = getattr (self , endpoint , None )
61
61
62
62
if not url :
63
- raise AttributeError (' No url for endpoint %s' % endpoint )
63
+ raise AttributeError (" No url for endpoint %s" % endpoint )
64
64
65
65
return url
66
66
67
67
68
68
class Airship (object ):
69
-
70
69
def __init__ (self , key , secret , location = None , timeout = None ):
71
70
self .key = key
72
71
self .secret = secret
@@ -84,7 +83,7 @@ def timeout(self):
84
83
@timeout .setter
85
84
def timeout (self , value ):
86
85
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" )
88
87
self ._timeout = value
89
88
90
89
@property
@@ -94,7 +93,7 @@ def key(self):
94
93
@key .setter
95
94
def key (self , value ):
96
95
if not VALID_KEY .match (value ):
97
- raise ValueError (' keys must be 22 characters' )
96
+ raise ValueError (" keys must be 22 characters" )
98
97
self ._key = value
99
98
100
99
@property
@@ -104,7 +103,7 @@ def location(self):
104
103
@location .setter
105
104
def location (self , value ):
106
105
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 ))
108
107
self ._location = value
109
108
110
109
@property
@@ -114,49 +113,54 @@ def secret(self):
114
113
@secret .setter
115
114
def secret (self , value ):
116
115
if not VALID_KEY .match (value ):
117
- raise ValueError (' secrets must be 22 characters' )
116
+ raise ValueError (" secrets must be 22 characters" )
118
117
self ._secret = value
119
118
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
+ }
130
136
if content_type :
131
- headers [' Content-type' ] = content_type
137
+ headers [" Content-type" ] = content_type
132
138
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
+ )
135
142
if encoding :
136
- headers [' Content-Encoding' ] = encoding
143
+ headers [" Content-Encoding" ] = encoding
137
144
138
145
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" ,
140
147
method ,
141
148
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 ,
146
151
)
147
152
148
153
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
+ )
151
156
152
157
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" ,
154
159
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 ()
158
162
),
159
- response .content
163
+ response .content ,
160
164
)
161
165
162
166
if response .status_code == 401 :
0 commit comments