Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
03b5443
Remove useless file;
hupantingxue Dec 1, 2014
0cdb00d
Merge branch 'dev'
hupantingxue Dec 2, 2014
6757212
init jmessage package
May 7, 2015
5786ee8
build httpclient for jmessage based on pycurl
May 7, 2015
15e78f8
add exceptions for jmessage httpclient
May 7, 2015
b8f287a
add utils for jmessage httpclient
May 7, 2015
7d168cc
make httplib become a package
May 7, 2015
0dc798e
add core handle package for jmessage
May 7, 2015
9351d91
add url templates for jmessage
May 7, 2015
d8ea56c
abstract operation to base.py
May 7, 2015
182b842
add user relative api for jmessage
May 7, 2015
af90f45
add exceptions for jmessage
May 7, 2015
95daaae
add group relative api for jmessage
May 7, 2015
5b619d9
add friends relative api
May 7, 2015
ebb9d0f
add message relative api
May 7, 2015
93b1844
add requirements.txt
May 7, 2015
309e06d
add unit test package for jmessage
May 7, 2015
4c74085
add test config for jmessage
May 7, 2015
8178112
add base test class for jmessage
May 7, 2015
31ba960
add user management tests for jmessage
May 7, 2015
d06f28b
add group management tests for jmessage
May 7, 2015
e94206b
add config for jmessage examples
May 7, 2015
63f1927
add user management examples for jmessage
May 7, 2015
aa4dcee
add group management examples for jmessage
May 7, 2015
9e7a2f0
update setup.py for jmessage
May 7, 2015
72e41de
update README.rst for jmessage
May 7, 2015
4d5cacb
fix pep8 coding style of common.py
May 7, 2015
19e042c
fix pep8 coding style of core.py
May 7, 2015
1e25d12
update logging level of jmessage
May 7, 2015
c4d9223
single line should less than 79 characters
May 7, 2015
fad883b
fix pep8 coding style of device
May 7, 2015
77fca8c
fix pep8 coding style of push
May 7, 2015
7190f46
fix pep8 coding style of device examples
May 7, 2015
a5c0aaf
fix pep8 coding style of push examples
May 7, 2015
0a9f303
fix pep8 coding style of jpush tests
May 7, 2015
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 36 additions & 3 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ You can download the latest release file here: `Releases <https://github.com/jpu
------------
Dependencies
------------
You need to install requests, the python http library, to use jpush python client.
You need to install requests and pycurl, the python http library, to use jpush python client, and nose for test.

.. code-block:: sh

$ sudo pip install requests
$ sudo pip install -r requirements.txt

------------
Installation
Expand Down Expand Up @@ -59,7 +59,7 @@ To run jpush-api-python-client tests, simply:

.. code-block:: sh

$ nosetests tests/push tests/devices --verbosity=2
$ nosetests tests/push tests/devices tests/jmessage --verbosity=2

--------
Examples
Expand Down Expand Up @@ -88,6 +88,39 @@ Get taglist
>>> device = _jpush.create_device()
>>> device.get_taglist()


JMessage Users Management
-----------------
>>> from jmessage import JMessageSDK
>>> import conf
>>> sdk = JMessageSDK(conf.APPKEY, conf.MASTERSECRET)
>>> sdk.users.register_users('user', [{'username': 'example', 'password': 123456}])
[{u'username': u'example'}]
>>> sdk.users.del_user('example')
True


JMessage Groups Management
-----------------
>>> from jmessage import JMessageSDK
>>> import conf
>>> sdk = JMessageSDK(conf.APPKEY, conf.MASTERSECRET)
>>> sdk.groups.create_group(
... 'example_group_owner@py',
... 'PyCon',
... members_username=['example_user_01@py', 'example_user_02@py'],
... group_desc="Conf for Pythonista!")
{
u'gid': 10003868,
u'members_username': [u'example_user_01@py', u'example_user_02@py'],
u'group_desc': u'Conf for Pythonista!',
u'owner_username': u'example_group_owner@py',
u'group_name': u'PyCon'
}
>>> sdk.groups.del_group(10003868)
True


--------
Questions
--------
Expand Down
2 changes: 1 addition & 1 deletion examples/device/example_rmtag.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#-*- encoding:utf-8 -*-
# -*- encoding:utf-8 -*-

import jpush as jpush
from conf import app_key, master_secret
Expand Down
2 changes: 1 addition & 1 deletion examples/device/example_updevice.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
device = _jpush.create_device()
reg_id = '090c1f59f89'
entity = jpush.device_tag(jpush.add("ddd", "tageee"))
#entity = jpush.device_tag("")
# entity = jpush.device_tag("")
device.set_deviceinfo(reg_id, entity)
2 changes: 2 additions & 0 deletions examples/jmessage/conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
APPKEY = '242780bfdd7315dc1989fe2b'
MASTERSECRET = '2f5ced2bef64167950e63d13'
141 changes: 141 additions & 0 deletions examples/jmessage/example_groups.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
#!/usr/bin/env python
# coding: utf8
from jmessage import JMessageSDK
import conf

sdk = JMessage(conf.APPKEY, conf.MASTERSECRET)


def create_group():
"""创建群组

resp example:
{
"gid":12345,
"owner_username": 'example_group_owner@py',
"group_name": "PyCon",
"members_username": ['example_user_01@py', 'example_user_02@py'],
"group_desc":"Conf for Pythonista!",
"level" = 3,
"mtime" = "2014-07-01 00:00:00",
"ctime"="2014-06-05 00:00:00"
}
"""

resp = sdk.groups.create_group(
'example_group_owner@py', # 群组创始人
'PyCon', # 群组名称
# 初始成员列表
members_username=['example_user_01@py', 'example_user_02@py'],
group_desc="Conf for Pythonista!" # 群组简介
)

group_id = resp['gid'] # 你成功创建的群组ID
return group_id


def get_group_info(group_id):
"""获取群组详情

resp: resp的格式同上
"""
resp = sdk.groups.get_group_info(group_id)
return resp


def update_group_info(group_id, group_name=None, group_desc=None):
"""更新群组信息

params: group_name和group_desc二者至少要设置一个
resp: 更新成功返回`True`, 否则返回`False`
"""

resp = sdk.groups.update_group_info(
group_id,
group_name=group_name,
group_desc=group_desc
)

return resp


def del_group(group_id):
"""删除群组

resp: 删除成功返回`True`, 否则返回`False`
"""
resp = sdk.groups.del_group(group_id)

return resp


def get_user_groups(username):
"""获取某用户所在群组列表

resp: resp为一个list,包含该用户所在的群组ID
"""
resp = sdk.groups.get_user_groups(username)

return resp


def update_group_members(group_id, add_list=None, remove_list=None):
"""管理群组成员
add_list: 需要增加的用户名列表
remove_list: 需要删除的用户名列表

resp: 更新成功返回`True`, 否则返回`False`
"""
op_dict = {}

if add_list is not None:
op_dict.update({'add': add_list})

if remove_list is not None:
op_dict.update({'remove': remove_list})

resp = sdk.groups.update_group_members(group_id, op_dict)

return resp


def get_group_members(group_id):
"""获取群组成员

resp example:
[
{
"username": "asdf",
"flag": 0,
"ctime": "2010-10-01 10:10:10"
},
{
"username": "test",
"flag": 1,
"ctime": "2010-10-01 10:10:10"
}
]

flag: 1表示群主,0表示普通成员
"""

resp = sdk.groups.get_group_members(group_id)

return resp


def get_app_groups(start=0, count=100):
"""获取应用下的群组

resp example:
{
"total":1233,
"start":1100,
"count":100,
"groups": [10000000, 1000000001, ...]
}
"""

resp = sdk.groups.get_app_groups(start=start, count=count)

return resp
126 changes: 126 additions & 0 deletions examples/jmessage/example_users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
#!/usr/bin/env python
# coding: utf8

from jmessage import JMessageSDK
import conf

sdk = JMessage(conf.APPKEY, conf.MASTERSECRET)


def register_users(user_type, users_list):
"""注册用户

注册普通用户时user_type为`user`,注册管理员时user_type为`admin`
users_list为包含用户信息的列表,例如:
[
{"username": "dev_fang", "password": "password"},
{"username": "dev_fang", "password": "password"}
]

resp为一个列表,列表里面为一个字典,包含`username`,
注册失败的用户包含error信息,例如:
[
{
"username": "dev_fang"
},
{
"username": "dev_javen",
"error": {
"code": 8001,
"message": "The user already exist!"
}
}
]
"""
resp = sdk.users.register_users(user_type, users_list)

register_success = []
register_failed = []

for user in resp:
username = user['username']

if 'error' in user:
register_failed.append(username)
else:
register_success.append(username)

# 返回注册成功和注册失败的`username`
return register_success, register_failed


def get_user_info(username):
"""获取用户信息

user_info example:
{
"username" : "javen",
"nickname" : "hello",
"avatar" = "/avatar",
"birthday" : "1990-01-24 00:00:00",
"gender" : 0,
"signature" : "orz",
"region" : "shenzhen",
"address" : "shenzhen",
"mtime" : "2015-01-01 00:00:00",
"ctime" : "2015-01-01 00:00:00"
}
"""

user_info = sdk.users.get_user_info(username)
return user_info


def update_user_password(username, new_password):
"""修改密码

resp: 更改密码成功时返回`True`,否则返回`False`
"""

resp = sdk.users.update_user_password('test_password@py')
return resp


def update_user_info(username, nickname=None,
birthday=None, signature=None,
gender=None, region=None,
address=None, avatar=None):
"""更新用户信息

resp: 更改用户信息成功时返回`True`,否则返回`False
"""

resp = sdk.users.update_user_info(
username,
nickname=None,
birthday=None,
signature=None,
gender=None,
region=None,
address=None,
avatar=None
)

return resp


def get_users_list(start=0, count=1):
"""获取应用用户列表

resp: 返回一个包含应用用户名的列表
"""

resp = sdk.users.get_users_list(start=start, count=count)

return resp


def del_user(username):
"""删除用户

resp: 删除用户成功时返回`True`,否则返回`False
"""

resp = sdk.users.del_user(username)

return resp
6 changes: 5 additions & 1 deletion examples/push/example_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,9 @@
push.audience = jpush.all_
push.notification = jpush.notification(alert="Hello, world!")
push.platform = jpush.all_
push.options = {"time_to_live":86400, "sendno":12345,"apns_production":True}
push.options = {
"time_to_live": 86400,
"sendno": 12345,
"apns_production": True
}
push.send()
13 changes: 11 additions & 2 deletions examples/push/example_platformmsg.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@

push = _jpush.create_push()
push.audience = jpush.all_
ios_msg = jpush.ios(alert="Hello, IOS JPush!", badge="+1", sound="a.caf", extras={'k1':'v1'})
ios_msg = jpush.ios(
alert="Hello, IOS JPush!",
badge="+1",
sound="a.caf",
extras={'k1': 'v1'}
)
android_msg = jpush.android(alert="Hello, android msg")
push.notification = jpush.notification(alert="Hello, JPush!", android=android_msg, ios=ios_msg)
push.notification = jpush.notification(
alert="Hello, JPush!",
android=android_msg,
ios=ios_msg
)
push.platform = jpush.all_
push.send()
13 changes: 11 additions & 2 deletions examples/push/example_silent.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@

push = _jpush.create_push()
push.audience = jpush.all_
ios_msg = jpush.ios(alert="Hello, IOS JPush!", badge="+1", extras={'k1':'v1'}, sound_disable=True)
ios_msg = jpush.ios(
alert="Hello, IOS JPush!",
badge="+1",
extras={'k1': 'v1'},
sound_disable=True
)
android_msg = jpush.android(alert="Hello, android msg")
push.notification = jpush.notification(alert="Hello, JPush!", android=android_msg, ios=ios_msg)
push.notification = jpush.notification(
alert="Hello, JPush!",
android=android_msg,
ios=ios_msg
)
push.platform = jpush.all_
push.send()
Loading