libgss 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitmodules +3 -0
- data/Rakefile +40 -0
- data/bin/gss-server-time +68 -0
- data/lib/libgss.rb +1 -0
- data/lib/libgss/action_request.rb +9 -0
- data/lib/libgss/fontana.rb +16 -0
- data/lib/libgss/network.rb +2 -1
- data/lib/libgss/version.rb +1 -1
- data/spec/libgss/network_spec.rb +1 -1
- data/spec/spec_helper.rb +7 -4
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTY1Y2NkY2JlMzViNGQ4YzczYTQyMmY1MThiZDFhZDQzOGMwMmY3Nw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MzY4M2Q0N2Y3NjRhMmMyYmJjNjM3MzIxNTdhMzY2ZGU0NmViNGQ4NA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzAxOWExYTUwYjMwOWNhOWQ0ZTVlMjIyMDQyOGI5Y2ExN2E2MzlmYjFmNzdi
|
10
|
+
MmU3NDgwYTdkZjIwOTJkODc0YTkxM2FmYTIyNGY5OWE1N2RmNWYzNTkyODJj
|
11
|
+
ZGVjNGE0ZDI3N2RhOTI0NzdmNjVkMzE3MmE2Y2QwNGVjZDVlZDg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NjczMGQzZDI3ZTkwZDkyMzkwMGZjOWRjNTBlNDRkNGJkNDRjNzliNGJmZDI2
|
14
|
+
NTYyYmM2NzRiMTc0YWM2NGY0Mzc1MjVhOWQwZDAzOTQ5NzNlZTYwMjY1ZTRl
|
15
|
+
NDI1NjYwNjA4MDUzZjFiOTJjNGRkOWVmZWNiMTljYzU3YzdlNGE=
|
data/.gitmodules
ADDED
data/Rakefile
CHANGED
@@ -6,3 +6,43 @@ RSpec::Core::RakeTask.new(:spec)
|
|
6
6
|
|
7
7
|
ENV['DEFAULT_HTTP_PORT'] ||= '3000'
|
8
8
|
ENV['DEFAULT_HTTPS_PORT'] ||= '3001'
|
9
|
+
|
10
|
+
require 'fileutils'
|
11
|
+
|
12
|
+
def system!(cmd)
|
13
|
+
puts "now executing: #{cmd}"
|
14
|
+
IO.popen("#{cmd} 2>&1") do |io|
|
15
|
+
while line = io.gets
|
16
|
+
puts line
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
if $?.exitstatus != 0
|
21
|
+
exit(1)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
desc "test with fontana-LibgssTest"
|
26
|
+
task :test do
|
27
|
+
fileutils = FileUtils::Verbose
|
28
|
+
__dir__ = File.expand_path("..", __FILE__)
|
29
|
+
sample_dir = File.join(__dir__, "fontana_sample")
|
30
|
+
|
31
|
+
if Dir["#{sample_dir}/*"].empty?
|
32
|
+
raise "#{sample_dir} is empty. You have to do `git submodule update --init` before `rake test`"
|
33
|
+
end
|
34
|
+
|
35
|
+
fileutils.chdir(sample_dir){ system!("rake vendor:fontana:reset servers:start") }
|
36
|
+
begin
|
37
|
+
fileutils.chdir(__dir__) do
|
38
|
+
Rake::Task["spec"].execute
|
39
|
+
end
|
40
|
+
ensure
|
41
|
+
fileutils.chdir(sample_dir){ system!("rake servers:stop") }
|
42
|
+
end
|
43
|
+
|
44
|
+
# 最後の子プロセスの終了ステータスで終了します
|
45
|
+
exit($?.exitstatus || 1)
|
46
|
+
end
|
47
|
+
|
48
|
+
task :default => :test
|
data/bin/gss-server-time
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
# http://doc.ruby-lang.org/ja/1.9.3/library/optparse.html
|
5
|
+
# http://qiita.com/torshinor/items/499beaba89eb09df80d5
|
6
|
+
require 'optparse'
|
7
|
+
|
8
|
+
url = ARGV.detect{|s| s !~ /\A\-/}
|
9
|
+
ARGV.delete(url)
|
10
|
+
|
11
|
+
default_options = {
|
12
|
+
"platform" => "fontana"
|
13
|
+
}
|
14
|
+
banner = "%s URL [options]" % File.basename(__FILE__)
|
15
|
+
parser = OptionParser.new(banner) do |opt|
|
16
|
+
opt.on '-i', '--player-id PLAYER_ID'
|
17
|
+
opt.on '-p', "--platform #{default_options[:platform]}"
|
18
|
+
opt.on '-c', '--consumer-secret CONSUMER_SECRET'
|
19
|
+
opt.on '-a', '--app-garden-file PATH_TO_APP_GARDEN_FILE'
|
20
|
+
opt.on '-D', '--ssl-disabled'
|
21
|
+
opt.on '-I', '--ignore-signature-key'
|
22
|
+
end
|
23
|
+
|
24
|
+
unless url
|
25
|
+
puts parser.help
|
26
|
+
exit(1)
|
27
|
+
end
|
28
|
+
|
29
|
+
options = default_options.merge(parser.getopts(ARGV))
|
30
|
+
options = options.each_with_object({}){|(k,v), d| d[k.gsub(/-/, '_').to_sym] = v}
|
31
|
+
|
32
|
+
$LOAD_PATH << File.expand_path("../../lib")
|
33
|
+
require 'libgss'
|
34
|
+
|
35
|
+
if app_garden_path = options.delete(:app_garden_file)
|
36
|
+
Fontana = Libgss::Fontana # ERBを展開する際にFontana.envなどが指定されていた場合に期待する動作をするように別名で定義します。
|
37
|
+
require 'tengine/support/yaml_with_erb'
|
38
|
+
c = YAML.load_file(app_garden_path)
|
39
|
+
options[:platform] = (c["platform"] ? c["platform"]["name"] : nil) || "fontana"
|
40
|
+
options[:consumer_secret] = c["consumer_secret"]
|
41
|
+
end
|
42
|
+
|
43
|
+
begin
|
44
|
+
network = Libgss::Network.new(url, options)
|
45
|
+
options = options.dup
|
46
|
+
options[:consumer_secret] = "<<MASKED>>" if options[:consumer_secret]
|
47
|
+
puts "login on #{url} with #{options.inspect}"
|
48
|
+
unless network.login
|
49
|
+
puts "\e[31mLogin FAILURE!\e[0m"
|
50
|
+
exit!(1)
|
51
|
+
end
|
52
|
+
|
53
|
+
puts "Login success"
|
54
|
+
puts "player_id: #{network.player_id}"
|
55
|
+
|
56
|
+
req = network.new_action_request
|
57
|
+
req.server_time
|
58
|
+
req.send_request
|
59
|
+
|
60
|
+
res = req.outputs.first
|
61
|
+
raise "req.outputs is empty: #{req.outputs}" unless res
|
62
|
+
|
63
|
+
puts "server_time: " << Time.at(res["result"]).iso8601
|
64
|
+
|
65
|
+
puts "\e[32mSUCCESS!!\e[0m"
|
66
|
+
rescue => e
|
67
|
+
puts "\e[31m[#{e.class}] #{e.message}\e[0m\n " << e.backtrace.join("\n ")
|
68
|
+
end
|
data/lib/libgss.rb
CHANGED
@@ -8,6 +8,9 @@ module Libgss
|
|
8
8
|
|
9
9
|
class ActionRequest
|
10
10
|
|
11
|
+
class Error < StandardError
|
12
|
+
end
|
13
|
+
|
11
14
|
STATUS_PREPARING = 0
|
12
15
|
STATUS_SENDING = 1
|
13
16
|
STATUS_WAITING = 2
|
@@ -49,10 +52,16 @@ module Libgss
|
|
49
52
|
# アクション群を実行するために実際にHTTPリクエストを送信します。
|
50
53
|
def send_request(&callback)
|
51
54
|
res = @httpclient.post(action_url, {"inputs" => @actions.map(&:to_hash)}.to_json)
|
55
|
+
case res.code.to_i
|
56
|
+
when 200..299 then # OK
|
57
|
+
else
|
58
|
+
raise Error, "failed to send action request: [#{res.code}] #{res.body}"
|
59
|
+
end
|
52
60
|
r = JSON.parse(res.body)
|
53
61
|
# puts res.body
|
54
62
|
@outputs = Outputs.new(r["outputs"])
|
55
63
|
callback.call(@outputs) if callback
|
64
|
+
@outputs
|
56
65
|
end
|
57
66
|
|
58
67
|
# 条件に該当するデータを取得
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'libgss'
|
3
|
+
|
4
|
+
module Libgss
|
5
|
+
module Fontana
|
6
|
+
|
7
|
+
class << self
|
8
|
+
# これは fontanaの Fontana.env と同じ動きをすることが期待されています。
|
9
|
+
# https://github.com/tengine/fontana/blob/master/config/application.rb#L24
|
10
|
+
def env
|
11
|
+
@env ||= (ENV["FONTANA_ENV"] || "DEVELOPMENT").to_sym
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
data/lib/libgss/network.rb
CHANGED
@@ -45,7 +45,8 @@ module Libgss
|
|
45
45
|
@ssl_base_url = build_https_url(uri)
|
46
46
|
end
|
47
47
|
@ssl_base_url = @base_url if @ssl_disabled
|
48
|
-
@platform
|
48
|
+
@platform = options[:platform] || "fontana"
|
49
|
+
@player_id = options[:player_id]
|
49
50
|
|
50
51
|
@consumer_secret = options[:consumer_secret] || ENV["CONSUMER_SECRET"]
|
51
52
|
@ignore_signature_key = !!options[:ignore_signature_key]
|
data/lib/libgss/version.rb
CHANGED
data/spec/libgss/network_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
2
|
require 'libgss'
|
3
|
+
require 'tengine/support/yaml_with_erb'
|
3
4
|
|
4
5
|
# see https://github.com/tengine/fontana/pull/3
|
5
6
|
require 'httpclient'
|
@@ -10,8 +11,10 @@ end
|
|
10
11
|
|
11
12
|
|
12
13
|
def new_network(url = "http://localhost:3000", player_id = "1000001")
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
config = YAML.load_file(File.expand_path("../../fontana_sample/config/app_garden.yml", __FILE__))
|
15
|
+
opts = {
|
16
|
+
consumer_secret: config["consumer_secret"],
|
17
|
+
player_id: player_id
|
18
|
+
}
|
19
|
+
Libgss::Network.new(url, opts)
|
17
20
|
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.4.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-
|
11
|
+
date: 2013-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -97,11 +97,13 @@ dependencies:
|
|
97
97
|
description: network library for Groovenauts GSS
|
98
98
|
email:
|
99
99
|
- t-akima@groovenauts.jp
|
100
|
-
executables:
|
100
|
+
executables:
|
101
|
+
- gss-server-time
|
101
102
|
extensions: []
|
102
103
|
extra_rdoc_files: []
|
103
104
|
files:
|
104
105
|
- .gitignore
|
106
|
+
- .gitmodules
|
105
107
|
- .rspec
|
106
108
|
- .travis.yml
|
107
109
|
- Gemfile
|
@@ -110,10 +112,12 @@ files:
|
|
110
112
|
- README.md
|
111
113
|
- README_ja.md
|
112
114
|
- Rakefile
|
115
|
+
- bin/gss-server-time
|
113
116
|
- lib/libgss.rb
|
114
117
|
- lib/libgss/action.rb
|
115
118
|
- lib/libgss/action_request.rb
|
116
119
|
- lib/libgss/asset_request.rb
|
120
|
+
- lib/libgss/fontana.rb
|
117
121
|
- lib/libgss/http_client_with_signature_key.rb
|
118
122
|
- lib/libgss/network.rb
|
119
123
|
- lib/libgss/outputs.rb
|