gs2-ruby-sdk-stamina 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: 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: []