firebase 0.1.6 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []