flox 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 219bdba8d257f7a35c1b9174877fc74775ce0a89
4
- data.tar.gz: cc1abbb765aa82c4b6c3d650e308869b9594361e
3
+ metadata.gz: 9ad9881566390837774beb2f6ba709d533e2cd94
4
+ data.tar.gz: 25da47a5b5d16804352e2beba5e479b332f38ccf
5
5
  SHA512:
6
- metadata.gz: 77c3fe30874b4bd0531108be4965dfa5178813712f319346cd167fa9b41985737904e095375b7b64792a0135275d1231d1817ba16e023d20b9c4906a5c4d4c86
7
- data.tar.gz: 01509872cb9f839e79bd2941894d01eee92f5b238404e75aff60f1dba2a4099a0e05e96936840e617a070172ea5e2f0adc993986c95bb03540af14426bc3c9cf
6
+ metadata.gz: f39a94d6a7edc427e1b003773f9f44c813a033339a52c13d748cdda5306b63c19c83e012253b2caa31386570c8743707c856b666e2e736cd4adb327e2c47a316
7
+ data.tar.gz: 539663241fe8bfea69b91f928f052b88fea07029037ed4a56da069db6e080053708be529d972ef48b125fdc761ac2e494980b6bc0fc9798e80201a0e61951590
data/lib/flox.rb CHANGED
@@ -14,7 +14,7 @@ class Flox
14
14
  # @private
15
15
  attr_reader :service
16
16
 
17
- # The player that is currently logged in.
17
+ # @return [Flox::Player] The player that is currently logged in.
18
18
  attr_reader :current_player
19
19
 
20
20
  # Creates a new instance with a certain game ID and key. Per default, a guest
@@ -26,12 +26,16 @@ class Flox
26
26
  end
27
27
 
28
28
  # Makes a key-login on the server. It is recommended to create a 'hero'
29
- # player in the web interface and use that for the login.
29
+ # player in the web interface and use that for the login. After the login,
30
+ # `current_player` will point to this player.
31
+ # @return [Flox::Player]
30
32
  def login_with_key(key)
31
33
  login(:key, key)
32
34
  end
33
35
 
34
- # Creates a new guest player and logs it in.
36
+ # Creates a new guest player and logs it in. After the login,
37
+ # `current_player` will point to this player.
38
+ # @return [Flox::Player]
35
39
  def login_guest()
36
40
  login(:guest)
37
41
  end
@@ -47,7 +51,7 @@ class Flox
47
51
 
48
52
  # Loads an entity with a certain type and id from the server.
49
53
  # Normally, the type is the class name you used for the entity in your game.
50
- # Returns a Flox::Entity instance.
54
+ # @return [Flox::Entity]
51
55
  def load_entity(type, id)
52
56
  path = entity_path(type, id)
53
57
  data = service.get(path)
@@ -58,7 +62,14 @@ class Flox
58
62
  end
59
63
  end
60
64
 
65
+ # Loads an entity with type '.player'.
66
+ # @return [Flox::Player]
67
+ def load_player(id)
68
+ load_entity('.player', id)
69
+ end
70
+
61
71
  # Stores an entity on the server.
72
+ # @return [Flox::Entity]
62
73
  def save_entity(entity)
63
74
  result = service.put(entity.path, entity)
64
75
  entity['updatedAt'] = result['updatedAt']
@@ -66,11 +77,12 @@ class Flox
66
77
  entity
67
78
  end
68
79
 
69
- # :call-seq:
70
- # delete_entity(entity)
71
- # delete_entity(type, id)
72
- #
73
80
  # Deletes the given entity from the database.
81
+ # @overload delete_entity(entity)
82
+ # @param [Flox:Entity] entity the entity to delete
83
+ # @overload delete_entity(type, id)
84
+ # @param [String] type the type of the entity
85
+ # @param [String] id the id of the entity
74
86
  def delete_entity(*entity)
75
87
  if entity.length > 1
76
88
  type, id = entity[0], entity[1]
@@ -91,6 +103,7 @@ class Flox
91
103
 
92
104
  # Loads all scores of a leaderboard, sorted by rank. 'scope' can either be
93
105
  # one of the symbols +:today, :this_week, :all_time+ or an array of player IDs.
106
+ # @return [Array<Flox::Score>]
94
107
  def load_scores(leaderboard_id, scope)
95
108
  path = leaderboard_path(leaderboard_id)
96
109
  args = {}
@@ -106,35 +119,37 @@ class Flox
106
119
  end
107
120
 
108
121
  # Loads a JSON object from the given path. This works with any resource
109
- # e.g. entities, logs, etc. Always returns a Hash.
122
+ # e.g. entities, logs, etc.
123
+ # @return [Hash]
110
124
  def load_resource(path, args=nil)
111
125
  service.get(path, args)
112
126
  end
113
127
 
114
128
  # Loads a log with a certain ID. A log is a Hash instance.
129
+ # @return [Hash]
115
130
  def load_log(log_id)
116
131
  log = service.get log_path(log_id)
117
132
  log['id'] = log_id unless log['id']
118
133
  log
119
134
  end
120
135
 
121
- # Loads logs, optionally restricted by a certain query.
136
+ # Loads logs defined by a certain query.
122
137
  # Here are some sample queries:
123
138
  #
124
- # * 'day:2014-02-20' -> all logs of a certain day
125
- # * 'severity:warning' -> all logs of type warning & error
126
- # * 'severity:error' -> all logs of type error
127
- # * 'day:2014-02-20 severity:error' all error logs from February 20th.
139
+ # * `day:2014-02-20` all logs of a certain day
140
+ # * `severity:warning` all logs of type warning & error
141
+ # * `severity:error` all logs of type error
142
+ # * `day:2014-02-20 severity:error` all error logs from February 20th.
128
143
  #
129
- # Returns a Flox::ResourceEnumerator you can use to iterate
130
- # over the logs.
144
+ # @return [Flox::ResourceEnumerator<Hash>]
131
145
  def load_logs(query=nil, limit=nil)
132
146
  log_ids = load_log_ids(query, limit)
133
147
  paths = log_ids.map { |log_id| log_path(log_id) }
134
148
  ResourceEnumerator.new(service, paths)
135
149
  end
136
150
 
137
- # Loads just the IDs of the logs, restricted by a certain query.
151
+ # Loads just the IDs of the logs, defined by a certain query.
152
+ # @return [Array<String>]
138
153
  def load_log_ids(query=nil, limit=nil)
139
154
  log_ids = []
140
155
  cursor = nil
@@ -152,23 +167,26 @@ class Flox
152
167
  log_ids
153
168
  end
154
169
 
155
- # Loads the status of the Flox service, which is a Hash with the
156
- # keys 'status' and 'version'.
170
+ # Loads the status of the Flox service.
171
+ # @return [Hash] with the keys 'status' and 'version'.
157
172
  def status
158
173
  service.get("")
159
174
  end
160
175
 
161
176
  # The ID of the game you are accessing.
177
+ # @return [String]
162
178
  def game_id
163
179
  service.game_id
164
180
  end
165
181
 
166
182
  # The key of the game you are accessing.
183
+ # @return [String]
167
184
  def game_key
168
185
  service.game_key
169
186
  end
170
187
 
171
188
  # The base URL of the Flox service.
189
+ # @return [String]
172
190
  def base_url
173
191
  service.base_url
174
192
  end
@@ -3,7 +3,6 @@
3
3
  ## License: Simplified BSD
4
4
 
5
5
  require 'json'
6
- require 'yaml'
7
6
  require 'net/http'
8
7
 
9
8
  # A class that makes it easy to communicate with the Flox server via a REST protocol.
@@ -22,7 +21,7 @@ class Flox::RestService
22
21
  @game_id = game_id
23
22
  @game_key = game_key
24
23
  @base_url = base_url
25
- @authentication = { "authType" => "guest" }
24
+ login :guest
26
25
  end
27
26
 
28
27
  # Makes a `GET` request at the server. The given data-Hash is URI-encoded
@@ -64,12 +63,12 @@ class Flox::RestService
64
63
  auth_data = {
65
64
  "authType" => auth_type,
66
65
  "authId" => auth_id,
67
- "authToken" => auth_token,
68
- "id" => auth_id
66
+ "authToken" => auth_token
69
67
  }
70
68
 
71
69
  if (auth_type.to_sym == :guest)
72
70
  response = auth_data
71
+ auth_data["id"] = String.random_uid
73
72
  else
74
73
  response = post("authenticate", auth_data)
75
74
  auth_data["id"] = response["id"]
data/lib/flox/version.rb CHANGED
@@ -2,9 +2,13 @@
2
2
  ## Copyright: Copyright 2014 Gamua
3
3
  ## License: Simplified BSD
4
4
 
5
+ # The main class used to interact with the Flox cloud service. Create an
6
+ # instance of Flox using the game ID and key acquired from the web interface,
7
+ # then login with a "Hero" key. That way, you will be able to access the data
8
+ # of all players.
5
9
  class Flox
6
10
 
7
11
  # The current version of the Flox SDK.
8
- VERSION = "0.0.1"
12
+ VERSION = '0.0.2'
9
13
 
10
14
  end
data/test/test_flox.rb CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  require 'flox'
6
6
  require 'test/unit'
7
- require 'mocha/test_unit'
7
+ require 'mocha/setup'
8
8
 
9
9
  class FloxTest < Test::Unit::TestCase
10
10
 
@@ -79,6 +79,7 @@ class FloxTest < Test::Unit::TestCase
79
79
  assert_not_nil(player)
80
80
  assert_equal(:guest, player.auth_type)
81
81
  assert_equal(player, flox.current_player)
82
+ assert_not_nil(player.id)
82
83
  end
83
84
 
84
85
  def test_load_entity
@@ -97,6 +98,17 @@ class FloxTest < Test::Unit::TestCase
97
98
  assert_equal(data["name"], entity["name"])
98
99
  end
99
100
 
101
+ def test_load_player
102
+ id = "id"
103
+ data = { "name" => "Jean-Luc" }
104
+ flox.service.expects(:get).once.returns(data)
105
+ player = flox.load_player(id)
106
+ assert_kind_of(Flox::Player, player)
107
+ assert_equal(data["name"], player["name"])
108
+ assert_equal(id, player.id)
109
+ assert_equal('.player', player.type)
110
+ end
111
+
100
112
  def test_save_entity
101
113
  data = { "name" => "Jean-Luc" }
102
114
  entity = Flox::Entity.new("type", "id", data)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Sperl
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: |
56
70
  Flox is the no-fuzz backend for game developers. The Ruby SDK allows direct
57
71
  interaction with the Flox servers, e.g. to download log files or update