forked from jpush/jpush-api-python-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcore.py
More file actions
91 lines (75 loc) · 3.32 KB
/
Copy pathcore.py
File metadata and controls
91 lines (75 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import json
import logging
import warnings
import requests
from . import common
from .push import Push
from .device import Device
from .report import Report
from .schedule import Schedule
logger = logging.getLogger('jpush')
class JPush(object):
def __init__(self, key, secret):
self.key = key
self.secret = secret
self.session = requests.Session()
self.session.auth = (key, secret)
def _request(self, method, body, url, content_type=None, version=None, params=None):
headers = {}
headers['user-agent'] = 'jpush-api-python-client'
headers['connection'] = 'keep-alive'
headers['content-type'] = 'application/json;charset:utf-8'
logger.debug("Making %s request to %s. Headers:\n\t%s\nBody:\n\t%s",
method, url, '\n\t'.join('%s: %s' % (key, value) for (key, value) in headers.items()), body)
try:
response = self.session.request(method, url, data=body, params=params, headers=headers, timeout=30)
except requests.exceptions.ConnectTimeout:
raise common.APIConnectionException("Connection to api.jpush.cn timed out.")
except:
raise common.APIConnectionException("Connection to api.jpush.cn error.")
logger.debug("Received %s response. Headers:\n\t%s\nBody:\n\t%s", response.status_code, '\n\t'.join(
'%s: %s' % (key, value) for (key, value) in response.headers.items()), response.content)
if response.status_code == 401:
raise common.Unauthorized("Please check your AppKey and Master Secret")
elif not (200 <= response.status_code < 300):
raise common.JPushFailure.from_response(response)
return response
def push(self, payload):
"""Push this payload to the specified recipients.
Payload: a dictionary the contents to send, e.g.:
{'aps': {'alert': 'Hello'}, 'android': {'alert': 'Hello'}}
"""
warnings.warn(
"JPush.push() is deprecated. See documentation on upgrading.",
DeprecationWarning)
body = json.dumps(payload)
self._request('POST', body, common.PUSH_URL, 'application/json', version=1)
def set_logging(self, level):
level_list= ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG", "NOTSET"]
if level in level_list:
if(level == "CRITICAL"):
logging.basicConfig(level=logging.CRITICAL)
if (level == "ERROR"):
logging.basicConfig(level=logging.ERROR)
if (level == "WARNING"):
logging.basicConfig(level=logging.WARNING)
if (level == "INFO"):
logging.basicConfig(level=logging.INFO)
if (level == "DEBUG"):
logging.basicConfig(level=logging.DEBUG)
if (level == "NOTSET"):
logging.basicConfig(level=logging.NOTSET)
else:
print ("set logging level failed ,the level is invalid.")
def create_push(self):
"""Create a Push notification."""
return Push(self)
def create_device(self):
"""Create a Device information."""
return Device(self)
def create_report(self):
"""Create a Report."""
return Report(self)
def create_schedule(self):
"""Create a Schedule."""
return Schedule(self)