flox 0.0.1 → 0.0.2

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,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