gs2-ruby-sdk-inbox 0.0.1
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.
- checksums.yaml +7 -0
- data/.buildpath +5 -0
- data/.gitignore +10 -0
- data/.project +17 -0
- data/Gemfile +5 -0
- data/README.md +2 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/gs2-ruby-sdk-inbox.gemspec +26 -0
- data/lib/gs2-inbox.rb +1 -0
- data/lib/gs2/inbox/Client.rb +503 -0
- data/lib/gs2/inbox/version.rb +5 -0
- metadata +112 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 07e3490cfc42c3d8a3ecc36ce3b6b583f3b0b994
|
|
4
|
+
data.tar.gz: 3dc5445138a592c775b336ad65c796d56380bfd4
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 13709e713cc01f890fc1dbf4dc035700b26c3d7ec6d716fc537258d026897d61a2e9ea27db2a8e98a92de2e89d2f34a02a4e440582df19e0e2e55dad1cf128ba
|
|
7
|
+
data.tar.gz: 4591cd822df9fe33bdfb40864da0eb5683c9efc30e34f68feeaef5f584bed86d3d42da6e61829aad6b2db9d29522233381b8282ed5310da3e80a03bf002d290d
|
data/.buildpath
ADDED
data/.gitignore
ADDED
data/.project
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<projectDescription>
|
|
3
|
+
<name>gs2-ruby-sdk-inbox</name>
|
|
4
|
+
<comment></comment>
|
|
5
|
+
<projects>
|
|
6
|
+
</projects>
|
|
7
|
+
<buildSpec>
|
|
8
|
+
<buildCommand>
|
|
9
|
+
<name>org.eclipse.dltk.core.scriptbuilder</name>
|
|
10
|
+
<arguments>
|
|
11
|
+
</arguments>
|
|
12
|
+
</buildCommand>
|
|
13
|
+
</buildSpec>
|
|
14
|
+
<natures>
|
|
15
|
+
<nature>org.eclipse.dltk.ruby.core.nature</nature>
|
|
16
|
+
</natures>
|
|
17
|
+
</projectDescription>
|
data/Gemfile
ADDED
data/README.md
ADDED
data/Rakefile
ADDED
data/bin/console
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require "bundler/setup"
|
|
4
|
+
require "gs2/sdk/for/ruby/inbox"
|
|
5
|
+
|
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
+
|
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
+
# require "pry"
|
|
11
|
+
# Pry.start
|
|
12
|
+
|
|
13
|
+
require "irb"
|
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'gs2/inbox/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "gs2-ruby-sdk-inbox"
|
|
8
|
+
spec.version = Gs2::Inbox::VERSION
|
|
9
|
+
spec.authors = ["Game Server Services, Inc."]
|
|
10
|
+
spec.email = ["contact@gs2.io"]
|
|
11
|
+
spec.licenses = "Apache-2.0"
|
|
12
|
+
|
|
13
|
+
spec.summary = %q{Game Server Services GS2-Inbox Client Library}
|
|
14
|
+
spec.homepage = "https://gs2.io/"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
17
|
+
spec.bindir = "exe"
|
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
spec.add_dependency "gs2-ruby-sdk-core", "~> 0.0.1"
|
|
22
|
+
spec.add_dependency "gs2-ruby-sdk-auth", "~> 0.0.1"
|
|
23
|
+
|
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
26
|
+
end
|
data/lib/gs2-inbox.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'gs2/inbox/Client.rb'
|
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
require 'gs2/core/AbstractClient.rb'
|
|
2
|
+
|
|
3
|
+
module Gs2 module Inbox
|
|
4
|
+
|
|
5
|
+
# GS2-Inbox クライアント
|
|
6
|
+
#
|
|
7
|
+
# @author Game Server Services, Inc.
|
|
8
|
+
class Client < Gs2::Core::AbstractClient
|
|
9
|
+
|
|
10
|
+
@@ENDPOINT = 'inbox'
|
|
11
|
+
|
|
12
|
+
# コンストラクタ
|
|
13
|
+
#
|
|
14
|
+
# @param region [String] リージョン名
|
|
15
|
+
# @param gs2_client_id [String] GSIクライアントID
|
|
16
|
+
# @param gs2_client_secret [String] GSIクライアントシークレット
|
|
17
|
+
def initialize(region, gs2_client_id, gs2_client_secret)
|
|
18
|
+
super(region, gs2_client_id, gs2_client_secret)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# デバッグ用。通常利用する必要はありません。
|
|
22
|
+
def self.ENDPOINT(v = nil)
|
|
23
|
+
if v
|
|
24
|
+
@@ENDPOINT = v
|
|
25
|
+
else
|
|
26
|
+
return @@ENDPOINT
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# 受信ボックスリストを取得
|
|
31
|
+
#
|
|
32
|
+
# @param pageToken [String] ページトークン
|
|
33
|
+
# @param limit [Integer] 取得件数
|
|
34
|
+
# @return [Array]
|
|
35
|
+
# * items
|
|
36
|
+
# [Array]
|
|
37
|
+
# * inboxId => 受信ボックスID
|
|
38
|
+
# * ownerId => オーナーID
|
|
39
|
+
# * name => 受信ボックス名
|
|
40
|
+
# * serviceClass => サービスクラス
|
|
41
|
+
# * autoDelete => 自動削除設定
|
|
42
|
+
# * cooperationUrl => 連携用URL
|
|
43
|
+
# * createAt => 作成日時
|
|
44
|
+
# * nextPageToken => 次ページトークン
|
|
45
|
+
def describe_inbox(pageToken = nil, limit = nil)
|
|
46
|
+
query = {}
|
|
47
|
+
if pageToken; query['pageToken'] = pageToken; end
|
|
48
|
+
if limit; query['limit'] = limit; end
|
|
49
|
+
return get(
|
|
50
|
+
'Gs2Inbox',
|
|
51
|
+
'DescribeInbox',
|
|
52
|
+
@@ENDPOINT,
|
|
53
|
+
'/inbox',
|
|
54
|
+
query);
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# 受信ボックスを作成<br>
|
|
58
|
+
# <br>
|
|
59
|
+
# GS2-Inbox を利用するにはまず受信ボックスを作成します。<br>
|
|
60
|
+
# 受信ボックスを作成後、受信ボックスにメッセージを送信することでメッセージを届けることができます。<br>
|
|
61
|
+
# 1つの受信ボックスで、複数のユーザのメッセージを扱うことができますので、ユーザ数分の受信ボックスを作成する必要はありません。<br>
|
|
62
|
+
#
|
|
63
|
+
# @param request [Array]
|
|
64
|
+
# * name => 受信ボックス名
|
|
65
|
+
# * serviceClass => サービスクラス
|
|
66
|
+
# * autoDelete => 自動削除設定
|
|
67
|
+
# * cooperationUrl => 連携用URL
|
|
68
|
+
# @return [Array]
|
|
69
|
+
# * item
|
|
70
|
+
# * inboxId => 受信ボックスID
|
|
71
|
+
# * ownerId => オーナーID
|
|
72
|
+
# * name => 受信ボックス名
|
|
73
|
+
# * serviceClass => サービスクラス
|
|
74
|
+
# * autoDelete => 自動削除設定
|
|
75
|
+
# * cooperationUrl => 連携用URL
|
|
76
|
+
# * createAt => 作成日時
|
|
77
|
+
def create_inbox(request)
|
|
78
|
+
if not request; raise ArgumentError.new(); end
|
|
79
|
+
body = {}
|
|
80
|
+
if request.has_key?('name'); body['name'] = request['name']; end
|
|
81
|
+
if request.has_key?('serviceClass'); body['serviceClass'] = request['serviceClass']; end
|
|
82
|
+
if request.has_key?('autoDelete'); body['autoDelete'] = request['autoDelete']; end
|
|
83
|
+
if request.has_key?('cooperationUrl'); body['cooperationUrl'] = request['cooperationUrl']; end
|
|
84
|
+
query = {}
|
|
85
|
+
return post(
|
|
86
|
+
'Gs2Inbox',
|
|
87
|
+
'CreateInbox',
|
|
88
|
+
@@ENDPOINT,
|
|
89
|
+
'/inbox',
|
|
90
|
+
body,
|
|
91
|
+
query);
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# サービスクラスリストを取得
|
|
95
|
+
#
|
|
96
|
+
# @return [Array] サービスクラス
|
|
97
|
+
def describe_service_class()
|
|
98
|
+
query = {}
|
|
99
|
+
result = get(
|
|
100
|
+
'Gs2Inbox',
|
|
101
|
+
'DescribeServiceClass',
|
|
102
|
+
@@ENDPOINT,
|
|
103
|
+
'/inbox/serviceClass',
|
|
104
|
+
query);
|
|
105
|
+
return result['items'];
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# 受信ボックスを取得
|
|
109
|
+
#
|
|
110
|
+
# @param request [Array]
|
|
111
|
+
# * inboxName => 受信ボックス名
|
|
112
|
+
# @return [Array]
|
|
113
|
+
# * item
|
|
114
|
+
# * inboxId => 受信ボックスID
|
|
115
|
+
# * ownerId => オーナーID
|
|
116
|
+
# * name => 受信ボックス名
|
|
117
|
+
# * serviceClass => サービスクラス
|
|
118
|
+
# * autoDelete => 自動削除設定
|
|
119
|
+
# * cooperationUrl => 連携用URL
|
|
120
|
+
# * createAt => 作成日時
|
|
121
|
+
def get_inbox(request)
|
|
122
|
+
if not request; raise ArgumentError.new(); end
|
|
123
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
124
|
+
query = {}
|
|
125
|
+
return get(
|
|
126
|
+
'Gs2Inbox',
|
|
127
|
+
'GetInbox',
|
|
128
|
+
@@ENDPOINT,
|
|
129
|
+
'/inbox/' + request['inboxName'],
|
|
130
|
+
query);
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# 受信ボックスのステータスを取得
|
|
134
|
+
#
|
|
135
|
+
# @param request [Array]
|
|
136
|
+
# * inboxName => 受信ボックス名
|
|
137
|
+
# @return [Array]
|
|
138
|
+
# * status => 状態
|
|
139
|
+
def get_inbox_status(request)
|
|
140
|
+
if not request; raise ArgumentError.new(); end
|
|
141
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
142
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
143
|
+
query = {}
|
|
144
|
+
return get(
|
|
145
|
+
'Gs2Inbox',
|
|
146
|
+
'GetInboxStatus',
|
|
147
|
+
@@ENDPOINT,
|
|
148
|
+
'/inbox/' + request['inboxName'] + '/status',
|
|
149
|
+
query);
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# 受信ボックスを更新
|
|
153
|
+
#
|
|
154
|
+
# @param request [Array]
|
|
155
|
+
# * inboxName => 受信ボックス名
|
|
156
|
+
# * serviceClass => サービスクラス
|
|
157
|
+
# * cooperationUrl => 連携用URL
|
|
158
|
+
# @return [Array]
|
|
159
|
+
# * item
|
|
160
|
+
# * inboxId => 受信ボックスID
|
|
161
|
+
# * ownerId => オーナーID
|
|
162
|
+
# * name => 受信ボックス名
|
|
163
|
+
# * serviceClass => サービスクラス
|
|
164
|
+
# * autoDelete => 自動削除設定
|
|
165
|
+
# * cooperationUrl => 連携用URL
|
|
166
|
+
# * createAt => 作成日時
|
|
167
|
+
def update_inbox(request)
|
|
168
|
+
if not request; raise ArgumentError.new(); end
|
|
169
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
170
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
171
|
+
body = {}
|
|
172
|
+
if request.has_key?('serviceClass'); body['serviceClass'] = request['serviceClass']; end
|
|
173
|
+
if request.has_key?('cooperationUrl'); body['cooperationUrl'] = request['cooperationUrl']; end
|
|
174
|
+
query = {}
|
|
175
|
+
return put(
|
|
176
|
+
'Gs2Inbox',
|
|
177
|
+
'UpdateInbox',
|
|
178
|
+
@@ENDPOINT,
|
|
179
|
+
'/inbox/' + request['inboxName'],
|
|
180
|
+
body,
|
|
181
|
+
query);
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# 受信ボックスを削除
|
|
185
|
+
#
|
|
186
|
+
# @param request [Array]
|
|
187
|
+
# * inboxName => 受信ボックス名
|
|
188
|
+
def delete_inbox(request)
|
|
189
|
+
if not request; raise ArgumentError.new(); end
|
|
190
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
191
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
192
|
+
query = {}
|
|
193
|
+
return delete(
|
|
194
|
+
'Gs2Inbox',
|
|
195
|
+
'DeleteInbox',
|
|
196
|
+
@@ENDPOINT,
|
|
197
|
+
'/inbox/' + request['inboxName'],
|
|
198
|
+
query);
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
# メッセージを送信<br>
|
|
202
|
+
# <br>
|
|
203
|
+
# メッセージを受信ボックスに送信します。<br>
|
|
204
|
+
# メッセージには本文との他に開封時通知を有効にするかのフラグ、既読状態のフラグといった情報が付加されています。<br>
|
|
205
|
+
# <br>
|
|
206
|
+
# 開封時通知を有効にすると、受信ボックスに設定された連携用URLにメッセージIDがPOSTリクエストで通知されます。<br>
|
|
207
|
+
# メッセージ送信時にも送信したメッセージIDが取得できますので、<br>
|
|
208
|
+
# 例えば、メッセージに課金用アイテムを添付したい場合は以下の様なメッセージを送信します。<br>
|
|
209
|
+
#
|
|
210
|
+
# * 送信先: user-0001
|
|
211
|
+
# * メッセージ本文: サーバ障害のお詫びです
|
|
212
|
+
# * 開封時通知: 有効
|
|
213
|
+
#
|
|
214
|
+
# このAPIの戻り値に含まれるメッセージIDとユーザID、アイテムの内容(課金用アイテム)をひも付けて保存します。<br>
|
|
215
|
+
# <br>
|
|
216
|
+
# その後、ユーザがこのメッセージを開封すると、連携用URLにこのメッセージのメッセージIDが通知されます。<br>
|
|
217
|
+
# それを受けて、ユーザIDのアカウントにアイテムの内容(課金用アイテム)を付与します。<br>
|
|
218
|
+
# これで、メッセージにアイテムを添付することができます。<br>
|
|
219
|
+
# <br>
|
|
220
|
+
# また、連携用URLを呼び出した際にエラー応答することで、メッセージの開封を失敗させることができます。<br>
|
|
221
|
+
# これによって、持ち物がいっぱいの場合などにアイテムの付与に失敗しても再度開封処理を実行させることができます。<br>
|
|
222
|
+
# <br>
|
|
223
|
+
# 開封時のコールバックは通信障害などの理由により、コールバック先のサーバは正しく処理を行えたけれど、<br>
|
|
224
|
+
# GS2側のインフラにレスポンスが届かず、結果的に処理が失敗する可能性を考慮する必要があります。<br>
|
|
225
|
+
# この場合、複数回の開封コールバックが呼び出される可能性がありますので、コールバック処理は冪等性を持った形で実装するようにしてください。<br>
|
|
226
|
+
#
|
|
227
|
+
# @param request [Array]
|
|
228
|
+
# * inboxName => 受信ボックス名
|
|
229
|
+
# * userId => 宛先ユーザID
|
|
230
|
+
# * message => メッセージ本文
|
|
231
|
+
# * cooperation => 開封時に連携用URLを呼び出すか
|
|
232
|
+
# @return [Array]
|
|
233
|
+
# * item
|
|
234
|
+
# * messageId => メッセージID
|
|
235
|
+
# * inboxId => 受信ボックスID
|
|
236
|
+
# * userId => 受信ユーザID
|
|
237
|
+
# * message => メッセージ本文
|
|
238
|
+
# * cooperation => 開封時に連携用URLを呼び出すか
|
|
239
|
+
# * date => 受信日時
|
|
240
|
+
# * read => 既読状態
|
|
241
|
+
def send_message(request)
|
|
242
|
+
if not request; raise ArgumentError.new(); end
|
|
243
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
244
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
245
|
+
body = {}
|
|
246
|
+
if request.has_key?('userId'); body['userId'] = request['userId']; end
|
|
247
|
+
if request.has_key?('message'); body['message'] = request['message']; end
|
|
248
|
+
if request.has_key?('cooperation'); body['cooperation'] = request['cooperation']; end
|
|
249
|
+
query = {}
|
|
250
|
+
return post(
|
|
251
|
+
'Gs2Inbox',
|
|
252
|
+
'SendMessage',
|
|
253
|
+
@@ENDPOINT,
|
|
254
|
+
'/inbox/' + request['inboxName'] + '/message',
|
|
255
|
+
body,
|
|
256
|
+
query);
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
# メッセージリストを取得<br>
|
|
260
|
+
# <br>
|
|
261
|
+
# accessToken には {http://static.docs.gs2.io/ruby/auth/Gs2/Auth/Client.html#login-instance_method Gs2::Auth::Client::login()} でログインして取得したアクセストークンを指定してください。<br>
|
|
262
|
+
#
|
|
263
|
+
# @param request [Array]
|
|
264
|
+
# * inboxName => 受信ボックス名
|
|
265
|
+
# * accessToken => アクセストークン
|
|
266
|
+
# @param pageToken [String] ページトークン
|
|
267
|
+
# @param limit [Integer] 取得件数
|
|
268
|
+
# @return [Array]
|
|
269
|
+
# * items
|
|
270
|
+
# [Array]
|
|
271
|
+
# * messageId => メッセージID
|
|
272
|
+
# * inboxId => 受信ボックスID
|
|
273
|
+
# * userId => 受信ユーザID
|
|
274
|
+
# * message => メッセージ本文
|
|
275
|
+
# * cooperation => 開封時に連携用URLを呼び出すか
|
|
276
|
+
# * date => 受信日時
|
|
277
|
+
# * read => 既読状態
|
|
278
|
+
# * nextPageToken => 次ページトークン
|
|
279
|
+
def describe_message(request, pageToken = nil, limit = nil)
|
|
280
|
+
if not request; raise ArgumentError.new(); end
|
|
281
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
282
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
283
|
+
if not request.has_key?('accessToken'); raise ArgumentError.new(); end
|
|
284
|
+
if not request['accessToken']; raise ArgumentError.new(); end
|
|
285
|
+
query = {}
|
|
286
|
+
if pageToken; query['pageToken'] = pageToken; end
|
|
287
|
+
if limit; query['limit'] = limit; end
|
|
288
|
+
header = {
|
|
289
|
+
'X-GS2-ACCESS-TOKEN' => request['accessToken']
|
|
290
|
+
}
|
|
291
|
+
return get(
|
|
292
|
+
'Gs2Inbox',
|
|
293
|
+
'DescribeMessage',
|
|
294
|
+
@@ENDPOINT,
|
|
295
|
+
'/inbox/' + request['inboxName'] + '/message',
|
|
296
|
+
query,
|
|
297
|
+
header);
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
# メッセージを取得
|
|
301
|
+
#
|
|
302
|
+
# @param request [Array]
|
|
303
|
+
# * inboxName => 受信ボックス名
|
|
304
|
+
# * messageId => メッセージID
|
|
305
|
+
# @return [Array]
|
|
306
|
+
# * item
|
|
307
|
+
# * messageId => メッセージID
|
|
308
|
+
# * inboxId => 受信ボックスID
|
|
309
|
+
# * userId => 受信ユーザID
|
|
310
|
+
# * message => メッセージ本文
|
|
311
|
+
# * cooperation => 開封時に連携用URLを呼び出すか
|
|
312
|
+
# * date => 受信日時
|
|
313
|
+
# * read => 既読状態
|
|
314
|
+
def get_message(request)
|
|
315
|
+
if not request; raise ArgumentError.new(); end
|
|
316
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
317
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
318
|
+
if not request.has_key?('messageId'); raise ArgumentError.new(); end
|
|
319
|
+
if not request['messageId']; raise ArgumentError.new(); end
|
|
320
|
+
query = {}
|
|
321
|
+
return get(
|
|
322
|
+
'Gs2Inbox',
|
|
323
|
+
'GetMessage',
|
|
324
|
+
@@ENDPOINT,
|
|
325
|
+
'/inbox/' + request['inboxName'] + '/message/' + request['messageId'],
|
|
326
|
+
query);
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
# メッセージを開封<br>
|
|
330
|
+
# <br>
|
|
331
|
+
# 受信ボックスの設定で開封時自動削除設定が有効な場合は、メッセージは削除されます。<br>
|
|
332
|
+
# <br>
|
|
333
|
+
# 連携用URLを呼び出す設定になっている場合、連携用URLにメッセージIDを付与したコールバックが実行されます。<br>
|
|
334
|
+
# このコールバックをうけて、持ち物を増やしたりすることでメッセージにアイテムを添付することができます。<br>
|
|
335
|
+
# <br>
|
|
336
|
+
# レスポンスには連携用URLを呼び出した際の応答内容も含まれますので、開封時にさらにメッセージを表示させるようなこともできます。<br>
|
|
337
|
+
# 例えば、連携用URLを呼び出した際に「アイテムを手に入れた」というレスポンスを返すことで、このAPIのレスポンスにその文字列も含んだ形で応答されますので、<br>
|
|
338
|
+
# 開封時にさらにその応答メッセージを使って画面にメッセージとして「アイテムを手に入れた」という表示をすることができます。<br>
|
|
339
|
+
# <br>
|
|
340
|
+
# 開封時のコールバックは通信障害などの理由により、コールバック先のサーバは正しく処理を行えたけれど、<br>
|
|
341
|
+
# GS2側のインフラにレスポンスが届かず、結果的に処理が失敗する可能性を考慮する必要があります。<br>
|
|
342
|
+
# この場合、複数回の開封コールバックが呼び出される可能性がありますので、コールバック処理は冪等性を持った形で実装するようにしてください。<br>
|
|
343
|
+
# <br>
|
|
344
|
+
# accessToken には {http://static.docs.gs2.io/ruby/auth/Gs2/Auth/Client.html#login-instance_method Gs2::Auth::Client::login()} でログインして取得したアクセストークンを指定してください。<br>
|
|
345
|
+
#
|
|
346
|
+
# @param request [Array]
|
|
347
|
+
# * inboxName => 受信ボックス名
|
|
348
|
+
# * messageId => メッセージID
|
|
349
|
+
# * accessToken => アクセストークン
|
|
350
|
+
# @return [Array]
|
|
351
|
+
# * item
|
|
352
|
+
# * messageId => メッセージID
|
|
353
|
+
# * inboxId => 受信ボックスID
|
|
354
|
+
# * userId => 受信ユーザID
|
|
355
|
+
# * message => メッセージ本文
|
|
356
|
+
# * cooperation => 開封時に連携用URLを呼び出すか
|
|
357
|
+
# * date => 受信日時
|
|
358
|
+
# * read => 既読状態
|
|
359
|
+
def read_message(request)
|
|
360
|
+
if not request; raise ArgumentError.new(); end
|
|
361
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
362
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
363
|
+
if not request.has_key?('messageId'); raise ArgumentError.new(); end
|
|
364
|
+
if not request['messageId']; raise ArgumentError.new(); end
|
|
365
|
+
if not request.has_key?('accessToken'); raise ArgumentError.new(); end
|
|
366
|
+
if not request['accessToken']; raise ArgumentError.new(); end
|
|
367
|
+
body = {}
|
|
368
|
+
query = {}
|
|
369
|
+
header = {
|
|
370
|
+
'X-GS2-ACCESS-TOKEN' => request['accessToken']
|
|
371
|
+
}
|
|
372
|
+
return post(
|
|
373
|
+
'Gs2Inbox',
|
|
374
|
+
'ReadMessage',
|
|
375
|
+
@@ENDPOINT,
|
|
376
|
+
'/inbox/' + request['inboxName'] + '/message/' + request['messageId'],
|
|
377
|
+
body,
|
|
378
|
+
query,
|
|
379
|
+
header);
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
# メッセージを削除<br>
|
|
383
|
+
# <br>
|
|
384
|
+
# accessToken には {http://static.docs.gs2.io/ruby/auth/Gs2/Auth/Client.html#login-instance_method Gs2::Auth::Client::login()} でログインして取得したアクセストークンを指定してください。<br>
|
|
385
|
+
#
|
|
386
|
+
# @param request [Array]
|
|
387
|
+
# * inboxName => 受信ボックス名
|
|
388
|
+
# * messageId => メッセージID
|
|
389
|
+
# * accessToken => アクセストークン
|
|
390
|
+
def delete_message(request)
|
|
391
|
+
if not request; raise ArgumentError.new(); end
|
|
392
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
393
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
394
|
+
if not request.has_key?('messageId'); raise ArgumentError.new(); end
|
|
395
|
+
if not request['messageId']; raise ArgumentError.new(); end
|
|
396
|
+
if not request.has_key?('accessToken'); raise ArgumentError.new(); end
|
|
397
|
+
if not request['accessToken']; raise ArgumentError.new(); end
|
|
398
|
+
query = {}
|
|
399
|
+
header = {
|
|
400
|
+
'X-GS2-ACCESS-TOKEN' => request['accessToken']
|
|
401
|
+
}
|
|
402
|
+
return delete(
|
|
403
|
+
'Gs2Inbox',
|
|
404
|
+
'DeleteMessage',
|
|
405
|
+
@@ENDPOINT,
|
|
406
|
+
'/inbox/' + request['inboxName'] + '/message/' + request['messageId'],
|
|
407
|
+
query,
|
|
408
|
+
header);
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
# メッセージを複数同時に既読にする。<br>
|
|
412
|
+
# <br>
|
|
413
|
+
# 受信ボックスの設定で開封時自動削除設定が有効な場合は、メッセージは削除されます。<br>
|
|
414
|
+
# <br>
|
|
415
|
+
# 連携用URLを呼び出す設定になっている場合、連携用URLにメッセージIDを付与したコールバックが実行されます。<br>
|
|
416
|
+
# このコールバックをうけて、持ち物を増やしたりすることでメッセージにアイテムを添付することができます。<br>
|
|
417
|
+
# <br>
|
|
418
|
+
# レスポンスには連携用URLを呼び出した際の応答内容も含まれますので、開封時にさらにメッセージを表示させるようなこともできます。<br>
|
|
419
|
+
# 例えば、連携用URLを呼び出した際に「アイテムを手に入れた」というレスポンスを返すことで、このAPIのレスポンスにその文字列も含んだ形で応答されますので、<br>
|
|
420
|
+
# 開封時にさらにその応答メッセージを使って画面にメッセージとして「アイテムを手に入れた」という表示をすることができます。<br>
|
|
421
|
+
# <br>
|
|
422
|
+
# 開封時のコールバックは通信障害などの理由により、コールバック先のサーバは正しく処理を行えたけれど、<br>
|
|
423
|
+
# GS2側のインフラにレスポンスが届かず、結果的に処理が失敗する可能性を考慮する必要があります。<br>
|
|
424
|
+
# この場合、複数回の開封コールバックが呼び出される可能性がありますので、コールバック処理は冪等性を持った形で実装するようにしてください。<br>
|
|
425
|
+
# <br>
|
|
426
|
+
# accessToken には {http://static.docs.gs2.io/ruby/auth/Gs2/Auth/Client.html#login-instance_method Gs2::Auth::Client::login()} でログインして取得したアクセストークンを指定してください。<br>
|
|
427
|
+
#
|
|
428
|
+
# @param request [Array]
|
|
429
|
+
# * inboxName => 受信ボックス名
|
|
430
|
+
# * messageIds => メッセージIDリスト
|
|
431
|
+
# * accessToken => アクセストークン
|
|
432
|
+
# @return [Array]
|
|
433
|
+
# * items
|
|
434
|
+
# [Array]
|
|
435
|
+
# * messageId => メッセージID
|
|
436
|
+
# * inboxId => 受信ボックスID
|
|
437
|
+
# * userId => 受信ユーザID
|
|
438
|
+
# * message => メッセージ本文
|
|
439
|
+
# * cooperation => 開封時に連携用URLを呼び出すか
|
|
440
|
+
# * date => 受信日時
|
|
441
|
+
# * read => 既読状態
|
|
442
|
+
def read_messages(request)
|
|
443
|
+
if not request; raise ArgumentError.new(); end
|
|
444
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
445
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
446
|
+
if not request.has_key?('messageIds'); raise ArgumentError.new(); end
|
|
447
|
+
if not request['messageIds']; raise ArgumentError.new(); end
|
|
448
|
+
if not request.has_key?('accessToken'); raise ArgumentError.new(); end
|
|
449
|
+
if not request['accessToken']; raise ArgumentError.new(); end
|
|
450
|
+
body = {}
|
|
451
|
+
if request.has_key?('messageIds')
|
|
452
|
+
body['messageIds'] = request['messageIds']
|
|
453
|
+
if body['messageIds'].is_a?(Array); body['messageIds'] = body['messageIds'].join(','); end
|
|
454
|
+
end
|
|
455
|
+
query = {}
|
|
456
|
+
header = {
|
|
457
|
+
'X-GS2-ACCESS-TOKEN' => request['accessToken']
|
|
458
|
+
}
|
|
459
|
+
return post(
|
|
460
|
+
'Gs2Inbox',
|
|
461
|
+
'ReadMessages',
|
|
462
|
+
@@ENDPOINT,
|
|
463
|
+
'/inbox/' + request['inboxName'] + '/message/multiple',
|
|
464
|
+
body,
|
|
465
|
+
query,
|
|
466
|
+
header);
|
|
467
|
+
end
|
|
468
|
+
|
|
469
|
+
# メッセージを複数同時に削除する。<br>
|
|
470
|
+
# <br>
|
|
471
|
+
# accessToken には {http://static.docs.gs2.io/ruby/auth/Gs2/Auth/Client.html#login-instance_method Gs2::Auth::Client::login()} でログインして取得したアクセストークンを指定してください。<br>
|
|
472
|
+
#
|
|
473
|
+
# @param request [Array]
|
|
474
|
+
# * inboxName => 受信ボックス名
|
|
475
|
+
# * messageId => メッセージID
|
|
476
|
+
# * accessToken => アクセストークン
|
|
477
|
+
def delete_messages(request)
|
|
478
|
+
if not request; raise ArgumentError.new(); end
|
|
479
|
+
if not request.has_key?('inboxName'); raise ArgumentError.new(); end
|
|
480
|
+
if not request['inboxName']; raise ArgumentError.new(); end
|
|
481
|
+
if not request.has_key?('messageIds'); raise ArgumentError.new(); end
|
|
482
|
+
if not request['messageIds']; raise ArgumentError.new(); end
|
|
483
|
+
if not request.has_key?('accessToken'); raise ArgumentError.new(); end
|
|
484
|
+
if not request['accessToken']; raise ArgumentError.new(); end
|
|
485
|
+
query = {}
|
|
486
|
+
if request.has_key?('messageIds')
|
|
487
|
+
query['messageIds'] = request['messageIds']
|
|
488
|
+
if query['messageIds'].is_a?(Array); query['messageIds'] = query['messageIds'].join(','); end
|
|
489
|
+
end
|
|
490
|
+
header = {
|
|
491
|
+
'X-GS2-ACCESS-TOKEN' => request['accessToken']
|
|
492
|
+
}
|
|
493
|
+
return delete(
|
|
494
|
+
'Gs2Inbox',
|
|
495
|
+
'DeleteMessages',
|
|
496
|
+
@@ENDPOINT,
|
|
497
|
+
'/inbox/' + request['inboxName'] + '/message/multiple',
|
|
498
|
+
query,
|
|
499
|
+
header);
|
|
500
|
+
end
|
|
501
|
+
|
|
502
|
+
end
|
|
503
|
+
end end
|
metadata
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: gs2-ruby-sdk-inbox
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Game Server Services, Inc.
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-10-06 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: gs2-ruby-sdk-core
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 0.0.1
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 0.0.1
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: gs2-ruby-sdk-auth
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 0.0.1
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 0.0.1
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: bundler
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '1.12'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '1.12'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rake
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '10.0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '10.0'
|
|
69
|
+
description:
|
|
70
|
+
email:
|
|
71
|
+
- contact@gs2.io
|
|
72
|
+
executables: []
|
|
73
|
+
extensions: []
|
|
74
|
+
extra_rdoc_files: []
|
|
75
|
+
files:
|
|
76
|
+
- ".buildpath"
|
|
77
|
+
- ".gitignore"
|
|
78
|
+
- ".project"
|
|
79
|
+
- Gemfile
|
|
80
|
+
- README.md
|
|
81
|
+
- Rakefile
|
|
82
|
+
- bin/console
|
|
83
|
+
- bin/setup
|
|
84
|
+
- gs2-ruby-sdk-inbox.gemspec
|
|
85
|
+
- lib/gs2-inbox.rb
|
|
86
|
+
- lib/gs2/inbox/Client.rb
|
|
87
|
+
- lib/gs2/inbox/version.rb
|
|
88
|
+
homepage: https://gs2.io/
|
|
89
|
+
licenses:
|
|
90
|
+
- Apache-2.0
|
|
91
|
+
metadata: {}
|
|
92
|
+
post_install_message:
|
|
93
|
+
rdoc_options: []
|
|
94
|
+
require_paths:
|
|
95
|
+
- lib
|
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - ">="
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: '0'
|
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
|
+
requirements:
|
|
103
|
+
- - ">="
|
|
104
|
+
- !ruby/object:Gem::Version
|
|
105
|
+
version: '0'
|
|
106
|
+
requirements: []
|
|
107
|
+
rubyforge_project:
|
|
108
|
+
rubygems_version: 2.5.1
|
|
109
|
+
signing_key:
|
|
110
|
+
specification_version: 4
|
|
111
|
+
summary: Game Server Services GS2-Inbox Client Library
|
|
112
|
+
test_files: []
|