jpush 4.0.10 → 4.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,77 +1,77 @@
1
- require 'jpush/push/audience'
2
- require 'jpush/push/notification'
3
-
4
- module JPush
5
- module Push
6
- class PushPayload
7
-
8
- attr_reader :cid
9
-
10
- def initialize(platform: , audience: , notification: nil, message: nil)
11
- @platform = 'all' == platform ? 'all' : build_platform(platform)
12
- @audience = 'all' == audience ? 'all' : build_audience(audience)
13
- @notification = build_notification(notification) unless notification.nil?
14
- @message = build_message(message) unless message.nil?
15
- end
16
-
17
- def set_message(msg_content, title: nil, content_type: nil, extras: nil)
18
- @message = build_message(msg_content, title, content_type, extras)
19
- self
20
- end
21
-
22
- def set_sms_message(sms_message)
23
- @sms_message = sms_message
24
- self
25
- end
26
-
27
- def set_options(options)
28
- @options = options
29
- self
30
- end
31
-
32
- def set_cid(cid)
33
- @cid= cid
34
- self
35
- end
36
-
37
- def to_hash
38
- @push_payload = {
39
- platform: @platform,
40
- audience: @audience,
41
- notification: @notification,
42
- message: @message,
43
- sms_message: @sms_message,
44
- options: { apns_production: false }.merge(@options.nil? ? {} : @options),
45
- cid: @cid
46
- }.select { |_, value| !value.nil? }
47
- end
48
-
49
- private
50
-
51
- def build_platform(platform)
52
- return platform if platform.is_a? Array
53
- return [platform]
54
- end
55
-
56
- def build_audience(audience)
57
- audience.is_a?(Audience) ? audience.to_hash : nil
58
- end
59
-
60
- def build_notification(notification)
61
- return {alert: notification} if notification.is_a?(String)
62
- notification.is_a?(Notification) ? notification.to_hash : nil
63
- end
64
-
65
- def build_message(msg_content, title = nil, content_type = nil, extras = nil)
66
- extras = (extras.nil? || !extras.is_a?(Hash) || extras.empty?) ? nil : extras
67
- message = {
68
- msg_content: msg_content,
69
- title: title,
70
- content_type: content_type,
71
- extras: extras
72
- }.select { |_, value| !value.nil? }
73
- end
74
-
75
- end
76
- end
77
- end
1
+ require 'jpush/push/audience'
2
+ require 'jpush/push/notification'
3
+
4
+ module JPush
5
+ module Push
6
+ class PushPayload
7
+
8
+ attr_reader :cid
9
+
10
+ def initialize(platform: , audience: , notification: nil, message: nil)
11
+ @platform = 'all' == platform ? 'all' : build_platform(platform)
12
+ @audience = 'all' == audience ? 'all' : build_audience(audience)
13
+ @notification = build_notification(notification) unless notification.nil?
14
+ @message = build_message(message) unless message.nil?
15
+ end
16
+
17
+ def set_message(msg_content, title: nil, content_type: nil, extras: nil)
18
+ @message = build_message(msg_content, title, content_type, extras)
19
+ self
20
+ end
21
+
22
+ def set_sms_message(sms_message)
23
+ @sms_message = sms_message
24
+ self
25
+ end
26
+
27
+ def set_options(options)
28
+ @options = options
29
+ self
30
+ end
31
+
32
+ def set_cid(cid)
33
+ @cid= cid
34
+ self
35
+ end
36
+
37
+ def to_hash
38
+ @push_payload = {
39
+ platform: @platform,
40
+ audience: @audience,
41
+ notification: @notification,
42
+ message: @message,
43
+ sms_message: @sms_message,
44
+ options: { apns_production: false }.merge(@options.nil? ? {} : @options),
45
+ cid: @cid
46
+ }.select { |_, value| !value.nil? }
47
+ end
48
+
49
+ private
50
+
51
+ def build_platform(platform)
52
+ return platform if platform.is_a? Array
53
+ return [platform]
54
+ end
55
+
56
+ def build_audience(audience)
57
+ audience.is_a?(Audience) ? audience.to_hash : nil
58
+ end
59
+
60
+ def build_notification(notification)
61
+ return {alert: notification} if notification.is_a?(String)
62
+ notification.is_a?(Notification) ? notification.to_hash : nil
63
+ end
64
+
65
+ def build_message(msg_content, title = nil, content_type = nil, extras = nil)
66
+ extras = (extras.nil? || !extras.is_a?(Hash) || extras.empty?) ? nil : extras
67
+ message = {
68
+ msg_content: msg_content,
69
+ title: title,
70
+ content_type: content_type,
71
+ extras: extras
72
+ }.select { |_, value| !value.nil? }
73
+ end
74
+
75
+ end
76
+ end
77
+ end
@@ -1,52 +1,52 @@
1
- require 'jpush/push/notification'
2
-
3
- module JPush
4
- module Push
5
- class SinglePushPayload
6
-
7
- def initialize(platform: , target: )
8
- @platform = 'all' == platform ? 'all' : build_platform(platform)
9
- @target = target
10
- end
11
-
12
- def set_notification(notification)
13
- @notification = notification
14
- self
15
- end
16
-
17
- def set_message(message)
18
- @message = message
19
- self
20
- end
21
-
22
- def set_sms_message(sms_message)
23
- @sms_message = sms_message
24
- self
25
- end
26
-
27
- def set_options(options)
28
- @options = options
29
- self
30
- end
31
-
32
- def to_hash
33
- single_push_payload = {
34
- platform: @platform,
35
- target: @target,
36
- notification: @notification,
37
- message: @message,
38
- sms_message: @sms_message,
39
- options: @options
40
- }.select { |_, value| !value.nil? }
41
- end
42
-
43
- private
44
-
45
- def build_platform(platform)
46
- return platform if platform.is_a? Array
47
- return [platform]
48
- end
49
-
50
- end
51
- end
52
- end
1
+ require 'jpush/push/notification'
2
+
3
+ module JPush
4
+ module Push
5
+ class SinglePushPayload
6
+
7
+ def initialize(platform: , target: )
8
+ @platform = 'all' == platform ? 'all' : build_platform(platform)
9
+ @target = target
10
+ end
11
+
12
+ def set_notification(notification)
13
+ @notification = notification
14
+ self
15
+ end
16
+
17
+ def set_message(message)
18
+ @message = message
19
+ self
20
+ end
21
+
22
+ def set_sms_message(sms_message)
23
+ @sms_message = sms_message
24
+ self
25
+ end
26
+
27
+ def set_options(options)
28
+ @options = options
29
+ self
30
+ end
31
+
32
+ def to_hash
33
+ single_push_payload = {
34
+ platform: @platform,
35
+ target: @target,
36
+ notification: @notification,
37
+ message: @message,
38
+ sms_message: @sms_message,
39
+ options: @options
40
+ }.select { |_, value| !value.nil? }
41
+ end
42
+
43
+ private
44
+
45
+ def build_platform(platform)
46
+ return platform if platform.is_a? Array
47
+ return [platform]
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -1,84 +1,84 @@
1
- require 'jpush/http/client'
2
- require 'jpush/push/push_payload'
3
- require 'jpush/push/single_push_payload'
4
- require 'jpush/handler'
5
-
6
- module JPush
7
- class Pusher < Handler
8
-
9
- # POST https://api.jpush.cn/v3/push/validate
10
- # 验证推送调用是否能够成功,与推送 API 的区别在于:不向用户发送任何消息
11
- def validate(push_payload)
12
- url = base_url + 'validate'
13
- send_push(url, push_payload)
14
- end
15
-
16
- # POST https://api.jpush.cn/v3/push
17
- # 向某单个设备或者某设备列表推送一条通知、或者消息
18
- def push(push_payload)
19
- if push_payload.cid.nil?
20
- cid_response = get_cid(count=1, type='push')
21
- cid = cid_response.body['cidlist'].at(0)
22
- push_payload.set_cid(cid)
23
- end
24
- send_push(base_url, push_payload)
25
- end
26
-
27
- # GET https://api.jpush.cn/v3/push/cid[?count=n[&type=xx]]
28
- # 获取cid:推送唯一标识符
29
- # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#cid
30
- def get_cid(count=nil, type=nil)
31
- params = {
32
- count: count,
33
- type: type
34
- }.select { |_, value| !value.nil? }
35
- url = base_url + 'cid'
36
- Http::Client.get(@jpush, url, params: params)
37
- end
38
-
39
- # POST https://api.jpush.cn/v3/push/batch/regid/single
40
- # 针对RegID方式批量单推(VIP专属接口)
41
- # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#vip
42
- def push_batch_regid(single_push_payloads)
43
- cid_response = get_cid(count=single_push_payloads.size, type='push')
44
- cidlist = cid_response.body['cidlist']
45
- body = {}
46
- body['pushlist'] = {}
47
- single_push_payloads.each { |payload|
48
- cid = cidlist.pop
49
- body['pushlist'][cid] = payload.to_hash
50
- }
51
- url = base_url + 'batch/regid/single'
52
- Http::Client.post(@jpush, url, body: body)
53
- end
54
-
55
- # POST https://api.jpush.cn/v3/push/batch/alias/single
56
- # 针对Alias方式批量单推(VIP专属接口)
57
- # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#vip
58
- def push_batch_alias(single_push_payloads)
59
- cid_response = get_cid(count=single_push_payloads.size, type='push')
60
- cidlist = cid_response.body['cidlist']
61
- body = {}
62
- body['pushlist'] = {}
63
- single_push_payloads.each { |payload|
64
- cid = cidlist.pop
65
- body['pushlist'][cid] = payload.to_hash
66
- }
67
- url = base_url + 'batch/alias/single'
68
- Http::Client.post(@jpush, url, body: body)
69
- end
70
-
71
- private
72
-
73
- def send_push(url, push_payload)
74
- push_payload = push_payload.is_a?(JPush::Push::PushPayload) ? push_payload : nil
75
- body = push_payload.to_hash
76
- Http::Client.post(@jpush, url, body: body)
77
- end
78
-
79
- def base_url
80
- 'https://api.jpush.cn/v3/push/'
81
- end
82
-
83
- end
84
- end
1
+ require 'jpush/http/client'
2
+ require 'jpush/push/push_payload'
3
+ require 'jpush/push/single_push_payload'
4
+ require 'jpush/handler'
5
+
6
+ module JPush
7
+ class Pusher < Handler
8
+
9
+ # POST https://api.jpush.cn/v3/push/validate
10
+ # 验证推送调用是否能够成功,与推送 API 的区别在于:不向用户发送任何消息
11
+ def validate(push_payload)
12
+ url = base_url + 'validate'
13
+ send_push(url, push_payload)
14
+ end
15
+
16
+ # POST https://api.jpush.cn/v3/push
17
+ # 向某单个设备或者某设备列表推送一条通知、或者消息
18
+ def push(push_payload)
19
+ if push_payload.cid.nil?
20
+ cid_response = get_cid(count=1, type='push')
21
+ cid = cid_response.body['cidlist'].at(0)
22
+ push_payload.set_cid(cid)
23
+ end
24
+ send_push(base_url, push_payload)
25
+ end
26
+
27
+ # GET https://api.jpush.cn/v3/push/cid[?count=n[&type=xx]]
28
+ # 获取cid:推送唯一标识符
29
+ # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#cid
30
+ def get_cid(count=nil, type=nil)
31
+ params = {
32
+ count: count,
33
+ type: type
34
+ }.select { |_, value| !value.nil? }
35
+ url = base_url + 'cid'
36
+ Http::Client.get(@jpush, url, params: params)
37
+ end
38
+
39
+ # POST https://api.jpush.cn/v3/push/batch/regid/single
40
+ # 针对RegID方式批量单推(VIP专属接口)
41
+ # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#vip
42
+ def push_batch_regid(single_push_payloads)
43
+ cid_response = get_cid(count=single_push_payloads.size, type='push')
44
+ cidlist = cid_response.body['cidlist']
45
+ body = {}
46
+ body['pushlist'] = {}
47
+ single_push_payloads.each { |payload|
48
+ cid = cidlist.pop
49
+ body['pushlist'][cid] = payload.to_hash
50
+ }
51
+ url = base_url + 'batch/regid/single'
52
+ Http::Client.post(@jpush, url, body: body)
53
+ end
54
+
55
+ # POST https://api.jpush.cn/v3/push/batch/alias/single
56
+ # 针对Alias方式批量单推(VIP专属接口)
57
+ # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#vip
58
+ def push_batch_alias(single_push_payloads)
59
+ cid_response = get_cid(count=single_push_payloads.size, type='push')
60
+ cidlist = cid_response.body['cidlist']
61
+ body = {}
62
+ body['pushlist'] = {}
63
+ single_push_payloads.each { |payload|
64
+ cid = cidlist.pop
65
+ body['pushlist'][cid] = payload.to_hash
66
+ }
67
+ url = base_url + 'batch/alias/single'
68
+ Http::Client.post(@jpush, url, body: body)
69
+ end
70
+
71
+ private
72
+
73
+ def send_push(url, push_payload)
74
+ push_payload = push_payload.is_a?(JPush::Push::PushPayload) ? push_payload : nil
75
+ body = push_payload.to_hash
76
+ Http::Client.post(@jpush, url, body: body)
77
+ end
78
+
79
+ def base_url
80
+ 'https://api.jpush.cn/v3/push/'
81
+ end
82
+
83
+ end
84
+ end
@@ -1,98 +1,98 @@
1
- require 'jpush/http/client'
2
- require 'jpush/handler'
3
-
4
- module JPush
5
- class Report < Handler
6
-
7
- TIME_UNIT = ['HOUR', 'DAY', 'MONTH']
8
- TIME_FORMAT = { hour: '%F %H', day: '%F', month: '%Y-%m' }
9
- MAX_DURATION = { hour: 24, day: 60, month: 2 }
10
-
11
- # GET /v3/received
12
- # 送达统计
13
- def received(msg_ids)
14
- msg_ids = [msg_ids].flatten
15
- url = base_url + '/received'
16
- params = {
17
- msg_ids: msg_ids.join(',')
18
- }
19
- Http::Client.get(@jpush, url, params: params)
20
- end
21
-
22
- # GET /v3/received/detail
23
- # 送达统计
24
- # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_report/#_7
25
- def received_detail(msg_ids)
26
- msg_ids = [msg_ids].flatten
27
- url = base_url + '/received/detail'
28
- params = {
29
- msg_ids: msg_ids.join(',')
30
- }
31
- Http::Client.get(@jpush, url, params: params)
32
- end
33
-
34
- # GET /v3/status/message
35
- # 送达状态查询
36
- # Status API 用于查询已推送的一条消息在一组设备上的送达状态。
37
- # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_report/#_11
38
- def status_message(msg_id: , registration_ids: , date: nil)
39
- registration_ids = [registration_ids].flatten
40
- url = base_url + 'status/message'
41
- body = {
42
- msg_id: msg_id.to_i,
43
- registration_ids: registration_ids,
44
- date: date
45
- }.select { |_, value| !value.nil? }
46
- Http::Client.post(@jpush, url, body: body)
47
- end
48
-
49
- # GET /v3/messages
50
- # 消息统计
51
- def messages(msg_ids)
52
- msg_ids = [msg_ids].flatten
53
- url = base_url + '/messages'
54
- params = {
55
- msg_ids: msg_ids.join(',')
56
- }
57
- Http::Client.get(@jpush, url, params: params)
58
- end
59
-
60
- # GET /v3/messages/detail
61
- # 消息统计详情(VIP 专属接口,新)
62
- # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_report/#vip_1
63
- def messages_detail(msg_ids)
64
- msg_ids = [msg_ids].flatten
65
- url = base_url + '/messages/detail'
66
- params = {
67
- msg_ids: msg_ids.join(',')
68
- }
69
- Http::Client.get(@jpush, url, params: params)
70
- end
71
-
72
- # GET /v3/users
73
- # 用户统计
74
- def users(time_unit, start, duration)
75
- start = start.strftime(TIME_FORMAT[time_unit.downcase.to_sym])
76
- duration = build_duration(time_unit.downcase.to_sym, duration)
77
- params = {
78
- time_unit: time_unit.upcase,
79
- start: start,
80
- duration: duration
81
- }
82
- url = base_url + '/users'
83
- Http::Client.get(@jpush, url, params: params)
84
- end
85
-
86
- private
87
-
88
- def base_url
89
- 'https://report.jpush.cn/v3/'
90
- end
91
-
92
- def build_duration(time_unit, duration)
93
- return 1 if duration < 0
94
- duration > MAX_DURATION[time_unit] ? MAX_DURATION[time_unit] : duration
95
- end
96
-
97
- end
98
- end
1
+ require 'jpush/http/client'
2
+ require 'jpush/handler'
3
+
4
+ module JPush
5
+ class Report < Handler
6
+
7
+ TIME_UNIT = ['HOUR', 'DAY', 'MONTH']
8
+ TIME_FORMAT = { hour: '%F %H', day: '%F', month: '%Y-%m' }
9
+ MAX_DURATION = { hour: 24, day: 60, month: 2 }
10
+
11
+ # GET /v3/received
12
+ # 送达统计
13
+ def received(msg_ids)
14
+ msg_ids = [msg_ids].flatten
15
+ url = base_url + '/received'
16
+ params = {
17
+ msg_ids: msg_ids.join(',')
18
+ }
19
+ Http::Client.get(@jpush, url, params: params)
20
+ end
21
+
22
+ # GET /v3/received/detail
23
+ # 送达统计
24
+ # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_report/#_7
25
+ def received_detail(msg_ids)
26
+ msg_ids = [msg_ids].flatten
27
+ url = base_url + '/received/detail'
28
+ params = {
29
+ msg_ids: msg_ids.join(',')
30
+ }
31
+ Http::Client.get(@jpush, url, params: params)
32
+ end
33
+
34
+ # GET /v3/status/message
35
+ # 送达状态查询
36
+ # Status API 用于查询已推送的一条消息在一组设备上的送达状态。
37
+ # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_report/#_11
38
+ def status_message(msg_id: , registration_ids: , date: nil)
39
+ registration_ids = [registration_ids].flatten
40
+ url = base_url + 'status/message'
41
+ body = {
42
+ msg_id: msg_id.to_i,
43
+ registration_ids: registration_ids,
44
+ date: date
45
+ }.select { |_, value| !value.nil? }
46
+ Http::Client.post(@jpush, url, body: body)
47
+ end
48
+
49
+ # GET /v3/messages
50
+ # 消息统计
51
+ def messages(msg_ids)
52
+ msg_ids = [msg_ids].flatten
53
+ url = base_url + '/messages'
54
+ params = {
55
+ msg_ids: msg_ids.join(',')
56
+ }
57
+ Http::Client.get(@jpush, url, params: params)
58
+ end
59
+
60
+ # GET /v3/messages/detail
61
+ # 消息统计详情(VIP 专属接口,新)
62
+ # https://docs.jiguang.cn/jpush/server/push/rest_api_v3_report/#vip_1
63
+ def messages_detail(msg_ids)
64
+ msg_ids = [msg_ids].flatten
65
+ url = base_url + '/messages/detail'
66
+ params = {
67
+ msg_ids: msg_ids.join(',')
68
+ }
69
+ Http::Client.get(@jpush, url, params: params)
70
+ end
71
+
72
+ # GET /v3/users
73
+ # 用户统计
74
+ def users(time_unit, start, duration)
75
+ start = start.strftime(TIME_FORMAT[time_unit.downcase.to_sym])
76
+ duration = build_duration(time_unit.downcase.to_sym, duration)
77
+ params = {
78
+ time_unit: time_unit.upcase,
79
+ start: start,
80
+ duration: duration
81
+ }
82
+ url = base_url + '/users'
83
+ Http::Client.get(@jpush, url, params: params)
84
+ end
85
+
86
+ private
87
+
88
+ def base_url
89
+ 'https://report.jpush.cn/v3/'
90
+ end
91
+
92
+ def build_duration(time_unit, duration)
93
+ return 1 if duration < 0
94
+ duration > MAX_DURATION[time_unit] ? MAX_DURATION[time_unit] : duration
95
+ end
96
+
97
+ end
98
+ end