firebase 0.1.6 → 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4695f53c5178de66b3d6e41ea5a3a0c5779099cf
4
+ data.tar.gz: 2e56f83b67bddea9e40470ba74a01467dbd608ed
5
+ SHA512:
6
+ metadata.gz: ea1883f4e4ba205ac2b81c40a3b576925e9dd2df3d68ee8d3dd25e4f8a043af5ccebb2b158faed2aa2e887935dbfde3b404dd9778a5e90dd28758342e4cc852c
7
+ data.tar.gz: c456f212241036b86703388137e0b0e153d7f611a41a0b1157fc3ba3a4226f9e1dd3be5a220661bacd410c3c9ebe57df54b0ea45cfaea342c17f580182d912af
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
- - UNRELEASED
1
+ - 0.2.0
2
+
3
+ * You can now pass query options to get/push/set, etc.
4
+ * The old syntax no longer works. You now need to create instance variables of Firebase::Client.new(...)
5
+
6
+ - 0.1.6
2
7
 
3
8
  * You can now create instances of Firebase. The old syntax still works but will be removed in version 0,2. - @wannabefro
@@ -46,7 +46,7 @@ GEM
46
46
  multi_xml (~> 0.5)
47
47
  rack (~> 1.2)
48
48
  rack (1.5.2)
49
- rake (10.1.0)
49
+ rake (10.1.1)
50
50
  rdoc (4.0.1)
51
51
  json (~> 1.4)
52
52
  rspec (2.14.1)
data/README.md CHANGED
@@ -17,7 +17,7 @@ gem install firebase
17
17
  ```ruby
18
18
  base_uri = 'https://<your-firebase>.firebaseio.com/'
19
19
 
20
- firebase = Firebase.new(base_uri)
20
+ firebase = Firebase::Client.new(base_uri)
21
21
 
22
22
  response = firebase.push("todos", { :name => 'Pick the milk', :priority => 1 })
23
23
  response.success? # => true
@@ -28,22 +28,26 @@ response.raw_body # => '{"name":"-INOQPH-aV_psbk3ZXEX"}'
28
28
 
29
29
  If you have a read-only namespace, set your secret key as follows:
30
30
  ```ruby
31
- firebase = Firebase.new(base_uri, secret_key)
31
+ firebase = Firebase::Client.new(base_uri, secret_key)
32
32
 
33
33
  response = firebase.push("todos", { :name => 'Pick the milk', :priority => 1 })
34
34
  ```
35
35
 
36
- So far, supported methods are:
36
+ You can now pass custom query options to firebase:
37
37
 
38
38
  ```ruby
39
- set(path, data)
40
- get(path)
41
- push(path, data)
42
- delete(path)
43
- update(path, data)
39
+ response = firebase.push("todos", :limit => 1)
44
40
  ```
45
41
 
46
- More features are coming soon.
42
+ So far, supported methods are:
43
+
44
+ ```ruby
45
+ set(path, data, query_options)
46
+ get(path, query_options)
47
+ push(path, data, query_options)
48
+ delete(path, query_options)
49
+ update(path, data, query_options)
50
+ ```
47
51
 
48
52
  More information about Firebase and the Firebase API is available at the
49
53
  [official website](http://www.firebase.com/).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.6
1
+ 0.2.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "firebase"
8
- s.version = "0.1.6"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Oscar Del Ben"]
12
- s.date = "2013-11-23"
12
+ s.date = "2014-03-16"
13
13
  s.description = "Firebase wrapper for Ruby"
14
14
  s.email = "info@oscardelben.com"
15
15
  s.extra_rdoc_files = [
@@ -37,11 +37,11 @@ Gem::Specification.new do |s|
37
37
  s.homepage = "http://github.com/oscardelben/firebase-ruby"
38
38
  s.licenses = ["MIT"]
39
39
  s.require_paths = ["lib"]
40
- s.rubygems_version = "1.8.23"
40
+ s.rubygems_version = "2.0.3"
41
41
  s.summary = "Firebase wrapper for Ruby"
42
42
 
43
43
  if s.respond_to? :specification_version then
44
- s.specification_version = 3
44
+ s.specification_version = 4
45
45
 
46
46
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
47
  s.add_runtime_dependency(%q<typhoeus>, [">= 0.6.1"])
@@ -1,95 +1,56 @@
1
- class Firebase
1
+ module Firebase
2
+ class Client
2
3
 
3
- require 'firebase/request'
4
- require 'firebase/response'
4
+ require 'firebase/request'
5
+ require 'firebase/response'
5
6
 
6
- class << self
7
-
8
- def format_uri(other)
7
+ def self.format_uri(other)
9
8
  if other
10
9
  other.end_with?("/") ? other : other + '/'
11
10
  end
12
11
  end
13
12
 
14
- def base_uri=(other)
15
- deprecate
16
- default_instance.request.base_uri = format_uri(other)
17
- end
13
+ attr_reader :auth, :request
18
14
 
19
- def auth=(auth)
20
- deprecate
21
- default_instance.request.auth = auth
15
+ def initialize(base_uri, auth=nil)
16
+ uri = Firebase::Client.format_uri(base_uri)
17
+ @request = Firebase::Request.new(uri)
18
+ @auth = auth
22
19
  end
23
20
 
24
- def set(path, data)
25
- deprecate
26
- default_instance.set(path, data)
21
+ # Writes and returns the data
22
+ # Firebase.set('users/info', { 'name' => 'Oscar' }) => { 'name' => 'Oscar' }
23
+ def set(path, data, query={})
24
+ request.put(path, data, query_options(query))
27
25
  end
28
26
 
29
- def get(path)
30
- deprecate
31
- default_instance.get(path)
27
+ # Returns the data at path
28
+ def get(path, query={})
29
+ request.get(path, query_options(query))
32
30
  end
33
31
 
34
- def push(path, data)
35
- deprecate
36
- default_instance.push(path, data)
32
+ # Writes the data, returns the key name of the data added
33
+ # Firebase.push('users', { 'age' => 18}) => {"name":"-INOQPH-aV_psbk3ZXEX"}
34
+ def push(path, data, query={})
35
+ request.post(path, data, query_options(query))
37
36
  end
38
37
 
39
- def delete(path)
40
- deprecate
41
- default_instance.delete(path)
38
+ # Deletes the data at path and returs true
39
+ def delete(path, query={})
40
+ request.delete(path, query_options(query))
42
41
  end
43
42
 
44
- def update(path, data)
45
- deprecate
46
- default_instance.patch(path, data)
43
+ # Write the data at path but does not delete ommited children. Returns the data
44
+ # Firebase.update('users/info', { 'name' => 'Oscar' }) => { 'name' => 'Oscar' }
45
+ def update(path, data, query={})
46
+ request.patch(path, data, query_options(query))
47
47
  end
48
48
 
49
- def default_instance
50
- @default_instance ||= Firebase.new(nil, nil)
51
- end
49
+ private
52
50
 
53
- def deprecate
54
- puts "[FIREBASE] This syntax has been deprecated. Please upgrade to the new Firebase.new(...).method syntax"
51
+ def query_options(query)
52
+ { :auth => auth }.merge(query)
55
53
  end
56
-
57
- end
58
-
59
- attr_accessor :request
60
-
61
- def initialize(base_uri, auth=nil)
62
- uri = Firebase.format_uri(base_uri)
63
- @request = Firebase::Request.new(uri, auth)
64
- end
65
-
66
- # Writes and returns the data
67
- # Firebase.set('users/info', { 'name' => 'Oscar' }) => { 'name' => 'Oscar' }
68
- def set(path, data)
69
- request.put(path, data)
70
- end
71
-
72
- # Returns the data at path
73
- def get(path)
74
- request.get(path)
75
- end
76
-
77
- # Writes the data, returns the key name of the data added
78
- # Firebase.push('users', { 'age' => 18}) => {"name":"-INOQPH-aV_psbk3ZXEX"}
79
- def push(path, data)
80
- request.post(path, data)
81
54
  end
82
-
83
- # Deletes the data at path and returs true
84
- def delete(path)
85
- request.delete(path)
86
- end
87
-
88
- # Write the data at path but does not delete ommited children. Returns the data
89
- # Firebase.update('users/info', { 'name' => 'Oscar' }) => { 'name' => 'Oscar' }
90
- def update(path, data)
91
- request.patch(path, data)
92
- end
93
-
94
55
  end
95
56
 
@@ -3,51 +3,50 @@ require 'json'
3
3
  require 'open-uri'
4
4
  require 'uri'
5
5
 
6
- class Firebase
6
+ module Firebase
7
7
  class Request
8
8
 
9
- attr_accessor :base_uri, :auth
9
+ attr_reader :base_uri
10
10
 
11
- def initialize(base_uri, auth=nil)
11
+ def initialize(base_uri)
12
12
  @base_uri = base_uri
13
- @auth = auth
14
13
  end
15
14
 
16
- def get(path)
17
- process(:get, path)
15
+ def get(path, query_options)
16
+ process(:get, path, nil, query_options)
18
17
  end
19
18
 
20
- def put(path, value)
21
- process(:put, path, :body => value.to_json)
19
+ def put(path, value, query_options)
20
+ process(:put, path, value.to_json, query_options)
22
21
  end
23
22
 
24
- def post(path, value)
25
- process(:post, path, :body => value.to_json)
23
+ def post(path, value, query_options)
24
+ process(:post, path, value.to_json, query_options)
26
25
  end
27
26
 
28
- def delete(path)
29
- process(:delete, path)
27
+ def delete(path, query_options)
28
+ process(:delete, path, nil, query_options)
30
29
  end
31
30
 
32
- def patch(path, value)
33
- process(:patch, path, :body => value.to_json)
31
+ def patch(path, value, query_options)
32
+ process(:patch, path, value.to_json, query_options)
34
33
  end
35
34
 
36
35
  def build_url(path)
37
36
  path = "#{path}.json"
38
- query_string = auth ? "?auth=#{auth}" : ""
39
- url = URI.join(base_uri, path, query_string)
37
+ url = URI.join(base_uri, path)
40
38
 
41
39
  url.to_s
42
40
  end
43
41
 
44
42
  private
45
43
 
46
- def process(method, path, options={})
44
+ def process(method, path, body=nil, query_options={})
47
45
  @@hydra ||= Typhoeus::Hydra.new
48
46
  request = Typhoeus::Request.new(build_url(path),
49
- :body => options[:body],
50
- :method => method)
47
+ :body => body,
48
+ :method => method,
49
+ :params => query_options)
51
50
  @@hydra.queue(request)
52
51
  @@hydra.run
53
52
 
@@ -1,4 +1,4 @@
1
- class Firebase
1
+ module Firebase
2
2
  class Response
3
3
 
4
4
  attr_accessor :response
@@ -17,12 +17,4 @@ describe "Firebase Request" do
17
17
  @req.build_url('users/eugene').should == 'https://test.firebaseio.com/users/eugene.json'
18
18
  end
19
19
  end
20
-
21
- describe 'auth' do
22
- it "should include a auth in the query string, if configured" do
23
- req = Firebase::Request.new('https://test.firebaseio.com', 'secretkey')
24
-
25
- req.build_url('users/eugene').should == 'https://test.firebaseio.com/users/eugene.json?auth=secretkey'
26
- end
27
- end
28
20
  end
@@ -7,20 +7,20 @@ describe "Firebase" do
7
7
  end
8
8
 
9
9
  before do
10
- @firebase = Firebase.new('https://test.firebaseio.com')
10
+ @firebase = Firebase::Client.new('https://test.firebaseio.com')
11
11
  @req = @firebase.request
12
12
  end
13
13
 
14
14
  describe "set" do
15
15
  it "writes and returns the data" do
16
- @req.should_receive(:put).with('users/info', data)
16
+ @req.should_receive(:put).with('users/info', data, {:auth => nil})
17
17
  @firebase.set('users/info', data)
18
18
  end
19
19
  end
20
20
 
21
21
  describe "get" do
22
22
  it "returns the data" do
23
- @req.should_receive(:get).with('users/info')
23
+ @req.should_receive(:get).with('users/info', {:auth => nil})
24
24
  @firebase.get('users/info')
25
25
  end
26
26
 
@@ -51,22 +51,30 @@ describe "Firebase" do
51
51
 
52
52
  describe "push" do
53
53
  it "writes the data" do
54
- @req.should_receive(:post).with('users', data)
54
+ @req.should_receive(:post).with('users', data, {:auth => nil})
55
55
  @firebase.push('users', data)
56
56
  end
57
57
  end
58
58
 
59
59
  describe "delete" do
60
60
  it "returns true" do
61
- @req.should_receive(:delete).with('users/info')
61
+ @req.should_receive(:delete).with('users/info', {:auth => nil})
62
62
  @firebase.delete('users/info')
63
63
  end
64
64
  end
65
65
 
66
66
  describe "update" do
67
67
  it "updates and returns the data" do
68
- @req.should_receive(:patch).with('users/info', data)
68
+ @req.should_receive(:patch).with('users/info', data, {:auth => nil})
69
69
  @firebase.update('users/info', data)
70
70
  end
71
71
  end
72
+
73
+ describe "options" do
74
+ it "passes custom options" do
75
+ firebase = Firebase::Client.new('https://test.firebaseio.com', 'secret')
76
+ firebase.request.should_receive(:get).with('todos', {:auth => 'secret', :foo => 'bar'})
77
+ firebase.get('todos', :foo => 'bar')
78
+ end
79
+ end
72
80
  end
metadata CHANGED
@@ -1,80 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firebase
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.6
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Oscar Del Ben
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-11-23 00:00:00.000000000 Z
11
+ date: 2014-03-16 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
14
+ name: typhoeus
15
+ requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.6.1
20
- none: false
21
- prerelease: false
22
- name: typhoeus
23
20
  type: :runtime
24
- requirement: !ruby/object:Gem::Requirement
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
25
23
  requirements:
26
- - - ! '>='
24
+ - - '>='
27
25
  - !ruby/object:Gem::Version
28
26
  version: 0.6.1
29
- none: false
30
27
  - !ruby/object:Gem::Dependency
31
- version_requirements: !ruby/object:Gem::Requirement
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
32
30
  requirements:
33
- - - ! '>='
31
+ - - '>='
34
32
  - !ruby/object:Gem::Version
35
33
  version: '0'
36
- none: false
37
- prerelease: false
38
- name: json
39
34
  type: :runtime
40
- requirement: !ruby/object:Gem::Requirement
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
41
37
  requirements:
42
- - - ! '>='
38
+ - - '>='
43
39
  - !ruby/object:Gem::Version
44
40
  version: '0'
45
- none: false
46
41
  - !ruby/object:Gem::Dependency
47
- version_requirements: !ruby/object:Gem::Requirement
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
48
44
  requirements:
49
- - - ! '>='
45
+ - - '>='
50
46
  - !ruby/object:Gem::Version
51
47
  version: '0'
52
- none: false
53
- prerelease: false
54
- name: rspec
55
48
  type: :development
56
- requirement: !ruby/object:Gem::Requirement
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
- - - ! '>='
52
+ - - '>='
59
53
  - !ruby/object:Gem::Version
60
54
  version: '0'
61
- none: false
62
55
  - !ruby/object:Gem::Dependency
63
- version_requirements: !ruby/object:Gem::Requirement
56
+ name: jeweler
57
+ requirement: !ruby/object:Gem::Requirement
64
58
  requirements:
65
59
  - - ~>
66
60
  - !ruby/object:Gem::Version
67
61
  version: 1.8.3
68
- none: false
69
- prerelease: false
70
- name: jeweler
71
62
  type: :development
72
- requirement: !ruby/object:Gem::Requirement
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
73
65
  requirements:
74
66
  - - ~>
75
67
  - !ruby/object:Gem::Version
76
68
  version: 1.8.3
77
- none: false
78
69
  description: Firebase wrapper for Ruby
79
70
  email: info@oscardelben.com
80
71
  executables: []
@@ -102,29 +93,25 @@ files:
102
93
  homepage: http://github.com/oscardelben/firebase-ruby
103
94
  licenses:
104
95
  - MIT
96
+ metadata: {}
105
97
  post_install_message:
106
98
  rdoc_options: []
107
99
  require_paths:
108
100
  - lib
109
101
  required_ruby_version: !ruby/object:Gem::Requirement
110
102
  requirements:
111
- - - ! '>='
103
+ - - '>='
112
104
  - !ruby/object:Gem::Version
113
- segments:
114
- - 0
115
- hash: -3647962587689699515
116
105
  version: '0'
117
- none: false
118
106
  required_rubygems_version: !ruby/object:Gem::Requirement
119
107
  requirements:
120
- - - ! '>='
108
+ - - '>='
121
109
  - !ruby/object:Gem::Version
122
110
  version: '0'
123
- none: false
124
111
  requirements: []
125
112
  rubyforge_project:
126
- rubygems_version: 1.8.23
113
+ rubygems_version: 2.0.3
127
114
  signing_key:
128
- specification_version: 3
115
+ specification_version: 4
129
116
  summary: Firebase wrapper for Ruby
130
117
  test_files: []