jpush 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,31 @@
1
+ path= File.expand_path('../', __FILE__)
2
+ require File.join(path, 'http_client.rb')
3
+ require File.join(path, 'model/push_result.rb')
4
+ require 'json'
5
+
6
+ =begin
7
+ Entrance for sending Push.
8
+ timeToLive If not present, the default is 86400(s) (one day).
9
+ =end
10
+ module JPush
11
+ class PushClient
12
+ @@PUSH_API_URL = 'https://api.jpush.cn/v3/push'
13
+ @@_timeToLive = 60 * 60 * 24
14
+ def initialize(maxRetryTimes)
15
+ @httpclient = JPush::NativeHttpClient.new(maxRetryTimes)
16
+ end
17
+
18
+ =begin
19
+ @param payload is the instance of PushPayload
20
+ @autoCode
21
+ =end
22
+ def sendPush(payload,autoCode)
23
+ json_data = JSON.generate(payload.toJSON)
24
+ result = JPush::PushResult.new
25
+ wrapper = @httpclient.sendPost(@@PUSH_API_URL, json_data, autoCode)
26
+ result.fromResponse(wrapper)
27
+ return result
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,45 @@
1
+ path = File.expand_path('../', __FILE__)
2
+ require File.join(path, 'http_client.rb')
3
+ require File.join(path, 'push_client.rb')
4
+ require 'json'
5
+
6
+ module JPush
7
+ class ReportClient
8
+ @@REPORT_HOST_NAME = 'https://report.jpush.cn'
9
+ @@REPORT_RECEIVE_PATH = '/v3/received'
10
+ @@REPORT_USER_PATH = '/v3/users'
11
+ @@REPORT_MESSAGE_PATH = '/v3/messages'
12
+ def initialize(maxRetryTimes)
13
+ @httpclient=JPush::NativeHttpClient.new(maxRetryTimes)
14
+ end
15
+
16
+
17
+ def getReceiveds(msg_ids, authcode)
18
+ msg_ids = checkMsgids(msg_ids)
19
+ @url = @@REPORT_HOST_NAME + @@REPORT_RECEIVE_PATH + '?msg_ids=' + msg_ids
20
+ result = JPush::ReceivedsResult.new
21
+ wrapper = @httpclient.sendGet(@url, nil, authcode)
22
+ return result.fromResponse(wrapper)
23
+ end
24
+
25
+ def getMessages(msg_ids, authcode)
26
+ msg_ids = checkMsgids(msg_ids)
27
+ @url = @@REPORT_HOST_NAME + @@REPORT_MESSAGE_PATH + '?msg_ids=' + msg_ids
28
+ return @httpclient.sendGet(@url, nil, authcode)
29
+ end
30
+
31
+ def getUsers(timeUnit, start, duration, authcode)
32
+ @url = @@REPORT_HOST_NAME + @@REPORT_USER_PATH + '?time_unit=' + timeUnit + '&start=' + start + '&duration=' + duration.to_s
33
+ return @httpclient.sendGet(@url, nil, authcode)
34
+ end
35
+
36
+ def checkMsgids(msg_ids)
37
+ if msg_ids.empty?
38
+ raise ArgumentError.new('msgIds param is required')
39
+ end
40
+ msg_ids = msg_ids.split.join('').to_s
41
+ return msg_ids
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,36 @@
1
+ module JPush
2
+ class ResponseWrapper
3
+ attr_accessor :rateLimitQuota, :rateLimitRemaining, :rateLimitReset, :code, :error, :responseContent
4
+ def initialize()
5
+
6
+ @logger = Logger.new(STDOUT)
7
+ end
8
+ def setRateLimit(quota, remaining, reset)
9
+ if quota.class != Fixnum
10
+ raise ArgumentError.new('quota is not FIXnum')
11
+ end
12
+ if remaining.class != Fixnum
13
+ raise ArgumentError.new('remaining is not FIXnum')
14
+ end
15
+ if reset.class != Fixnum
16
+ raise ArgumentError.new('reset is not FIXnum')
17
+ end
18
+ @quota = quota
19
+ @remaining = remaining
20
+ @reset = reset
21
+ @logger.debug("JPush API Rate Limiting params - quota:" + quota.to_s + ", remaining:" + remaining.to_s + ", reset:" + reset.to_s)
22
+ end
23
+
24
+ def setResponseContent(content)
25
+ @responseContent = content
26
+ end
27
+
28
+ def getResponseContent
29
+ return @responseContent
30
+ end
31
+
32
+ def setErrorObject
33
+ @error = JSON.parse @responseContent
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,10 @@
1
+ require 'base64'
2
+ class ServiceHelper
3
+ @@BASIC_PREFIX = 'Basic'
4
+
5
+ def self.getAuthorizationBase64(appKey, masterSecret)
6
+ encodeKey = appKey + ":" + masterSecret
7
+ return @@BASIC_PREFIX + " " + Base64.strict_encode64(encodeKey)
8
+
9
+ end
10
+ end
@@ -0,0 +1,62 @@
1
+ require 'jpush'
2
+ require './base_remote_tests.rb';
3
+ require 'test/unit'
4
+
5
+ class AlertOverrideTests < Test::Unit::TestCase
6
+ def setup
7
+ @client = JPush::JPushClient.new(AppKey, MasterSecret)
8
+ end
9
+
10
+ def testsendAlert_all
11
+ @payload = JPush::PushPayload.build(
12
+ audience: JPush::Audience.all,
13
+ platform: JPush::Platform.all,
14
+ notification: JPush::Notification.build(
15
+ alert: 'alert',
16
+ ios: JPush::IOSNotification.build(
17
+ alert: 'ios alert'),
18
+ android: JPush::AndroidNotification.build(
19
+ alert: 'android alert'),
20
+ winphone: JPush::WinphoneNotification.build(
21
+ alert: 'winphone alert')))
22
+ res = @client.sendPush(@payload)
23
+ assert(res.isok, message = "response error")
24
+ end
25
+
26
+ def testsendAlert_android
27
+ @payload = JPush::PushPayload.build(
28
+ audience: JPush::Audience.all,
29
+ platform: JPush::Platform.all,
30
+ notification: JPush::Notification.build(
31
+ alert: 'alert',
32
+ android: JPush::AndroidNotification.build(
33
+ alert: 'android alert')))
34
+ res = @client.sendPush(@payload)
35
+ assert(res.isok, message = "response error")
36
+ end
37
+
38
+ def testsendAlert_ios
39
+ @payload = JPush::PushPayload.build(
40
+ audience: JPush::Audience.all,
41
+ platform: JPush::Platform.all,
42
+ notification: JPush::Notification.build(
43
+ alert: 'alert',
44
+ ios: JPush::IOSNotification.build(
45
+ alert: 'ios alert')))
46
+ res = @client.sendPush(@payload)
47
+ assert(res.isok, message = "response error")
48
+ end
49
+
50
+ def testsendAlert_wp
51
+ @payload = JPush::PushPayload.build(
52
+ audience: JPush::Audience.all,
53
+ platform: JPush::Platform.all,
54
+ notification: JPush::Notification.build(
55
+ alert: 'alert',
56
+ winphone: JPush::WinphoneNotification.build(
57
+ alert: 'winphone alert')))
58
+ res = @client.sendPush(@payload)
59
+ assert(res.isok, message = "response error")
60
+ end
61
+
62
+ end
@@ -0,0 +1,169 @@
1
+ require 'jpush'
2
+
3
+ require './base_remote_tests.rb'
4
+
5
+ require 'test/unit'
6
+ class AudienceTests < Test::Unit::TestCase
7
+ def setup
8
+ @client = JPush::JPushClient.new(AppKey, MasterSecret)
9
+ end
10
+
11
+ def testsendByTag
12
+ @payload = JPush::PushPayload.build(
13
+ platform: JPush::Platform.all,
14
+ notification: JPush::Notification.build(
15
+ alert: 'alert'),
16
+ audience: JPush::Audience.build(
17
+ tag: TAG1))
18
+ res = @client.sendPush(@payload)
19
+ assert(res.isok, message = "")
20
+ end
21
+
22
+ def testsendByTagAnd
23
+ @payload = JPush::PushPayload.build(
24
+ platform: JPush::Platform.all,
25
+ notification: JPush::Notification.build(
26
+ alert: 'alert'),
27
+ audience: JPush::Audience.build(
28
+ tag_and: TAG1))
29
+ res = @client.sendPush(@payload)
30
+ assert(res.isok, message = "")
31
+ end
32
+
33
+ def testsendByAlias
34
+ @payload = JPush::PushPayload.build(
35
+ platform: JPush::Platform.all,
36
+ notification: JPush::Notification.build(
37
+ alert: 'alert'),
38
+ audience: JPush::Audience.build(
39
+ _alias: ALIAS1))
40
+ res = @client.sendPush(@payload)
41
+ assert_not_nil(res.isok, message = "")
42
+ end
43
+
44
+ def testsendByRegistrationID
45
+ @payload = JPush::PushPayload.build(
46
+ platform: JPush::Platform.all,
47
+ notification: JPush::Notification.build(
48
+ alert: 'alert'),
49
+ audience: JPush::Audience.build(
50
+ registration_id: REGISTRATION_ID1))
51
+ res = @client.sendPush(@payload)
52
+ assert(res.isok, message = "")
53
+ end
54
+
55
+ def testsendByTagMore
56
+ @payload = JPush::PushPayload.build(
57
+ platform: JPush::Platform.all,
58
+ notification: JPush::Notification.build(
59
+ alert: 'alert'),
60
+ audience: JPush::Audience.build(
61
+ tag: TAG2))
62
+ res = @client.sendPush(@payload)
63
+ assert(res.isok, message = "")
64
+ end
65
+
66
+ def testsendByTagAndMore
67
+ @payload = JPush::PushPayload.build(
68
+ platform: JPush::Platform.all,
69
+ notification: JPush::Notification.build(
70
+ alert: 'alert'),
71
+ audience: JPush::Audience.build(
72
+ tag_and: TagAndMore))
73
+ res = @client.sendPush(@payload)
74
+ assert(res.isok, message = "")
75
+ end
76
+
77
+ def testsendByTagAndMore_fail
78
+ @payload = JPush::PushPayload.build(
79
+ platform: JPush::Platform.all,
80
+ notification: JPush::Notification.build(
81
+ alert: 'alert'),
82
+ audience: JPush::Audience.build(
83
+ tag_and: TAG2))
84
+ res = @client.sendPush(@payload)
85
+ assert(res.isok, message = "")
86
+ end
87
+
88
+ def testsendByAliasMore
89
+ @payload = JPush::PushPayload.build(
90
+ platform: JPush::Platform.all,
91
+ notification: JPush::Notification.build(
92
+ alert: 'alert'),
93
+ audience: JPush::Audience.build(
94
+ _alias: ALIAS2))
95
+ res = @client.sendPush(@payload)
96
+ assert(res.isok, message = "")
97
+ end
98
+
99
+ def testsendByRegistrationIDMore
100
+ @payload = JPush::PushPayload.build(
101
+ platform: JPush::Platform.all,
102
+ notification: JPush::Notification.build(
103
+ alert: 'alert'),
104
+ audience: JPush::Audience.build(
105
+ registration_id: REGISTRATION_ID2))
106
+ res = @client.sendPush(@payload)
107
+ assert(res.isok, message = "")
108
+ end
109
+
110
+ def testsendByTagAlias
111
+ @payload = JPush::PushPayload.build(
112
+ platform: JPush::Platform.all,
113
+ notification: JPush::Notification.build(
114
+ alert: 'alert'),
115
+ audience: JPush::Audience.build(
116
+ tag: TAG_ALL,
117
+ _alias: ALIAS1))
118
+ res = @client.sendPush(@payload)
119
+ assert(res.isok, message = "")
120
+ end
121
+
122
+ def testsendByTagRegistrationID
123
+ @payload = JPush::PushPayload.build(
124
+ platform: JPush::Platform.all,
125
+ notification: JPush::Notification.build(
126
+ alert: 'alert'),
127
+ audience: JPush::Audience.build(
128
+ registration_id: REGISTRATION_ID1,
129
+ tag: TAG_ALL))
130
+ res = @client.sendPush(@payload)
131
+ assert(res.isok, message = "")
132
+ end
133
+
134
+ def testsendByTagRegistrationID_0
135
+ @payload = JPush::PushPayload.build(
136
+ platform: JPush::Platform.all,
137
+ notification: JPush::Notification.build(
138
+ alert: 'alert'),
139
+ audience: JPush::Audience.build(
140
+ registration_id: REGISTRATION_ID1,
141
+ tag: TAG_NO))
142
+ res = @client.sendPush(@payload)
143
+ assert(res.isok, message = "")
144
+ end
145
+
146
+ def testsendByTagAlias_0
147
+ @payload = JPush::PushPayload.build(
148
+ platform: JPush::Platform.all,
149
+ notification: JPush::Notification.build(
150
+ alert: 'alert'),
151
+ audience: JPush::Audience.build(
152
+ tag: TAG3,
153
+ _alias: ALIAS1))
154
+ res = @client.sendPush(@payload)
155
+ assert(res.isok, message = "")
156
+ end
157
+
158
+ def testsendByTagAlias_0_2
159
+ @payload = JPush::PushPayload.build(
160
+ platform: JPush::Platform.all,
161
+ notification: JPush::Notification.build(
162
+ alert: 'alert'),
163
+ audience: JPush::Audience.build(
164
+ tag: TAG_ALL,
165
+ _alias: ALIAS_NO))
166
+ res = @client.sendPush(@payload)
167
+ assert(res.isok, message = "")
168
+ end
169
+ end
@@ -0,0 +1,27 @@
1
+
2
+ AppKey ="dd1066407b044738b6479275"
3
+ MasterSecret = "2b38ce69b1de2a7fa95706ea"
4
+
5
+ CONTENT_TYPE_JSON = "application/json"
6
+
7
+ SUCCEED_RESULT_CODE = 0
8
+ LACK_OF_PARAMS = 1002
9
+ INVALID_PARAMS = 1003
10
+ AUTHENTICATION_FAIL = 1004
11
+ TOO_BIG = 1005
12
+ APPKEY_NOT_EXIST = 1008
13
+ NO_TARGET = 1011
14
+
15
+ ALERT = "JPush Test - alert"
16
+ MSG_CONTENT = "JPush Test - msgContent"
17
+ TagAndMore = ["tag1", "tag_all"]
18
+ TAG1 = ["tag1"]
19
+ TAG2 = ["tag1", "tag2"]
20
+ TAG3 = ["tag2"]
21
+ TAG_ALL = ["tag_all"]
22
+ TAG_NO = ["tag_no"]
23
+ ALIAS1 = ["alias1"]
24
+ ALIAS2 = ["alias1", "alias2"]
25
+ ALIAS_NO = ["alias_no"]
26
+ REGISTRATION_ID1 = ["0900e8d85ef"]
27
+ REGISTRATION_ID2 = ["0900e8d85ef", "0a04ad7d8b4"]
@@ -0,0 +1,49 @@
1
+ require 'jpush'
2
+
3
+ require './base_remote_tests.rb'
4
+
5
+ require 'test/unit'
6
+
7
+ class MessageTests < Test::Unit::TestCase
8
+ def setup
9
+ @client = JPush::JPushClient.new(AppKey, MasterSecret)
10
+ end
11
+
12
+ def testsendMessageContentOnly
13
+ @payload = JPush::PushPayload.build(
14
+ audience: JPush::Audience.all,
15
+ platform: JPush::Platform.all,
16
+ message: JPush::Message.build(
17
+ msg_content: MSG_CONTENT))
18
+ res = @client.sendPush(@payload)
19
+ assert(res.isok, message = "")
20
+ end
21
+
22
+ def testsendMessageContentAndTitle
23
+ @payload = JPush::PushPayload.build(
24
+ audience: JPush::Audience.all,
25
+ platform: JPush::Platform.all,
26
+ message: JPush::Message.build(
27
+ msg_content: MSG_CONTENT,
28
+ content_type: "content type",
29
+ title: "message title"))
30
+ res = @client.sendPush(@payload)
31
+ assert(res.isok, message = "")
32
+ end
33
+
34
+ def testsendMessageContentAndExtras
35
+ array = {}
36
+ array['key1'] = 'value1'
37
+ array['key2'] = 'value2'
38
+ array['key3'] = 'value3'
39
+ @payload = JPush::PushPayload.build(
40
+ audience: JPush::Audience.all,
41
+ platform: JPush::Platform.all,
42
+ message: JPush::Message.build(
43
+ msg_content: MSG_CONTENT,
44
+ extras: array))
45
+ res = @client.sendPush(@payload)
46
+ assert(res.isok, message = "")
47
+ end
48
+
49
+ end
@@ -0,0 +1,52 @@
1
+ require 'jpush'
2
+
3
+ require './base_remote_tests.rb'
4
+
5
+ require 'test/unit'
6
+ class NotificationTests < Test::Unit::TestCase
7
+ def setup
8
+ @client = JPush::JPushClient.new(AppKey, MasterSecret)
9
+ end
10
+
11
+ def testsendNotification_android_title
12
+ @payload = JPush::PushPayload.build(
13
+ audience: JPush::Audience.all,
14
+ platform: JPush::Platform.all,
15
+ notification: JPush::Notification.build(
16
+ android: JPush::AndroidNotification.build(
17
+ alert: 'alert',
18
+ title: 'title')))
19
+ res = @client.sendPush(@payload)
20
+ assert(res.isok, message = "")
21
+ end
22
+
23
+ def testsendNotification_android_buildId
24
+ @payload = JPush::PushPayload.build(
25
+ audience: JPush::Audience.all,
26
+ platform: JPush::Platform.all,
27
+ notification: JPush::Notification.build(
28
+ android: JPush::AndroidNotification.build(
29
+ alert: 'alert',
30
+ builder_id: 100)))
31
+ res = @client.sendPush(@payload)
32
+ assert(res.isok, message = "")
33
+ end
34
+
35
+ def testsendNotification_android_extras
36
+ array = {}
37
+ array['key1'] = 'value1'
38
+ array['key2'] = 'value2'
39
+ array['key3'] = 'value3'
40
+ @payload = JPush::PushPayload.build(
41
+ audience: JPush::Audience.all,
42
+ platform: JPush::Platform.all,
43
+ notification: JPush::Notification.build(
44
+ android: JPush::AndroidNotification.build(
45
+ alert: 'alert',
46
+ extras: array)))
47
+ res = @client.sendPush(@payload)
48
+ assert(res.isok, message = "")
49
+ end
50
+
51
+
52
+ end