bigbertha 0.0.2 → 0.0.4

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
- ODI2ODI0OWJkOTA3NzQyNTVkNTViYTRiNmU1NWZiODA0NjVhYmY1Mg==
4
+ MTRlMmEwMTA3ZTZlMjgxYTMwNTQyMzNjNmY1NmY2ZmNhYWNhZTQ5NA==
5
5
  data.tar.gz: !binary |-
6
- MWFiOTBiMGU5MzY5OGRkYTQ3ZjM3MzNkZTdmZDgxNTk3ZTlmMDkwZQ==
6
+ MWVhMTQ3NWUyZDMzZmFkZDNhMzhkZDRiNWY1MmVmMjIwNzdjYjMzOQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ODNkNjdlMTE5NTRlNjNiYTA0ZGU4N2Q2YTRjNTYzNTZlZjhmMTAzZjE2YjRl
10
- MzFlMGIxNzdhMTY1MjI2ZmM1NTA2OGNjZTE0YTJmNDc5MmNlMzdhMjkwMWVm
11
- NzhlMDNhNDI3ZDUwOGJkMTI5MDNkNTYyNGQ5ODY3OWExNTk4YzM=
9
+ OWRlNjAwMWYxYTM5Nzg5MWM0ZTk5YmJiMzE0MmQ1MDNhN2IxNTI1M2FmNTli
10
+ OWUyMmY3ZWIwNjZhMWNjZWQzMTVjZGNlNGE3YWY5NjlhMDJmMmUxZmY2Zjkz
11
+ YzliM2Q5NDgzMjViZWY3ZGNlOTQ1NDNjY2Y2OWE4OTQ0YzE0NmY=
12
12
  data.tar.gz: !binary |-
13
- YTM2NDBjNzYzMzhlOTkxNDBiZDc2Y2RjNWFmZmY2MTBiYTc2OTExYzVlNTMw
14
- NDUxN2Y2OTUwYjRmNjMzNTM4YjdiNTBjOTBmODNhMDMzOTEyMjQ2NmE0MWFh
15
- ZmM1ZGZhOWUzYWFjY2RiMmQ4ODI1ZDlkZTQ2M2M2MTAwYmM5Y2Q=
13
+ MGRhZDVlODM3OTk4YmIwNTM5N2EyOTQ0YmM4ZDc4MmI0YjdlZThlZDM5Y2Jk
14
+ MjA1OTM4YzhkNzc3ZjEwMmUxZDFmYTU1ODcwNmIyMTVhZjkxMDg3NzE3NWE5
15
+ MjNmYzAwOWU3ZmRmZjRmOWI3NzU1M2U3ZTk5OGVlNDE2ZjdjZmQ=
data/Gemfile CHANGED
@@ -1,8 +1,10 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'map'
4
+ gem 'main'
4
5
  gem 'typhoeus'
5
6
  gem 'values'
7
+ gem 'firebase_token_generator'
6
8
 
7
9
  group 'test' do
8
10
  gem "autotest"
@@ -2,14 +2,23 @@ GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
4
  ZenTest (4.9.0)
5
+ arrayfields (4.9.0)
5
6
  autotest (4.4.6)
6
7
  ZenTest (>= 4.4.1)
7
8
  autotest-growl (0.2.16)
9
+ chronic (0.9.1)
8
10
  diff-lcs (1.2.1)
9
11
  ethon (0.5.10)
10
12
  ffi (~> 1.3.0)
11
13
  mime-types (~> 1.18)
14
+ fattr (2.2.1)
12
15
  ffi (1.3.1)
16
+ firebase_token_generator (1.0.1)
17
+ main (5.2.0)
18
+ arrayfields (>= 4.7.4)
19
+ chronic (>= 0.6.2)
20
+ fattr (>= 2.2.0)
21
+ map (>= 5.1.0)
13
22
  map (6.3.0)
14
23
  mime-types (1.21)
15
24
  multi_json (1.7.2)
@@ -35,6 +44,8 @@ PLATFORMS
35
44
  DEPENDENCIES
36
45
  autotest
37
46
  autotest-growl
47
+ firebase_token_generator
48
+ main
38
49
  map
39
50
  rspec
40
51
  simplecov
data/README.md CHANGED
@@ -12,6 +12,7 @@ sync up across the wire. Checkout http://firebase.com for the firehose...
12
12
  - Map
13
13
  - Typhoeus
14
14
  - Values
15
+ - firebase_token_generator
15
16
 
16
17
  ## Getting Started
17
18
 
@@ -29,7 +30,7 @@ In the following code samples, we will use the following as our base url:
29
30
  Then you can specify an entry point into the data using the following call:
30
31
 
31
32
  ```ruby
32
- ref = Bigbertha::Load.new( 'https://zerodarkthirty.firebaseio.com' )
33
+ ref = Bigbertha::Ref.new( 'https://zerodarkthirty.firebaseio.com' )
33
34
  ```
34
35
 
35
36
  NOTE: You don't have to start a the root, but usually a good idea since this api
@@ -157,7 +158,9 @@ ref.set( data )
157
158
  ```
158
159
 
159
160
  ```ruby
160
- ref.child( 'a/a_2' ).read # => 10.5
161
+ ref.child( :a, :a_2 ).read # => 10.5
162
+ # or...
163
+ ref.child( :a, :a_2 ).val # => 10.5
161
164
  a_val = ref.child( :a ).read
162
165
  a_val.a_1 # => 'Hello World'
163
166
  a_val[:a_1] # => 'Hello World' or use hash indexing...
@@ -259,7 +262,12 @@ ref.set( data )
259
262
 
260
263
  ```ruby
261
264
  a_2_2_ref = ref.child( 'a/a_2/a_2_2' )
262
- a_2_2_ref = ref.child( :a ).child( :a_2 ).child( :a_2_2 ) # or...
265
+ # or...
266
+ a_2_2_ref = ref.child( :a ).child( :a_2 ).child( :a_2_2 )
267
+ # or...
268
+ a_2_2_ref = ref.child( :a, :a_2, :a_2_2 )
269
+ # or...
270
+ a_2_2_ref = ref.child( %w(a a_2 a_2_2) )
263
271
  a_2_2_ref.name #=> 'a_2_2'
264
272
 
265
273
  a_2_ref = a_2_2_ref.parent
@@ -291,12 +299,25 @@ a_ref.parent.read #=> {-IrNhTASqxqEpNMw8NGq: {c: 1, d: 2}, -IrNhT2vsoQ1WlgSG6op:
291
299
  You can secure you firebase store using a secret token and grant access for permissions on the store using rules.
292
300
  Please refer to the firebase docs for details.
293
301
 
302
+ Note: We've encapsulated the Firebase auth token generator ruby implementation to make generating tokens
303
+ more convenient.
304
+
305
+ ```
306
+ > bb_auth_token -h
307
+ > bb_auth_token SECRET --data "{\"user\":\"bozo\"}"
308
+ ```
309
+
294
310
  ```ruby
295
- ref = Bigbertha::Load.new( 'https://bozo.firebaseio.com', my_secret_token )
311
+ ref = Bigbertha::Ref.new( 'https://bozo.firebaseio.com', auth_token|secret )
296
312
  ref.set( tmp: { a: 0, b: 1 } )
297
313
  ref.set_rules(
298
- { '.read' => true, '.write' => false,
299
- "tmp" => { '.read' => true, '.write' => false }
314
+ {
315
+ '.read' => true,
316
+ '.write' => "auth.user == 'bozo'",
317
+ "tmp" => {
318
+ '.read' => true,
319
+ '.write' => false
320
+ }
300
321
  }
301
322
  )
302
323
  res = ref.child(:tmp).read # => { a: 0, b: 1 }
@@ -311,6 +332,9 @@ Fernand Galiana
311
332
  - http://twitter.com/kitesurfer
312
333
  - <fernand.galiana@gmail.com>
313
334
 
335
+ Still work in progress. So please feel free to contact me if you run into issues or
336
+ just want to touch base...
337
+
314
338
  ## License
315
339
 
316
340
  Bigbertha is released under the [MIT](http://opensource.org/licenses/MIT) license.
@@ -322,4 +346,8 @@ Bigbertha is released under the [MIT](http://opensource.org/licenses/MIT) licens
322
346
  + 0.0.2:
323
347
  + Clean up and doc updates
324
348
  + 0.0.3:
325
- + Updated gemspec
349
+ + Updated gemspec
350
+ + 0.0.4:
351
+ + Added command line exec bb_auth_token to generate auth tokens
352
+ + Added splat args to child
353
+ + Deprecated Load. Use Ref from now on
data/Rakefile CHANGED
@@ -5,6 +5,7 @@ Bundler.require
5
5
  Bundler::GemHelper.install_tasks
6
6
 
7
7
  $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
8
+ load 'tasks/auth_token.rake'
8
9
 
9
10
  require 'rspec/core/rake_task'
10
11
  RSpec::Core::RakeTask.new(:spec) do |t|
@@ -18,4 +19,11 @@ task :clean do
18
19
  FileUtils.rm_r( cov ) if File.exists?( cov )
19
20
  end
20
21
 
22
+ desc 'Run samples'
23
+ task :samples do
24
+ path = File.expand_path( File.join( %w(.. examples ** *.rb) ), __FILE__ )
25
+ puts path.inspect
26
+ Dir.glob(path).sort.each { |example| puts example;%x(ruby #{example}) }
27
+ end
28
+
21
29
  task default: :spec
@@ -23,7 +23,9 @@ Gem::Specification.new do |s|
23
23
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
24
  s.require_paths = ["lib"]
25
25
 
26
- s.add_dependency 'map' , '~> 6.3.0'
27
- s.add_dependency 'typhoeus', '~> 0.6.2'
28
- s.add_dependency 'values' , '~> 1.5.0'
26
+ s.add_dependency 'main' , '~> 5.2.0'
27
+ s.add_dependency 'map' , '~> 6.3.0'
28
+ s.add_dependency 'typhoeus' , '~> 0.6.2'
29
+ s.add_dependency 'values' , '~> 1.5.0'
30
+ s.add_dependency 'firebase_token_generator', '~> 1.0.1'
29
31
  end
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env ruby
2
+ require 'bundler'
3
+ Bundler.require
4
+
5
+ Main {
6
+ argument( 'secret' ) {
7
+ description 'Specifies the firebase secret token'
8
+ cast :string
9
+ }
10
+ option( 'expiry' ) {
11
+ description 'Time(int) at which the auth token will be considered invalid'
12
+ cast :integer
13
+ argument :optional
14
+ }
15
+ option( 'valid_from' ) {
16
+ description 'Time(int) before which the auth token will be considered invalid'
17
+ cast :integer
18
+ argument :optional
19
+ }
20
+ option( 'debug' ) {
21
+ description 'Turns on debuging mode for security rules'
22
+ argument :optional
23
+ cast :boolean
24
+ defaults false
25
+ }
26
+ option( 'simulate' ) {
27
+ description 'Runs security rules but does not change the data'
28
+ argument :optional
29
+ cast :boolean
30
+ defaults false
31
+ }
32
+ option( 'admin' ) {
33
+ description 'Generates auth token for administrator'
34
+ argument :optional
35
+ cast :boolean
36
+ defaults false
37
+ }
38
+ option( 'data' ) {
39
+ description 'Addtional user auth data, specifies has a json'
40
+ argument :optional
41
+ cast :string
42
+ defaults ''
43
+ }
44
+
45
+ def print_summary( opts, data, token )
46
+ puts "FIREBASE AUTH TOKEN GENERATED!"
47
+ puts '-'*100
48
+ puts "o This token was generated with the following:"
49
+ puts " options: #{opts.inspect}"
50
+ puts " data: #{data.inspect}"
51
+ puts '-'*100
52
+ puts '='*200
53
+ puts token
54
+ puts '='*200
55
+ end
56
+
57
+ def run
58
+ gen = Firebase::FirebaseTokenGenerator.new( params['secret'].value )
59
+ opts = {}
60
+ %w(admin simulate debug expiry valid_from).each do |key|
61
+ opts[key.to_sym] = params[key].value if params[key].value != nil
62
+ end
63
+ unless params['data'].value.empty?
64
+ data = JSON.parse( params['data'].value )
65
+ else
66
+ data = {}
67
+ end
68
+ token = gen.create_token( data, opts)
69
+ print_summary( opts, data, token )
70
+ rescue => boom
71
+ puts '='*200
72
+ puts "HOY! Firebase auth token generation failed!"
73
+ puts boom
74
+ puts '='*200
75
+ end
76
+ }
@@ -1,6 +1,6 @@
1
1
  require 'bigbertha'
2
2
 
3
- ref = Bigbertha::Load.new( ENV['fb_url'] )
3
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
4
4
  ref.remove
5
5
  data = {
6
6
  a: 0,
@@ -1,5 +1,5 @@
1
1
  require 'bigbertha'
2
2
 
3
- ref = Bigbertha::Load.new( ENV['fb_url'] )
3
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
4
4
  ref.remove
5
5
  ref.set( %w(Hello World) )
@@ -1,6 +1,6 @@
1
1
  require 'bigbertha'
2
2
 
3
- ref = Bigbertha::Load.new( ENV['fb_url'] )
3
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
4
4
  ref.remove
5
5
  ref.push( "Bumblebee" )
6
6
  ref.push( "Tuna" )
@@ -1,6 +1,6 @@
1
1
  require 'bigbertha'
2
2
 
3
- ref = Bigbertha::Load.new( ENV['fb_url'] )
3
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
4
4
  ref.remove
5
5
  data = {
6
6
  a: {
@@ -1,6 +1,6 @@
1
1
  require 'bigbertha'
2
2
 
3
- ref = Bigbertha::Load.new( ENV['fb_url'] )
3
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
4
4
  ref.remove
5
5
  data = {
6
6
  a: {
@@ -1,6 +1,6 @@
1
1
  require 'bigbertha'
2
2
 
3
- ref = Bigbertha::Load.new( ENV['fb_url'] )
3
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
4
4
  ref.remove
5
5
  data = {
6
6
  a: {
@@ -1,6 +1,6 @@
1
1
  require 'bigbertha'
2
2
 
3
- ref = Bigbertha::Load.new( ENV['fb_url'] )
3
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
4
4
  ref.remove
5
5
  data = {
6
6
  a: {
@@ -1,6 +1,6 @@
1
1
  require 'bigbertha'
2
2
 
3
- ref = Bigbertha::Load.new( ENV['fb_url'] )
3
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
4
4
  ref.remove
5
5
  data = {
6
6
  a: {
@@ -1,6 +1,6 @@
1
1
  require 'bigbertha'
2
2
 
3
- ref = Bigbertha::Load.new( ENV['fb_url'] )
3
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
4
4
  ref.remove
5
5
  data = {
6
6
  a: {
@@ -1,7 +1,7 @@
1
1
  require 'bigbertha'
2
2
  require 'yaml'
3
3
 
4
- ref = Bigbertha::Load.new( ENV['fb_url'] )
4
+ ref = Bigbertha::Ref.new( ENV['fb_url'] )
5
5
  ref.remove
6
6
  a_ref = ref.push( {a:1, b:2} )
7
7
  b_ref = ref.push( {c:1, d:2} )
@@ -10,6 +10,7 @@ module Bigbertha
10
10
  res = handle_response( resp, location )
11
11
  res.is_a?(Map) ? Snapshot.new( res ).to_map : res.is_a?(String) ? res.to_val : res
12
12
  end
13
+ alias :val :read
13
14
 
14
15
  def set( data )
15
16
  location = json_url
@@ -65,7 +66,7 @@ module Bigbertha
65
66
  end
66
67
  resp = Typhoeus.post( location, gen_opts( opts ) )
67
68
  res = handle_response( resp, location )
68
- Bigbertha::Load.new( uri.to_s + '/' + res.name )
69
+ Bigbertha::Ref.new( uri.to_s + '/' + res.name )
69
70
  end
70
71
 
71
72
  def set_priority( priority )
@@ -10,12 +10,12 @@ class Map
10
10
  res.each_pair do |k,v|
11
11
  if self[k]
12
12
  if other[k]
13
- events << Event.new( Bigbertha::Load.evt_value, k )
13
+ events << Event.new( Bigbertha::Ref.evt_value, k )
14
14
  else
15
- events << Event.new( Bigbertha::Load.evt_child_removed, k )
15
+ events << Event.new( Bigbertha::Ref.evt_child_removed, k )
16
16
  end
17
17
  else
18
- events << Event.new( Bigbertha::Load.evt_child_added, k )
18
+ events << Event.new( Bigbertha::Ref.evt_child_added, k )
19
19
  end
20
20
  end
21
21
  events
@@ -1,18 +1,30 @@
1
1
  require 'uri'
2
2
 
3
3
  module Bigbertha
4
- module Ref
4
+ class Ref
5
+ include Bigbertha::Action
6
+
7
+ attr_reader :url, :uri
8
+
9
+ def self.evt_value; :value; end
10
+ def self.evt_child_added; :add_child; end
11
+ def self.evt_child_changed; :mod_child; end
12
+ def self.evt_child_removed; :rm_child; end
13
+ def self.evt_child_moved; :mv_child; end
14
+
15
+ def initialize( url, auth_token=nil )
16
+ @url = url
17
+ @uri = URI.parse( @url )
18
+ @auth_token = auth_token
19
+ end
20
+
5
21
  def name
6
22
  parse_path[-1]
7
23
  end
8
-
9
- def val
10
- read
11
- end
12
-
24
+
13
25
  def root
14
26
  return self if root?
15
- Bigbertha::Load.new( @uri.scheme + '://' + @uri.host )
27
+ Bigbertha::Ref.new( @uri.scheme + '://' + @uri.host, @auth_token )
16
28
  end
17
29
 
18
30
  def root?
@@ -22,11 +34,12 @@ module Bigbertha
22
34
  def parent
23
35
  return nil if root?
24
36
  path = parse_path[0..-2].join( "/" )
25
- Bigbertha::Load.new( root.uri.merge(path).to_s )
37
+ Bigbertha::Ref.new( root.uri.merge(path).to_s, @auth_token )
26
38
  end
27
39
 
28
- def child( child_path )
29
- Bigbertha::Load.new( "#{uri.to_s}/#{child_path}" )
40
+ def child( *child_path )
41
+ child_path = (child_path.is_a?(Array) ? child_path.join('/') : child_path )
42
+ Bigbertha::Ref.new( "#{uri.to_s}/#{child_path}", @auth_token )
30
43
  end
31
44
 
32
45
  def child?( child_path )
@@ -54,7 +67,6 @@ module Bigbertha
54
67
  @url
55
68
  end
56
69
 
57
-
58
70
  private
59
71
 
60
72
  def parse_path
@@ -1,3 +1,3 @@
1
1
  module Bigbertha
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,9 @@
1
+ namespace :token do
2
+ desc 'Generates firebase auth token'
3
+ task :generate, :secret, :admin do |t, opts|
4
+ opts = opts.with_defaults( admin:true, debug:false, simulate:false )
5
+ gen = Firebase::FirebaseTokenGenerator.new( opts.delete( :secret ) )
6
+ data = {}
7
+ puts "Your auth token\n #{gen.create_token( data, opts ) }"
8
+ end
9
+ end
@@ -8,7 +8,7 @@ describe Map do
8
8
  curr = Map(:a,2)
9
9
  evts = prev.diff( curr )
10
10
  evts.should have(1).item
11
- evts.first.event_type.should == Bigbertha::Load.evt_value
11
+ evts.first.event_type.should == Bigbertha::Ref.evt_value
12
12
  evts.first.ref.should == 'a'
13
13
  end
14
14
 
@@ -17,7 +17,7 @@ describe Map do
17
17
  curr = Map(:a,2)
18
18
  evts = prev.diff( curr )
19
19
  evts.should have(1).item
20
- evts.first.event_type.should == Bigbertha::Load.evt_child_added
20
+ evts.first.event_type.should == Bigbertha::Ref.evt_child_added
21
21
  evts.first.ref.should == 'a'
22
22
  end
23
23
 
@@ -26,7 +26,7 @@ describe Map do
26
26
  curr = Map.new
27
27
  evts = prev.diff( curr )
28
28
  evts.should have(1).item
29
- evts.first.event_type.should == Bigbertha::Load.evt_child_removed
29
+ evts.first.event_type.should == Bigbertha::Ref.evt_child_removed
30
30
  evts.first.ref.should == 'a'
31
31
  end
32
32
  end
@@ -37,7 +37,7 @@ describe Map do
37
37
  curr = Map({a:{a_1:10, a_2:20}})
38
38
  evts = prev.diff( curr )
39
39
  evts.should have(1).item
40
- evts.first.event_type.should == Bigbertha::Load.evt_value
40
+ evts.first.event_type.should == Bigbertha::Ref.evt_value
41
41
  evts.first.ref.should == 'a'
42
42
  end
43
43
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Bigbertha::Ref do
4
4
  before :all do
5
- @ref = Bigbertha::Load.new( ENV['fb_url'] )
5
+ @ref = Bigbertha::Ref.new( ENV['fb_url'] )
6
6
  end
7
7
 
8
8
  describe '#child?' do
@@ -35,7 +35,7 @@ describe Bigbertha::Ref do
35
35
  describe '#val' do
36
36
  it "retrieves simple value correctly" do
37
37
  @ref.set( a:1 )
38
- @ref.child( :a ).val.to_i.should == 1
38
+ @ref.child( :a ).val.should == 1
39
39
  end
40
40
 
41
41
  it "retrieves complex values correctly" do
@@ -44,9 +44,32 @@ describe Bigbertha::Ref do
44
44
  end
45
45
  end
46
46
 
47
+ describe '#update' do
48
+ it "updates a value correctly" do
49
+ @ref.set( a:{b:{c:1, d:"hello"}} )
50
+ data = @ref.val
51
+ data.a.b.c = 2
52
+ data.a.b.d = "BumbleBee Tuna"
53
+ @ref.update( data )
54
+ @ref.val.a.b.c.should == 2
55
+ @ref.val.a.b.d.should == "BumbleBee Tuna"
56
+ end
57
+
58
+ it "updates the data structure correctly" do
59
+ @ref.set( a:{b:{c:1, d:"hello"}} )
60
+ data = @ref.val
61
+ data.delete( :b )
62
+ data.a.b = {z:10}
63
+ @ref.update( data )
64
+ @ref.val.a.b.z.should == 10
65
+ lambda { @ref.val.a.b.c }.should raise_error NoMethodError
66
+ end
67
+
68
+ end
69
+
47
70
  describe '#child' do
48
71
  it "creates a child ref correctly" do
49
- child_ref = @ref.child( 'fred')
72
+ child_ref = @ref.child( 'fred' )
50
73
  child_ref.name.should == 'fred'
51
74
  child_ref.parent.to_s.should == ENV['fb_url']
52
75
  end
@@ -56,6 +79,19 @@ describe Bigbertha::Ref do
56
79
  child_ref.name.should == 'duh'
57
80
  child_ref.parent.to_s.should == ENV['fb_url'] + '/fred/blee'
58
81
  end
82
+
83
+ it "handles array args correctly" do
84
+ child_ref = @ref.child( %w(fred blee duh) )
85
+ child_ref.name.should == 'duh'
86
+ child_ref.parent.to_s.should == ENV['fb_url'] + '/fred/blee'
87
+ end
88
+
89
+ it "handles splat correctly" do
90
+ child_ref = @ref.child( :fred, :blee, :duh )
91
+ child_ref.name.should == 'duh'
92
+ child_ref.parent.to_s.should == ENV['fb_url'] + '/fred/blee'
93
+ end
94
+
59
95
  end
60
96
 
61
97
  describe '#name' do
@@ -64,7 +100,7 @@ describe Bigbertha::Ref do
64
100
  end
65
101
 
66
102
  it "identifies a url name correctly" do
67
- ref = Bigbertha::Load.new( ENV['fb_url'] + '/fred/blee' )
103
+ ref = Bigbertha::Ref.new( ENV['fb_url'] + '/fred/blee' )
68
104
  ref.name.should == 'blee'
69
105
  end
70
106
  end
@@ -75,7 +111,7 @@ describe Bigbertha::Ref do
75
111
  end
76
112
 
77
113
  it "identifies non root url correctly" do
78
- ref = Bigbertha::Load.new( ENV['fb_url'] + '/fred/blee' )
114
+ ref = Bigbertha::Ref.new( ENV['fb_url'] + '/fred/blee' )
79
115
  ref.root.to_s.should == ENV['fb_url']
80
116
  end
81
117
  end
@@ -86,12 +122,12 @@ describe Bigbertha::Ref do
86
122
  end
87
123
 
88
124
  it "identifies / as root correctly" do
89
- ref = Bigbertha::Load.new( ENV['fb_url'] + '/' )
125
+ ref = Bigbertha::Ref.new( ENV['fb_url'] + '/' )
90
126
  ref.should be_root
91
127
  end
92
128
 
93
129
  it "identifies non root correctly" do
94
- ref = Bigbertha::Load.new( ENV['fb_url'] + '/fred' )
130
+ ref = Bigbertha::Ref.new( ENV['fb_url'] + '/fred' )
95
131
  ref.should_not be_root
96
132
  end
97
133
  end
@@ -102,7 +138,7 @@ describe Bigbertha::Ref do
102
138
  end
103
139
 
104
140
  it "identifies a parent correctly" do
105
- ref = Bigbertha::Load.new( ENV['fb_url'] + '/fred/blee' )
141
+ ref = Bigbertha::Ref.new( ENV['fb_url'] + '/fred/blee' )
106
142
  ref.parent.to_s.should == ENV['fb_url'] + '/fred'
107
143
  end
108
144
  end
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Bigbertha::Load do
3
+ describe Bigbertha::Ref do
4
4
  before :all do
5
5
  @url = ENV['fb_url']
6
- @fb = Bigbertha::Load.new( @url )
6
+ @fb = Bigbertha::Ref.new( @url )
7
7
  end
8
8
 
9
9
  describe '#inc' do
@@ -40,7 +40,7 @@ describe Bigbertha::Load do
40
40
  end
41
41
 
42
42
  it "fails if the field is non numeric" do
43
- lambda { @fb.child( :c ).inc( :c_1 ) }.should raise_error( Bigbertha::Load::NonNumericFieldError )
43
+ lambda { @fb.child( :c ).inc( :c_1 ) }.should raise_error( Bigbertha::Ref::NonNumericFieldError )
44
44
  end
45
45
  end
46
46
 
@@ -78,13 +78,13 @@ describe Bigbertha::Load do
78
78
  end
79
79
 
80
80
  it "fails if the field is non numeric" do
81
- lambda { @fb.child( :c ).dec( :c_1 ) }.should raise_error( Bigbertha::Load::NonNumericFieldError )
81
+ lambda { @fb.child( :c ).dec( :c_1 ) }.should raise_error( Bigbertha::Ref::NonNumericFieldError )
82
82
  end
83
83
  end
84
84
 
85
85
  describe '#set_rules' do
86
86
  before :each do
87
- @auth_fb = Bigbertha::Load.new( @url, ENV['fb_auth_token'] )
87
+ @auth_fb = Bigbertha::Ref.new( @url, ENV['fb_auth_token'] )
88
88
  end
89
89
 
90
90
  after :each do
@@ -104,7 +104,7 @@ describe Bigbertha::Load do
104
104
  res = @fb.child(:tmp).read
105
105
  res.should == { a: 0, b: 1 }
106
106
 
107
- lambda { @fb.set( tmp: { d: 0 } ) }.should raise_error Bigbertha::Load::PermissionDeniedError
107
+ lambda { @fb.set( tmp: { d: 0 } ) }.should raise_error Bigbertha::Ref::PermissionDeniedError
108
108
  end
109
109
  end
110
110
 
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigbertha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fernand Galiana
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-09 00:00:00.000000000 Z
11
+ date: 2013-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ prerelease: false
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 5.2.0
20
+ name: main
21
+ requirement: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ~>
24
+ - !ruby/object:Gem::Version
25
+ version: 5.2.0
26
+ type: :runtime
13
27
  - !ruby/object:Gem::Dependency
14
28
  prerelease: false
15
29
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,11 +66,26 @@ dependencies:
52
66
  - !ruby/object:Gem::Version
53
67
  version: 1.5.0
54
68
  type: :runtime
69
+ - !ruby/object:Gem::Dependency
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 1.0.1
76
+ name: firebase_token_generator
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ~>
80
+ - !ruby/object:Gem::Version
81
+ version: 1.0.1
82
+ type: :runtime
55
83
  description: Firebase is a real time backend to allow clients to sharedata on the
56
84
  web. This gem provides a ruby API implementation.
57
85
  email:
58
86
  - fernand.galiana@gmail.com
59
- executables: []
87
+ executables:
88
+ - bb_auth_token
60
89
  extensions: []
61
90
  extra_rdoc_files: []
62
91
  files:
@@ -65,6 +94,7 @@ files:
65
94
  - README.md
66
95
  - Rakefile
67
96
  - bigbertha.gemspec
97
+ - bin/bb_auth_token
68
98
  - examples/a.rb
69
99
  - examples/b.rb
70
100
  - examples/c.rb
@@ -81,10 +111,10 @@ files:
81
111
  - lib/bigbertha/core_ext/map.rb
82
112
  - lib/bigbertha/core_ext/string.rb
83
113
  - lib/bigbertha/faults.rb
84
- - lib/bigbertha/load.rb
85
114
  - lib/bigbertha/ref.rb
86
115
  - lib/bigbertha/snapshot.rb
87
116
  - lib/bigbertha/version.rb
117
+ - lib/tasks/auth_token.rake
88
118
  - spec/bigbertha/.firebase_spec.rb.swp
89
119
  - spec/bigbertha/core_ext/map_spec.rb
90
120
  - spec/bigbertha/core_ext/string_spec.rb
@@ -1,22 +0,0 @@
1
- require 'bigbertha/ref'
2
-
3
- module Bigbertha
4
- class Load
5
- include Bigbertha::Ref
6
- include Bigbertha::Action
7
-
8
- attr_reader :url, :uri
9
-
10
- def self.evt_value; :value; end
11
- def self.evt_child_added; :add_child; end
12
- def self.evt_child_changed; :mod_child; end
13
- def self.evt_child_removed; :rm_child; end
14
- def self.evt_child_moved; :mv_child; end
15
-
16
- def initialize( url, auth_token=nil )
17
- @url = url
18
- @uri = URI.parse( @url )
19
- @auth_token = auth_token
20
- end
21
- end
22
- end