Class: Libgss::ActionRequest
- Inherits:
-
Object
- Object
- Libgss::ActionRequest
- Defined in:
- lib/libgss/action_request.rb
Direct Known Subclasses
Defined Under Namespace
Classes: Error
Constant Summary collapse
- STATUS_PREPARING =
0- STATUS_SENDING =
1- STATUS_WAITING =
2- STATUS_RECEIVED =
3- STATUS_SUCCESS =
4- STATUS_ERROR =
5- STATUS_TIMEOUT =
6
Instance Attribute Summary collapse
-
#action_url ⇒ Object
readonly
読み込みのみ、書き込み不可.
-
#outputs ⇒ Object
readonly
Returns the value of attribute outputs.
-
#req_headers ⇒ Object
readonly
読み込みのみ、書き込み不可.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
Instance Method Summary collapse
- #add_action(hash) ⇒ Object
-
#apply(name, target) ⇒ Object
フレンドシップを申請をします。.
-
#approve(name, target) ⇒ Object
フレンドシップの申請を承認します。.
-
#block(name, target) ⇒ Object
フレンドをブロック(ブラックリスト追加)します。.
-
#breakoff(name, target) ⇒ Object
フレンドシップの申請のキャンセル、申請却下、フレンド解除をします。.
-
#count(name, conditions = nil) ⇒ Integer
条件に該当するデータを取得.
-
#create(name, attrs) ⇒ Object
ログあるいは履歴を登録します。.
-
#dice(name, conditions = nil) ⇒ Object
確率テーブルに従って、発生させた乱数から得られた値.
-
#execute(name, key, args = nil) ⇒ Object
ストアドスクリプトを実行します。.
-
#find_all(name, conditions = nil, order = nil) ⇒ Array<Libgss::JsonObject>
条件に該当するデータを取得.
-
#find_first(name, conditions = nil, order = nil) ⇒ Libgss::JsonObject
条件に該当するデータを1件だけ取得.
-
#get_by_dictionary(name, input, conditions = nil) ⇒ Object
辞書テーブルからinputに対応するoutputの値を返します。.
-
#get_by_game_data(name = "GameData", player_id = nil) ⇒ Object
ゲームデータからplayer_idに対応するゲームデータを返します.
-
#get_by_int_range(name, input, conditions = nil) ⇒ Object
整数範囲テーブルからinputに対応するoutputの値を返します。.
-
#get_by_player(name = "Player", player_id = nil) ⇒ Object
プレイヤーからplayer_idに対応するプレイヤーを返します.
-
#get_by_probability(name, value, conditions = nil) ⇒ Object
確率テーブルからinputに対応するoutputの値を返します。 diceがあるのであまり使われないはず。.
-
#get_by_schedule(name, time = Time.now.to_i, conditions = nil) ⇒ Object
期間テーブルからinputに対応するoutputの値を返します。.
-
#initialize(httpclient, action_url, req_headers) ⇒ ActionRequest
constructor
コンストラクタ.
- #inspect ⇒ Object
-
#master_diffs(downloaded_versions) ⇒ Object
マスタの差分を取得します.
- #next_action_id ⇒ Object
-
#paginate(name, page, per_page, conditions = nil, order = nil) ⇒ Array<Libgss::JsonObject>
ページネーション付きで条件に該当するデータを取得.
-
#send_request(&callback) ⇒ Object
アクション群を実行するために実際にHTTPリクエストを送信します。.
-
#server_date(time = nil) ⇒ Date
引数timeに指定された時刻の運用日付を返します。 「運用日付」とは AppGarden ので 設定された時刻を日付の開始時刻とした場合の日付(Ruby ストアドスクリプト内ではDateオブジェクト)を返します。.
-
#server_time ⇒ Time
サーバの現在時刻を返します。.
-
#unblock(name, target) ⇒ Object
フレンドをブロックの解除(ブラックリストから除外)します。.
-
#update(name, attrs, player_id = nil) ⇒ Object
プレイヤー、ゲームデータを更新します。.
Constructor Details
#initialize(httpclient, action_url, req_headers) ⇒ ActionRequest
コンストラクタ
28 29 30 31 32 33 34 35 |
# File 'lib/libgss/action_request.rb', line 28 def initialize(httpclient, action_url, req_headers) @httpclient = httpclient @action_url = action_url @req_headers = req_headers @status = STATUS_PREPARING @actions = [] @action_id = 0; end |
Instance Attribute Details
#action_url ⇒ Object (readonly)
読み込みのみ、書き込み不可
24 25 26 |
# File 'lib/libgss/action_request.rb', line 24 def action_url @action_url end |
#outputs ⇒ Object (readonly)
Returns the value of attribute outputs.
25 26 27 |
# File 'lib/libgss/action_request.rb', line 25 def outputs @outputs end |
#req_headers ⇒ Object (readonly)
読み込みのみ、書き込み不可
24 25 26 |
# File 'lib/libgss/action_request.rb', line 24 def req_headers @req_headers end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
25 26 27 |
# File 'lib/libgss/action_request.rb', line 25 def status @status end |
Instance Method Details
#add_action(hash) ⇒ Object
47 48 49 50 51 |
# File 'lib/libgss/action_request.rb', line 47 def add_action(hash) action = Action.new(next_action_id, hash) @actions << action action end |
#apply(name, target) ⇒ Object
フレンドシップを申請をします。
277 278 279 280 |
# File 'lib/libgss/action_request.rb', line 277 def apply(name, target) args = {action: "apply", name: name, target: target} add_action(args) end |
#approve(name, target) ⇒ Object
フレンドシップの申請を承認します。
286 287 288 289 |
# File 'lib/libgss/action_request.rb', line 286 def approve(name, target) args = {action: "approve", name: name, target: target} add_action(args) end |
#block(name, target) ⇒ Object
フレンドをブロック(ブラックリスト追加)します。
304 305 306 307 |
# File 'lib/libgss/action_request.rb', line 304 def block(name, target) args = {action: "block", name: name, target: target} add_action(args) end |
#breakoff(name, target) ⇒ Object
フレンドシップの申請のキャンセル、申請却下、フレンド解除をします。
295 296 297 298 |
# File 'lib/libgss/action_request.rb', line 295 def breakoff(name, target) args = {action: "breakoff", name: name, target: target} add_action(args) end |
#count(name, conditions = nil) ⇒ Integer
条件に該当するデータを取得
100 101 102 103 104 |
# File 'lib/libgss/action_request.rb', line 100 def count(name, conditions = nil) args = {action: "count", name: name} args[:conditions] = conditions if conditions add_action(args) end |
#create(name, attrs) ⇒ Object
ログあるいは履歴を登録します。
198 199 200 201 |
# File 'lib/libgss/action_request.rb', line 198 def create(name, attrs) args = {action: "create", name: name, attrs: attrs} add_action(args) end |
#dice(name, conditions = nil) ⇒ Object
確率テーブルに従って、発生させた乱数から得られた値
219 220 221 222 223 |
# File 'lib/libgss/action_request.rb', line 219 def dice(name, conditions = nil) args = {action: "dice", name: name} args[:conditions] = conditions if conditions add_action(args) end |
#execute(name, key, args = nil) ⇒ Object
ストアドスクリプトを実行します。
230 231 232 233 234 |
# File 'lib/libgss/action_request.rb', line 230 def execute(name, key, args = nil) action_args = {action: "execute", name: name, key: key} action_args[:args] = args if args add_action(action_args) end |
#find_all(name, conditions = nil, order = nil) ⇒ Array<Libgss::JsonObject>
条件に該当するデータを取得
75 76 77 78 79 80 |
# File 'lib/libgss/action_request.rb', line 75 def find_all(name, conditions = nil, order = nil) args = {action: "all", name: name} args[:conditions] = conditions if conditions args[:order] = order if order add_action(args) end |
#find_first(name, conditions = nil, order = nil) ⇒ Libgss::JsonObject
条件に該当するデータを1件だけ取得
111 112 113 114 115 116 |
# File 'lib/libgss/action_request.rb', line 111 def find_first(name, conditions = nil, order = nil) args = {action: "first", name: name} args[:conditions] = conditions if conditions args[:order] = order if order add_action(args) end |
#get_by_dictionary(name, input, conditions = nil) ⇒ Object
辞書テーブルからinputに対応するoutputの値を返します。
123 124 125 126 127 |
# File 'lib/libgss/action_request.rb', line 123 def get_by_dictionary(name, input, conditions = nil) args = {action: "get", name: name, input: input} args[:conditions] = conditions if conditions add_action(args) end |
#get_by_game_data(name = "GameData", player_id = nil) ⇒ Object
ゲームデータからplayer_idに対応するゲームデータを返します
183 184 185 186 187 188 |
# File 'lib/libgss/action_request.rb', line 183 def get_by_game_data(name = "GameData", player_id = nil) args = {action: "get"} args[:name] = name if name args[:player_id] = player_id.to_s if player_id add_action(args) end |
#get_by_int_range(name, input, conditions = nil) ⇒ Object
整数範囲テーブルからinputに対応するoutputの値を返します。
145 146 147 148 149 |
# File 'lib/libgss/action_request.rb', line 145 def get_by_int_range(name, input, conditions = nil) args = {action: "get", name: name, input: input} args[:conditions] = conditions if conditions add_action(args) end |
#get_by_player(name = "Player", player_id = nil) ⇒ Object
プレイヤーからplayer_idに対応するプレイヤーを返します
170 171 172 173 174 175 |
# File 'lib/libgss/action_request.rb', line 170 def get_by_player(name = "Player", player_id = nil) args = {action: "get"} args[:name] = name if name args[:player_id] = player_id.to_s if player_id add_action(args) end |
#get_by_probability(name, value, conditions = nil) ⇒ Object
確率テーブルからinputに対応するoutputの値を返します。diceがあるのであまり使われないはず。
158 159 160 161 162 |
# File 'lib/libgss/action_request.rb', line 158 def get_by_probability(name, value, conditions = nil) args = {action: "get", name: name, value: value} args[:conditions] = conditions if conditions add_action(args) end |
#get_by_schedule(name, time = Time.now.to_i, conditions = nil) ⇒ Object
期間テーブルからinputに対応するoutputの値を返します。
134 135 136 137 138 |
# File 'lib/libgss/action_request.rb', line 134 def get_by_schedule(name, time = Time.now.to_i, conditions = nil) args = {action: "get", name: name, time: time} args[:conditions] = conditions if conditions add_action(args) end |
#inspect ⇒ Object
37 38 39 40 41 |
# File 'lib/libgss/action_request.rb', line 37 def inspect r = "#<#{self.class.name}:#{self.object_id} " fields = (instance_variables - [:@httpclient]).map{|f| "#{f}=#{instance_variable_get(f).inspect}"} r << fields.join(", ") << ">" end |
#master_diffs(downloaded_versions) ⇒ Object
マスタの差分を取得します
322 323 324 325 |
# File 'lib/libgss/action_request.rb', line 322 def master_diffs(downloaded_versions) args = {action: "master_diffs", downloaded_versions: downloaded_versions} add_action(args) end |
#next_action_id ⇒ Object
43 44 45 |
# File 'lib/libgss/action_request.rb', line 43 def next_action_id @action_id += 1 end |
#paginate(name, page, per_page, conditions = nil, order = nil) ⇒ Array<Libgss::JsonObject>
ページネーション付きで条件に該当するデータを取得
89 90 91 92 93 94 |
# File 'lib/libgss/action_request.rb', line 89 def paginate(name, page, per_page, conditions = nil, order = nil) args = {action: "all", name: name, page: page, per_page: per_page} args[:conditions] = conditions if conditions args[:order] = order if order add_action(args) end |
#send_request(&callback) ⇒ Object
アクション群を実行するために実際にHTTPリクエストを送信します。
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/libgss/action_request.rb', line 54 def send_request(&callback) res = Libgss.with_retry("action_request") do @httpclient.post(action_url, {"inputs" => @actions.map(&:to_hash)}.to_json, req_headers) end case res.code.to_i when 200..299 then # OK else raise Error, "failed to send action request: [#{res.code}] #{res.body}" end r = JSON.parse(res.body) # puts res.body @outputs = Outputs.new(r["outputs"]) callback.call(@outputs) if callback @outputs end |
#server_date(time = nil) ⇒ Date
引数timeに指定された時刻の運用日付を返します。「運用日付」とは AppGarden ので設定された時刻を日付の開始時刻とした場合の日付(Ruby ストアドスクリプト内ではDateオブジェクト)を返します。
251 252 253 254 255 |
# File 'lib/libgss/action_request.rb', line 251 def server_date(time = nil) args = {action: "server_date"} args[:time] = time if time add_action(args) end |
#server_time ⇒ Time
サーバの現在時刻を返します。
240 241 242 |
# File 'lib/libgss/action_request.rb', line 240 def server_time() add_action(action: "server_time") end |
#unblock(name, target) ⇒ Object
フレンドをブロックの解除(ブラックリストから除外)します。
313 314 315 316 |
# File 'lib/libgss/action_request.rb', line 313 def unblock(name, target) args = {action: "unblock", name: name, target: target} add_action(args) end |
#update(name, attrs, player_id = nil) ⇒ Object
プレイヤー、ゲームデータを更新します。
208 209 210 211 212 |
# File 'lib/libgss/action_request.rb', line 208 def update(name, attrs, player_id = nil) args = {action: "update", name: name, attrs: attrs} args[:player_id] = player_id.to_s if player_id add_action(args) end |