libgss 0.0.2 → 0.2.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Y2Y0OGU1MjZkZDE4ZDA2YmYzM2Q5YzNhNjMzYjczZTQwOThmODFiMg==
4
+ NDEzZGE2OTI5OGE3MDMzNTgxZjU2Zjg0ZmY4YzVlMDAzYzMwOGQzOA==
5
5
  data.tar.gz: !binary |-
6
- NDMwZmZiNTY5OGE3MTk2ZWMzZDRmN2IzNjgzMjkyYjdhNDY2YjBkNw==
6
+ YjExOGRiOGM5NzlhNDNjNTNkMmRiODM4NDc5MTVhM2ExZjBkNzVhZQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZDQ0NWUxMTNmZTVjZjg2MTJiNGMwZGUyYmI2NDM3NjI1YzJhODRlMjZlNTc4
10
- MDE3ODg4MTA0MjZhMGQwZTY4ZmI3NTdlNDYzY2MxZjI1Y2NjN2FkMzU5MDFj
11
- N2FiOWEwNGIxYjY5OTViYWQ4NGRlZDg4OTdkNWIzY2ZiMDExZjA=
9
+ ZmU2NzFiYThmNDIzMTA0MDk4ODg1NDQzYmIzODYyN2I0MDI1ZmZhY2QzOGJi
10
+ YzkwMjY1NDkzNTI1NWIxNDAzYjg5Njc4NDYzOWY2OTdmMWJjYWQ2MWFlOWNk
11
+ M2Y1ODdkMjE3MzVhMjllNmViYzI0YTFhYWZkNmI1MjA3Zjc5MjQ=
12
12
  data.tar.gz: !binary |-
13
- Y2JkMDE0NTljMmNlOGY5M2UwMTFlODY0NTkwNjUxZTVkMGNjNDQxZjkzNGNl
14
- ZGM0Mzc3ZDNiNzgyM2ZjMGU5MGNiZGVjYjUwZTljMzU0YzIyMjcwNTZkNzMw
15
- MDAwZDdjMmQyMTUxZjUzMzFlNTRhZTVjNDQ2MGI0ODA0OTZkZjk=
13
+ Y2Y2NzE0MjEzMGU4MjcwMDc1Mzc4NTBkNTFlMTU5ZmNjOGMyOGRmMDU0Mzc1
14
+ ZDY3NTdmYjYyOGJhMmYzZjQ2OTNjMWM2NzM0ZjY3NWM3NDkwNjdmZjA1NTQ3
15
+ MjlhOTQ1MjBmODMxYjJhOGFiZjZlMWExMjNjZTM0MWY4NTM5NjE=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- libgss (0.0.2)
4
+ libgss (0.2.0)
5
5
  httpclient
6
6
  json
7
7
 
data/README_ja.md CHANGED
@@ -11,7 +11,11 @@ libgss-rubyはGroovenautsのGSS用通信ライブラリです。
11
11
 
12
12
  ## インストール方法
13
13
 
14
- ### bundlerを使う方法
14
+ 以下の2つの方法があります。プロジェクトを作成してGemfileが定義されている場合は、bundlerを使う方法をおすすめします。
15
+ それ以外の場合は、手動でインストールする方法でインストールしてください。
16
+
17
+
18
+ ### プロジェクトを作ってbundlerを使う方法
15
19
 
16
20
  アプリケーションのGemfileに以下の行を追加します:
17
21
 
@@ -24,9 +24,12 @@ module Libgss
24
24
  attr_accessor :public_asset_url_suffix
25
25
 
26
26
 
27
- DEFAULT_HTTP_PORT = (ENV['DEFAULT_HTTP_PORT'] || 80).to_i
27
+ DEFAULT_HTTP_PORT = (ENV['DEFAULT_HTTP_PORT' ] || 80).to_i
28
28
  DEFAULT_HTTPS_PORT = (ENV['DEFAULT_HTTPS_PORT'] || 443).to_i
29
29
 
30
+ TEST_HTTP_PORT = 3000
31
+ TEST_HTTPS_PORT = 3001
32
+
30
33
  def initialize(base_url_or_host, options = {})
31
34
  @ssl_disabled = options.delete(:ssl_disabled)
32
35
  if base_url_or_host =~ URI.regexp
@@ -50,24 +53,26 @@ module Libgss
50
53
  r << fields.join(", ") << ">"
51
54
  end
52
55
 
56
+ def register
57
+ res = @httpclient.post(registration_url)
58
+ process_json_response(res) do |obj|
59
+ self.player_id = obj["player_id"].sub(/\Afontana:/, '')
60
+ !!self.player_id
61
+ end
62
+ end
63
+
53
64
  def login
54
- raise "player_id is not set." if player_id.nil? || player_id.empty?
55
65
  res = @httpclient.post(login_url, "player[id]" => player_id)
56
- case res.status
57
- when 200...300 then # OK
58
- when 300...400 then return false # リダイレクト対応はしません
59
- when 400...500 then return false
60
- when 500...600 then return false
61
- else raise "invalid http status: #{res.status}"
66
+ process_json_response(res) do |obj|
67
+ @player_id ||= obj["player_id"]
68
+ @auth_token = obj["auth_token"]
69
+ @signature_key = obj["signature_key"]
70
+ !!@auth_token && !!@signature_key
62
71
  end
63
- begin
64
- obj = JSON.parse(res.content)
65
- rescue JSON::ParserError => e
66
- return false
67
- end
68
- @auth_token = obj["auth_token"]
69
- @signature_key = obj["signature_key"]
70
- true
72
+ end
73
+
74
+ def setup
75
+ (load_player_id || register) && login
71
76
  end
72
77
 
73
78
  def new_action_request
@@ -84,12 +89,44 @@ module Libgss
84
89
 
85
90
  private
86
91
 
92
+ # ストレージからplayer_idをロードします
93
+ # 保存されていたらtrueを、保存されていなかったらfalseを返します。
94
+ #
95
+ # ストレージは、cocos2d-x ならば CCUserDefault のようにデータを永続化するものを指します。
96
+ # http://www.cocos2d-x.org/reference/native-cpp/d0/d79/classcocos2d_1_1_c_c_user_default.html
97
+ #
98
+ # ただし、libgss-rubyはテスト用なので毎回違うplayer_idを使います。
99
+ # もし保存したい場合は、別途ファイルなどに記録してください。
100
+ def load_player_id
101
+ return false
102
+ end
103
+
104
+ def process_json_response(res)
105
+ case res.status
106
+ when 200...300 then # OK
107
+ when 300...400 then return false # リダイレクト対応はしません
108
+ when 400...500 then return false
109
+ when 500...600 then return false
110
+ else raise "invalid http status: #{res.status}"
111
+ end
112
+ begin
113
+ obj = JSON.parse(res.content)
114
+ return yield(obj)
115
+ rescue JSON::ParserError => e
116
+ return false
117
+ end
118
+ end
119
+
87
120
  def build_https_url(uri)
88
121
  uri.scheme = "https"
89
- uri.port = DEFAULT_HTTPS_PORT
122
+ uri.port = (uri.port == TEST_HTTP_PORT) ? TEST_HTTPS_PORT : DEFAULT_HTTPS_PORT
90
123
  uri.to_s
91
124
  end
92
125
 
126
+ def registration_url
127
+ @registration_url ||= ssl_base_url + "/platforms/#{platform}/registration.json"
128
+ end
129
+
93
130
  def login_url
94
131
  @login_url ||= ssl_base_url + "/platforms/#{platform}/sign_in.json"
95
132
  end
@@ -1,3 +1,3 @@
1
1
  module Libgss
2
- VERSION = "0.0.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -9,7 +9,7 @@ describe Libgss::ActionRequest do
9
9
  let(:network) do
10
10
  network = Libgss::Network.new("http://localhost:3000")
11
11
  network.player_id = "1000001"
12
- network.login
12
+ network.login.should == true
13
13
  network
14
14
  end
15
15
 
@@ -3,15 +3,45 @@ require 'spec_helper'
3
3
  describe Libgss::Network do
4
4
 
5
5
  let(:network) do
6
- network = Libgss::Network.new("http://localhost:3000")
7
- network.player_id = "1000001"
8
- network
6
+ Libgss::Network.new("http://localhost:3000")
7
+ end
8
+
9
+ describe "#registration" do
10
+ context "valid" do
11
+ it do
12
+ network.player_id.should == nil
13
+ network.register
14
+ network.player_id.should_not == nil
15
+ network.player_id.should_not =~ /^fontana:/
16
+ end
17
+ end
18
+ end
19
+
20
+ describe "#setup" do
21
+ context "valid" do
22
+ it do
23
+ network.player_id.should == nil
24
+ network.auth_token.should == nil
25
+ network.signature_key.should == nil
26
+ res = network.setup
27
+ network.player_id.should_not == nil
28
+ network.player_id.should_not =~ /^fontana:/
29
+ network.auth_token.should_not == nil
30
+ network.signature_key.should_not == nil
31
+ res.should == true
32
+ end
33
+ end
9
34
  end
10
35
 
11
36
  describe "#login" do
37
+ before do
38
+ network.player_id = "1000001"
39
+ end
40
+
12
41
  context "success" do
13
- shared_examples_for "Libgss::Network#login success" do |block|
42
+ shared_examples_for "Libgss::Network#login success" do |block, after_block = nil|
14
43
  before(&block)
44
+ after(&after_block) if after_block
15
45
 
16
46
  it do
17
47
  network.auth_token.should == nil
@@ -24,10 +54,27 @@ describe Libgss::Network do
24
54
  end
25
55
 
26
56
  it_should_behave_like "Libgss::Network#login success", Proc.new{ network.player_id = "1000001" }
27
- it_should_behave_like "Libgss::Network#login success", Proc.new{ network.player_id = "unregistered" }
57
+ # it_should_behave_like "Libgss::Network#login success", Proc.new{ network.player_id = "unregistered" }
58
+
59
+ it_should_behave_like "Libgss::Network#login success",
60
+ Proc.new{ network.player_id = nil },
61
+ Proc.new{ network.player_id.should_not == nil }
62
+
28
63
  end
29
64
 
30
65
  context "failure" do
66
+ it "unregistered (maybe invalid) player_id" do
67
+ network.player_id = "unregistered"
68
+ network.auth_token.should == nil
69
+ network.signature_key.should == nil
70
+ res = network.login
71
+ network.auth_token.should == nil
72
+ network.signature_key.should == nil
73
+ res.should == false
74
+ end
75
+ end
76
+
77
+ context "error" do
31
78
  shared_examples_for "Libgss::Network#login failure" do
32
79
  it do
33
80
  network.auth_token.should == nil
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.0.2
4
+ version: 0.2.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-05-21 00:00:00.000000000 Z
11
+ date: 2013-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler