libgss 0.6.2 → 0.7.0
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 +4 -4
- data/Gemfile.lock +2 -2
- data/lib/libgss/async_action_request.rb +46 -0
- data/lib/libgss/http_client_with_signature_key.rb +67 -0
- data/lib/libgss/network.rb +8 -0
- data/lib/libgss/version.rb +1 -1
- data/lib/libgss.rb +1 -0
- data/spec/libgss/async_action_request_spec.rb +32 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f34218d9370b8d31892b2dc9bc43883c18d3c0b
|
4
|
+
data.tar.gz: d77691024b3ea4a7bb346f6aac4503896383e1c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea8da56f9d588bfd1b9d1970749ea87b7ed09a565caf8675ebf4c7ad7770223079f0331489a2daa97d20a7c82e425ea666df9ce1b4a00623b11e36249a18b255
|
7
|
+
data.tar.gz: 96bc30423526821e4074b20d1cfcc26d7a5f4f850955cfb77f902e43a1e7f2420b1a1e7d7c1227abf42a1f8da79154eb5deb2f6f253f38c5a0a7b8edf1758b13
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'libgss'
|
3
|
+
|
4
|
+
require 'net/http'
|
5
|
+
require 'uri'
|
6
|
+
|
7
|
+
module Libgss
|
8
|
+
|
9
|
+
class AsyncActionRequest < ActionRequest
|
10
|
+
|
11
|
+
attr_reader :ids
|
12
|
+
attr_accessor :action_id
|
13
|
+
|
14
|
+
# アクション群を実行するために実際にHTTPリクエストを送信します。
|
15
|
+
def send_request(&callback)
|
16
|
+
res = @httpclient.post(action_url, {"inputs" => @actions.map(&:to_hash)}.to_json, req_headers)
|
17
|
+
case res.code.to_i
|
18
|
+
when 200..299 then # OK
|
19
|
+
else
|
20
|
+
raise Error, "failed to send action request: [#{res.code}] #{res.body}"
|
21
|
+
end
|
22
|
+
r = JSON.parse(res.body)
|
23
|
+
# puts res.body
|
24
|
+
@outputs = Outputs.new(r["outputs"])
|
25
|
+
callback.call(@outputs) if callback
|
26
|
+
|
27
|
+
@ids = @outputs.map do |output|
|
28
|
+
output['id']
|
29
|
+
end
|
30
|
+
|
31
|
+
@outputs
|
32
|
+
end
|
33
|
+
|
34
|
+
def async_status()
|
35
|
+
raise Error, "failed to get response. please exec send_request before call." unless @ids
|
36
|
+
|
37
|
+
res = @httpclient.get(action_url, {input_ids: @ids.join(',')}, req_headers)
|
38
|
+
case res.code.to_i
|
39
|
+
when 200..299 then # OK
|
40
|
+
else
|
41
|
+
raise Error, "failed to send action request: [#{res.code}] #{res.body}"
|
42
|
+
end
|
43
|
+
r = JSON.parse(res.body)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -5,6 +5,11 @@ require 'oauth'
|
|
5
5
|
|
6
6
|
require 'digest/hmac'
|
7
7
|
|
8
|
+
require 'uri'
|
9
|
+
|
10
|
+
require 'securerandom'
|
11
|
+
|
12
|
+
|
8
13
|
module Libgss
|
9
14
|
class HttpClientWithSignatureKey
|
10
15
|
|
@@ -17,6 +22,8 @@ module Libgss
|
|
17
22
|
headers = {
|
18
23
|
"oauth_consumer_key" => network.consumer_key || "",
|
19
24
|
"oauth_token" => network.auth_token,
|
25
|
+
"oauth_nonce" => oauth_nonce,
|
26
|
+
"oauth_timestamp" => oauth_timestamp,
|
20
27
|
}
|
21
28
|
oauth_params = {
|
22
29
|
"body" => body,
|
@@ -42,6 +49,66 @@ module Libgss
|
|
42
49
|
res = @impl.post(uri, body, headers.update(original_headers))
|
43
50
|
end
|
44
51
|
|
52
|
+
def get(uri, query={}, original_headers = {}, &block)
|
53
|
+
headers = {
|
54
|
+
"oauth_consumer_key" => network.consumer_key || "",
|
55
|
+
"oauth_token" => network.auth_token,
|
56
|
+
"oauth_nonce" => oauth_nonce,
|
57
|
+
"oauth_timestamp" => oauth_timestamp,
|
58
|
+
}
|
59
|
+
oauth_params = {
|
60
|
+
"oauth_signature_method" => "HMAC-SHA1"
|
61
|
+
}.update(headers)
|
62
|
+
|
63
|
+
encoded_query = ''
|
64
|
+
query.each do |key, val|
|
65
|
+
key = key.to_s
|
66
|
+
if val.is_a?(::Array)
|
67
|
+
k = CGI.escape("#{key}[]")
|
68
|
+
val.each do |v|
|
69
|
+
encoded_query << "&#{k}=#{URI.escape(v.to_s)}"
|
70
|
+
end
|
71
|
+
elsif val.is_a?(::Hash)
|
72
|
+
val.each do |k, v|
|
73
|
+
k = URI.escape("#{key}[#{k}]")
|
74
|
+
encoded_query << "&#{k}=#{URI.escape(v.to_s)}"
|
75
|
+
end
|
76
|
+
else
|
77
|
+
encoded_query << "&#{URI.escape(key)}=#{URI.escape(val.to_s)}"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
if uri =~ /\?/
|
81
|
+
uri += encoded_query
|
82
|
+
else
|
83
|
+
uri += encoded_query.gsub(/^&/, '?')
|
84
|
+
end
|
85
|
+
req_hash = {
|
86
|
+
"method" => "POST",
|
87
|
+
"uri" => uri,
|
88
|
+
"parameters" => oauth_params
|
89
|
+
}
|
90
|
+
|
91
|
+
options = {
|
92
|
+
:consumer_secret => network.consumer_secret,
|
93
|
+
:token_secret => network.signature_key
|
94
|
+
}
|
95
|
+
|
96
|
+
signature_class = Libgss.use_oauth_gem ? ::OAuth::Signature : Signature
|
97
|
+
$stdout.puts("signature_class: #{signature_class.name}") if ENV["VERBOSE"]
|
98
|
+
|
99
|
+
headers["oauth_signature"] = signature_class.sign(req_hash, options)
|
100
|
+
|
101
|
+
res = @impl.get(uri, nil, headers.update(original_headers))
|
102
|
+
end
|
103
|
+
|
104
|
+
def oauth_nonce
|
105
|
+
SecureRandom.uuid.to_s
|
106
|
+
end
|
107
|
+
|
108
|
+
def oauth_timestamp
|
109
|
+
Time.now.utc.to_i
|
110
|
+
end
|
111
|
+
|
45
112
|
class Signature
|
46
113
|
class << self
|
47
114
|
def sign(req_hash, options)
|
data/lib/libgss/network.rb
CHANGED
@@ -117,6 +117,10 @@ module Libgss
|
|
117
117
|
ActionRequest.new(httpclient_for_action, action_url, req_headers)
|
118
118
|
end
|
119
119
|
|
120
|
+
def new_async_action_request
|
121
|
+
AsyncActionRequest.new(httpclient_for_action, aync_action_url, req_headers)
|
122
|
+
end
|
123
|
+
|
120
124
|
def new_public_asset_request(asset_path)
|
121
125
|
AssetRequest.new(@httpclient, public_asset_url(asset_path), req_headers)
|
122
126
|
end
|
@@ -179,6 +183,10 @@ module Libgss
|
|
179
183
|
@action_url ||= base_url + "/api/#{API_VERSION}/actions.json?auth_token=#{auth_token}"
|
180
184
|
end
|
181
185
|
|
186
|
+
def aync_action_url
|
187
|
+
@async_action_url ||= base_url + "/api/#{API_VERSION}/async_actions.json?auth_token=#{auth_token}"
|
188
|
+
end
|
189
|
+
|
182
190
|
def public_asset_url(asset_path)
|
183
191
|
"#{@public_asset_url_prefix}#{asset_path}#{@public_asset_url_suffix}"
|
184
192
|
end
|
data/lib/libgss/version.rb
CHANGED
data/lib/libgss.rb
CHANGED
@@ -5,6 +5,7 @@ module Libgss
|
|
5
5
|
autoload :Network , "libgss/network"
|
6
6
|
autoload :Action , "libgss/action"
|
7
7
|
autoload :ActionRequest, "libgss/action_request"
|
8
|
+
autoload :AsyncActionRequest, "libgss/async_action_request"
|
8
9
|
autoload :Outputs , "libgss/outputs"
|
9
10
|
autoload :HttpClientWithSignatureKey, "libgss/http_client_with_signature_key"
|
10
11
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Libgss::AsyncActionRequest do
|
5
|
+
before do
|
6
|
+
request_fixture_load("01_basic")
|
7
|
+
end
|
8
|
+
|
9
|
+
let(:network) do
|
10
|
+
network = new_network
|
11
|
+
network.login.should == true
|
12
|
+
network
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:request) do
|
16
|
+
network.new_async_action_request
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#get" do
|
20
|
+
context "Player" do
|
21
|
+
it do
|
22
|
+
request.get_by_player
|
23
|
+
request.send_request do |outputs|
|
24
|
+
outputs.length.should == 1
|
25
|
+
outputs[0]['status'].should eq('executing')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libgss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- akima
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -131,6 +131,7 @@ files:
|
|
131
131
|
- lib/libgss/action.rb
|
132
132
|
- lib/libgss/action_request.rb
|
133
133
|
- lib/libgss/asset_request.rb
|
134
|
+
- lib/libgss/async_action_request.rb
|
134
135
|
- lib/libgss/fontana.rb
|
135
136
|
- lib/libgss/http_client_with_signature_key.rb
|
136
137
|
- lib/libgss/network.rb
|
@@ -148,6 +149,7 @@ files:
|
|
148
149
|
- spec/libgss/actions/ruby_stored_script_spec.rb
|
149
150
|
- spec/libgss/actions/schedule_spec.rb
|
150
151
|
- spec/libgss/asset_request_spec.rb
|
152
|
+
- spec/libgss/async_action_request_spec.rb
|
151
153
|
- spec/libgss/network_spec.rb
|
152
154
|
- spec/protected_assets/Icon.png
|
153
155
|
- spec/public_assets/Default.png
|
@@ -188,6 +190,7 @@ test_files:
|
|
188
190
|
- spec/libgss/actions/ruby_stored_script_spec.rb
|
189
191
|
- spec/libgss/actions/schedule_spec.rb
|
190
192
|
- spec/libgss/asset_request_spec.rb
|
193
|
+
- spec/libgss/async_action_request_spec.rb
|
191
194
|
- spec/libgss/network_spec.rb
|
192
195
|
- spec/protected_assets/Icon.png
|
193
196
|
- spec/public_assets/Default.png
|