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 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
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <buildpath>
3
+ <buildpathentry kind="src" path="lib"/>
4
+ <buildpathentry kind="con" path="org.eclipse.dltk.launching.INTERPRETER_CONTAINER"/>
5
+ </buildpath>
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .DS_Store
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
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+ gem 'test-unit', '3.1.0'
5
+ gem "simplecov", "~> 0.11"
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ gs2-ruby-sdk-inbox
2
+ ===============
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
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,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -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
@@ -0,0 +1,5 @@
1
+ module Gs2
2
+ module Inbox
3
+ VERSION = "0.0.1"
4
+ end
5
+ 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: []