gs2-ruby-sdk-stamina 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3b0bee334d7e80df544657c5e50dbea608a2d4e7
4
+ data.tar.gz: c7a6e704ff1b4732547ae3f05eb180bfa30c17c7
5
+ SHA512:
6
+ metadata.gz: ca05c62d2e90b6f843d2d6adbef559ec520dbcffc03c222232f429cbb692bd50a77372f852974732e221c95745689fbe632c3917cf0b1ed2631f68640bce8360
7
+ data.tar.gz: 014e1d5d009dc27f1d73d141a6f9275a0dd1361bb53c55120d667cec968fe615a00d7f4cdf8a7c7f34ddfb2a2acd1d75999ea570e0b897f7e61f0fab6392e201
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-stamina</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-stamina
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/stamina"
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/stamina/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "gs2-ruby-sdk-stamina"
8
+ spec.version = Gs2::Stamina::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-Stamina 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
@@ -0,0 +1,292 @@
1
+ require 'gs2/core/AbstractClient.rb'
2
+
3
+ module Gs2 module Stamina
4
+
5
+ # GS2-Stamina クライアント
6
+ #
7
+ # @author Game Server Services, Inc.
8
+ class Client < Gs2::Core::AbstractClient
9
+
10
+ @@ENDPOINT = 'stamina'
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
+ # * staminaPoolId => スタミナプールID
38
+ # * ownerId => オーナーID
39
+ # * name => スタミナプール名
40
+ # * description => 説明文
41
+ # * serviceClass => サービスクラス
42
+ # * increaseInterval => スタミナの更新速度
43
+ # * createAt => 作成日時
44
+ # * nextPageToken => 次ページトークン
45
+ def describe_stamina_pool(pageToken = nil, limit = nil)
46
+ query = {}
47
+ if pageToken; query['pageToken'] = pageToken; end
48
+ if limit; query['limit'] = limit; end
49
+ return get(
50
+ 'Gs2Stamina',
51
+ 'DescribeStaminaPool',
52
+ @@ENDPOINT,
53
+ '/staminaPool',
54
+ query);
55
+ end
56
+
57
+ # スタミナプールを作成<br>
58
+ # <br>
59
+ # GS2-Staminaを利用するには、まずスタミナプールを作成する必要があります。<br>
60
+ # スタミナプールには複数のユーザのスタミナ値を格納することができます。<br>
61
+ # <br>
62
+ # スタミナプールの設定として、スタミナ値の回復速度を秒単位で指定できます。<br>
63
+ # この設定値を利用して、スタミナ値の回復処理を行いつつユーザごとに最新のスタミナ値を取得することができます。<br>
64
+ #
65
+ # @param request [Array]
66
+ # * name => スタミナプール名
67
+ # * description => 説明文
68
+ # * serviceClass => サービスクラス
69
+ # * increaseInterval => スタミナの更新速度
70
+ # @return [Array]
71
+ # * item
72
+ # * staminaPoolId => スタミナプールID
73
+ # * ownerId => オーナーID
74
+ # * name => スタミナプール名
75
+ # * description => 説明文
76
+ # * serviceClass => サービスクラス
77
+ # * increaseInterval => スタミナの更新速度
78
+ # * createAt => 作成日時
79
+ def create_stamina_pool(request)
80
+ if not request; raise ArgumentError.new(); end
81
+ body = {}
82
+ if request.has_key?('name'); body['name'] = request['name']; end
83
+ if request.has_key?('description'); body['description'] = request['description']; end
84
+ if request.has_key?('serviceClass'); body['serviceClass'] = request['serviceClass']; end
85
+ if request.has_key?('increaseInterval'); body['increaseInterval'] = request['increaseInterval']; end
86
+ query = {}
87
+ return post(
88
+ 'Gs2Stamina',
89
+ 'CreateStaminaPool',
90
+ @@ENDPOINT,
91
+ '/staminaPool',
92
+ body,
93
+ query);
94
+ end
95
+
96
+ # サービスクラスリストを取得
97
+ #
98
+ # @return [Array] サービスクラス
99
+ def describeServiceClass()
100
+ query = {}
101
+ result = get(
102
+ 'Gs2Stamina',
103
+ 'DescribeServiceClass',
104
+ @@ENDPOINT,
105
+ '/staminaPool/serviceClass',
106
+ query);
107
+ return result['items'];
108
+ end
109
+
110
+ # スタミナプールを取得
111
+ #
112
+ # @param request [Array]
113
+ # * staminaPoolName => スタミナプール名
114
+ # @return [Array]
115
+ # * item
116
+ # * staminaPoolId => スタミナプールID
117
+ # * ownerId => オーナーID
118
+ # * name => スタミナプール名
119
+ # * description => 説明文
120
+ # * serviceClass => サービスクラス
121
+ # * increaseInterval => スタミナの更新速度
122
+ # * createAt => 作成日時
123
+ def get_stamina_pool(request)
124
+ if not request; raise ArgumentError.new(); end
125
+ if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end
126
+ if not request['staminaPoolName']; raise ArgumentError.new(); end
127
+ query = {}
128
+ return get(
129
+ 'Gs2Stamina',
130
+ 'GetStaminaPool',
131
+ @@ENDPOINT,
132
+ '/staminaPool/' + request['staminaPoolName'],
133
+ query);
134
+ end
135
+
136
+ # スタミナプールの状態を取得
137
+ #
138
+ # @param request [Array]
139
+ # * staminaPoolName => スタミナプール名
140
+ # @return [Array]
141
+ # * status => 状態
142
+ def get_stamina_pool_status(request)
143
+ if not request; raise ArgumentError.new(); end
144
+ if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end
145
+ if not request['staminaPoolName']; raise ArgumentError.new(); end
146
+ query = {}
147
+ return get(
148
+ 'Gs2Stamina',
149
+ 'GetStaminaPoolStatus',
150
+ @@ENDPOINT,
151
+ '/staminaPool/' + request['staminaPoolName'] + '/status',
152
+ query);
153
+ end
154
+
155
+ # スタミナプールを更新
156
+ #
157
+ # @param request [Array]
158
+ # * staminaPoolName => スタミナプール名
159
+ # * description => 説明文
160
+ # * serviceClass => サービスクラス
161
+ # * increaseInterval => スタミナの更新速度
162
+ # @return [Array]
163
+ # * item
164
+ # * staminaPoolId => スタミナプールID
165
+ # * ownerId => オーナーID
166
+ # * name => スタミナプール名
167
+ # * description => 説明文
168
+ # * serviceClass => サービスクラス
169
+ # * increaseInterval => スタミナの更新速度
170
+ # * createAt => 作成日時
171
+ def update_stamina_pool(request)
172
+ if not request; raise ArgumentError.new(); end
173
+ if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end
174
+ if not request['staminaPoolName']; raise ArgumentError.new(); end
175
+ body = {}
176
+ if request.has_key?('description'); body['description'] = request['description']; end
177
+ if request.has_key?('serviceClass'); body['serviceClass'] = request['serviceClass']; end
178
+ if request.has_key?('increaseInterval'); body['increaseInterval'] = request['increaseInterval']; end
179
+ query = {}
180
+ return put(
181
+ 'Gs2Stamina',
182
+ 'UpdateStaminaPool',
183
+ @@ENDPOINT,
184
+ '/staminaPool/' + request['staminaPoolName'],
185
+ body,
186
+ query);
187
+ end
188
+
189
+ # スタミナプールを削除
190
+ #
191
+ # @param request [Array]
192
+ # * staminaPoolName => スタミナプール名
193
+ def delete_stamina_pool(request)
194
+ if not request; raise ArgumentError.new(); end
195
+ if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end
196
+ if not request['staminaPoolName']; raise ArgumentError.new(); end
197
+ query = {}
198
+ return delete(
199
+ 'Gs2Stamina',
200
+ 'DeleteStaminaPool',
201
+ @@ENDPOINT,
202
+ '/staminaPool/' + request['staminaPoolName'],
203
+ query);
204
+ end
205
+
206
+ # スタミナ値を取得<br>
207
+ # <br>
208
+ # 指定したユーザの最新のスタミナ値を取得します。<br>
209
+ # 回復処理などが行われた状態の値が応答されますので、そのままゲームで利用いただけます。<br>
210
+ # <br>
211
+ # accessToken には {http://static.docs.gs2.io/ruby/auth/Gs2/Auth/Client.html#login-instance_method Gs2::Auth::Client::login()} でログインして取得したアクセストークンを指定してください。<br>
212
+ #
213
+ # @param request [Array]
214
+ # * staminaPoolName => スタミナプール名
215
+ # * maxValue => スタミナ値の最大値
216
+ # * accessToken => アクセストークン
217
+ # @return [Array]
218
+ # * item
219
+ # * userId => ユーザID
220
+ # * value => スタミナ値
221
+ # * overflow => 最大値を超えているスタミナ値
222
+ # * lastUpdateAt => 更新日時
223
+ # * nextIncreaseTimestamp => 次回スタミナ値が回復するタイムスタンプ(unixepoch)
224
+ def get_stamina(request)
225
+ if not request; raise ArgumentError.new(); end
226
+ if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end
227
+ if not request['staminaPoolName']; raise ArgumentError.new(); end
228
+ if not request.has_key?('accessToken'); raise ArgumentError.new(); end
229
+ if not request['accessToken']; raise ArgumentError.new(); end
230
+ query = {}
231
+ if request.has_key?('maxValue'); query['maxValue'] = request['maxValue']; end
232
+ header = {
233
+ 'X-GS2-ACCESS-TOKEN' => request['accessToken']
234
+ }
235
+ return get(
236
+ 'Gs2Stamina',
237
+ 'GetStamina',
238
+ @@ENDPOINT,
239
+ '/staminaPool/' + request['staminaPoolName'] + '/stamina',
240
+ query,
241
+ header);
242
+ end
243
+
244
+ # スタミナ値を増減させる<br>
245
+ # <br>
246
+ # 同一ユーザに対するスタミナ値の増減処理が衝突した場合は、後でリクエストを出した側の処理が失敗します。<br>
247
+ # そのため、同時に複数のデバイスを利用してゲームを遊んでいる際に、一斉にクエストを開始することで1回分のスタミナ消費で2回ゲームが遊べてしまう。<br>
248
+ # というような不正行為を防ぐことが出来るようになっています。<br>
249
+ # <br>
250
+ # クエストに失敗した時に消費したスタミナ値を戻してあげる際や、スタミナ値の回復アイテムを利用した際などに<br>
251
+ # スタミナ値を増やす操作を行うことになりますが、その際に overflow に true を指定することで、スタミナ値の最大値を超える回復を行えます。<br>
252
+ # スタミナ値の上限を超えた部分は overflow フィールドに格納され、優先してそちらが消費されます。<br>
253
+ # <br>
254
+ # accessToken には {http://static.docs.gs2.io/ruby/auth/Gs2/Auth/Client.html#login-instance_method Gs2::Auth::Client::login()} でログインして取得したアクセストークンを指定してください。<br>
255
+ #
256
+ # @param request [Array]
257
+ # * staminaPoolName => スタミナプール名
258
+ # * variation => スタミナ値の増減量
259
+ # * maxValue => スタミナ値の最大値
260
+ # * overflow => スタミナ値の最大値を超えることを許容するか
261
+ # * accessToken => アクセストークン
262
+ # @return [Array]
263
+ # * item
264
+ # * userId => ユーザID
265
+ # * value => スタミナ値
266
+ # * overflow => 最大値を超えているスタミナ値
267
+ # * lastUpdateAt => 更新日時
268
+ def change_stamina(request)
269
+ if not request; raise ArgumentError.new(); end
270
+ if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end
271
+ if not request['staminaPoolName']; raise ArgumentError.new(); end
272
+ if not request.has_key?('accessToken'); raise ArgumentError.new(); end
273
+ if not request['accessToken']; raise ArgumentError.new(); end
274
+ body = {}
275
+ if request.has_key?('variation'); body['variation'] = request['variation']; end
276
+ if request.has_key?('maxValue'); body['maxValue'] = request['maxValue']; end
277
+ if request.has_key?('overflow'); body['overflow'] = request['overflow']; end
278
+ query = {}
279
+ header = {
280
+ 'X-GS2-ACCESS-TOKEN' => request['accessToken']
281
+ }
282
+ return post(
283
+ 'Gs2Stamina',
284
+ 'ChangeStamina',
285
+ @@ENDPOINT,
286
+ '/staminaPool/' + request['staminaPoolName'] + '/stamina',
287
+ body,
288
+ query,
289
+ header);
290
+ end
291
+ end
292
+ end end
@@ -0,0 +1,5 @@
1
+ module Gs2
2
+ module Stamina
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1 @@
1
+ require 'gs2/stamina/Client.rb'
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gs2-ruby-sdk-stamina
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-stamina.gemspec
85
+ - lib/gs2-stamina.rb
86
+ - lib/gs2/stamina/Client.rb
87
+ - lib/gs2/stamina/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-Stamina Client Library
112
+ test_files: []