firebase 0.2.4 → 0.2.5

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: c0d272b8076db9628a215cc2643851b1c903792f
4
- data.tar.gz: 02f854d3a3a9de3aa92a26819e8f6769cf9ceb0b
3
+ metadata.gz: 7f4d0e635f2b61323e742ed14dffca10ef4507ea
4
+ data.tar.gz: feb3f0741ff08578e52d78f5396012c0b0f4ab76
5
5
  SHA512:
6
- metadata.gz: 6c98bd290872e0db6015f58f3f70ae8b9e552b666177823d33fe363a3c3b40c9b6d9c7f5a7b6467c46ccc2fc75a68e7ab55b11f861ed822a644c73df43efdda5
7
- data.tar.gz: 753b7d2324f190d48adda9f8169e9bb4dd0bdf69bcfb0e9769abfff559cb11327903f32a7693794f51cf76e9038f8af167d4136d61994c999972f6dd535fb862
6
+ metadata.gz: b7330bf19b01c9631ca5c181248907a5f4fa8faafe1db2ce85f23eb5c63b5317b41f13a4eca104c58fd8c96534ff5014dc3b86dfa53e45aa0c7fbe86950f382e
7
+ data.tar.gz: e30401898c34f104c7c4a4b6257f96eb4a6e0e090c64b7488e0eb02f3df2241061d30d73607d7fa4dfdd7b9fc4faa57d28f5e661f301c0a83f84790cbaaa4056
data/README.md CHANGED
@@ -7,12 +7,12 @@ update your clients **in realtime from the backend**.
7
7
 
8
8
  See a [video demo](https://vimeo.com/41494336?utm_source=internal&utm_medium=email&utm_content=cliptranscoded&utm_campaign=adminclip) of what's possible.
9
9
 
10
- ### Installation
10
+ ## Installation
11
11
 
12
12
  ```
13
13
  gem install firebase
14
14
  ```
15
- ### Usage
15
+ ## Usage
16
16
 
17
17
  ```ruby
18
18
  base_uri = 'https://<your-firebase>.firebaseio.com/'
@@ -58,10 +58,23 @@ delete(path, query_options)
58
58
  update(path, data, query_options)
59
59
  ```
60
60
 
61
+ ### Configuring HTTP options
62
+
63
+ [httpclient](https://github.com/nahi/httpclient) is used under the covers to make HTTP requests.
64
+ You may find yourself wanting to tweak the timeout settings. By default, `httpclient` uses
65
+ some [sane defaults](https://github.com/nahi/httpclient/blob/dd322d39d4d11c48f7bbbc05ed6273ac912d3e3b/lib/httpclient/session.rb#L138),
66
+ but it is quite easy to change them by modifying the `request` object directly:
67
+
68
+ ```ruby
69
+ firebase = Firebase::Client.new(base_uri)
70
+ # firebase.request is a regular httpclient object
71
+ firebase.request.connect_timeout = 30
72
+ ```
73
+
61
74
  More information about Firebase and the Firebase API is available at the
62
75
  [official website](http://www.firebase.com/).
63
76
 
64
- ### Copyright
77
+ ## Copyright
65
78
 
66
79
  Copyright (c) 2013 Oscar Del Ben. See LICENSE.txt for
67
80
  further details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.5
data/firebase.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: firebase 0.2.4 ruby lib
5
+ # stub: firebase 0.2.5 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "firebase"
9
- s.version = "0.2.4"
9
+ s.version = "0.2.5"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Oscar Del Ben"]
14
- s.date = "2015-05-24"
14
+ s.date = "2015-11-18"
15
15
  s.description = "Firebase wrapper for Ruby"
16
16
  s.email = "info@oscardelben.com"
17
17
  s.extra_rdoc_files = [
@@ -31,7 +31,6 @@ Gem::Specification.new do |s|
31
31
  "VERSION",
32
32
  "firebase.gemspec",
33
33
  "lib/firebase.rb",
34
- "lib/firebase/request.rb",
35
34
  "lib/firebase/response.rb",
36
35
  "lib/firebase/server_value.rb",
37
36
  "spec/firebase_spec.rb",
data/lib/firebase.rb CHANGED
@@ -1,7 +1,8 @@
1
- require 'uri'
2
- require 'firebase/request'
3
1
  require 'firebase/response'
4
2
  require 'firebase/server_value'
3
+ require 'httpclient'
4
+ require 'json'
5
+ require 'uri'
5
6
 
6
7
  module Firebase
7
8
  class Client
@@ -12,47 +13,51 @@ module Firebase
12
13
  raise ArgumentError.new('base_uri must be a valid https uri')
13
14
  end
14
15
  base_uri += '/' unless base_uri.end_with?('/')
15
- @request = Firebase::Request.new(base_uri)
16
+ @request = HTTPClient.new({
17
+ :base_url => base_uri,
18
+ :default_header => {
19
+ 'Content-Type' => 'application/json'
20
+ }
21
+ })
16
22
  @auth = auth
17
23
  end
18
24
 
19
25
  # Writes and returns the data
20
26
  # Firebase.set('users/info', { 'name' => 'Oscar' }) => { 'name' => 'Oscar' }
21
27
  def set(path, data, query={})
22
- request.put(path, data, query_options(query))
28
+ process :put, path, data, query
23
29
  end
24
30
 
25
31
  # Returns the data at path
26
32
  def get(path, query={})
27
- request.get(path, query_options(query))
33
+ process :get, path, query
28
34
  end
29
35
 
30
36
  # Writes the data, returns the key name of the data added
31
37
  # Firebase.push('users', { 'age' => 18}) => {"name":"-INOQPH-aV_psbk3ZXEX"}
32
38
  def push(path, data, query={})
33
- request.post(path, data, query_options(query))
39
+ process :post, path, data, query
34
40
  end
35
41
 
36
42
  # Deletes the data at path and returs true
37
43
  def delete(path, query={})
38
- request.delete(path, query_options(query))
44
+ process :delete, path, query
39
45
  end
40
46
 
41
47
  # Write the data at path but does not delete ommited children. Returns the data
42
48
  # Firebase.update('users/info', { 'name' => 'Oscar' }) => { 'name' => 'Oscar' }
43
49
  def update(path, data, query={})
44
- request.patch(path, data, query_options(query))
50
+ process :patch, path, data, query
45
51
  end
46
52
 
47
53
  private
48
54
 
49
- def query_options(query)
50
- if auth
51
- { :auth => auth }.merge(query)
52
- else
53
- query
54
- end
55
+ def process(verb, path, data=nil, query={})
56
+ Firebase::Response.new @request.request(verb, "#{path}.json", {
57
+ :body => (data && data.to_json),
58
+ :query => (auth ? { :auth => auth }.merge(query) : query),
59
+ :follow_redirect => true
60
+ })
55
61
  end
56
62
  end
57
63
  end
58
-
@@ -17,19 +17,18 @@ describe "Firebase" do
17
17
 
18
18
  before do
19
19
  @firebase = Firebase::Client.new('https://test.firebaseio.com')
20
- @req = @firebase.request
21
20
  end
22
21
 
23
22
  describe "set" do
24
23
  it "writes and returns the data" do
25
- @req.should_receive(:put).with('users/info', data, {})
24
+ @firebase.should_receive(:process).with(:put, 'users/info', data, {})
26
25
  @firebase.set('users/info', data)
27
26
  end
28
27
  end
29
28
 
30
29
  describe "get" do
31
30
  it "returns the data" do
32
- @req.should_receive(:get).with('users/info', {})
31
+ @firebase.should_receive(:process).with(:get, 'users/info', {})
33
32
  @firebase.get('users/info')
34
33
  end
35
34
 
@@ -60,29 +59,33 @@ describe "Firebase" do
60
59
 
61
60
  describe "push" do
62
61
  it "writes the data" do
63
- @req.should_receive(:post).with('users', data, {})
62
+ @firebase.should_receive(:process).with(:post, 'users', data, {})
64
63
  @firebase.push('users', data)
65
64
  end
66
65
  end
67
66
 
68
67
  describe "delete" do
69
68
  it "returns true" do
70
- @req.should_receive(:delete).with('users/info', {})
69
+ @firebase.should_receive(:process).with(:delete, 'users/info', {})
71
70
  @firebase.delete('users/info')
72
71
  end
73
72
  end
74
73
 
75
74
  describe "update" do
76
75
  it "updates and returns the data" do
77
- @req.should_receive(:patch).with('users/info', data, {})
76
+ @firebase.should_receive(:process).with(:patch, 'users/info', data, {})
78
77
  @firebase.update('users/info', data)
79
78
  end
80
79
  end
81
80
 
82
- describe "options" do
83
- it "passes custom options" do
81
+ describe "http processing" do
82
+ it "sends custom auth" do
84
83
  firebase = Firebase::Client.new('https://test.firebaseio.com', 'secret')
85
- firebase.request.should_receive(:get).with('todos', {:auth => 'secret', :foo => 'bar'})
84
+ firebase.request.should_receive(:request).with(:get, "todos.json", {
85
+ :body => {:foo => 'bar'}.to_json,
86
+ :query => {:auth => "secret"},
87
+ :follow_redirect => true
88
+ })
86
89
  firebase.get('todos', :foo => 'bar')
87
90
  end
88
91
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firebase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Del Ben
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-24 00:00:00.000000000 Z
11
+ date: 2015-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -86,7 +86,6 @@ files:
86
86
  - VERSION
87
87
  - firebase.gemspec
88
88
  - lib/firebase.rb
89
- - lib/firebase/request.rb
90
89
  - lib/firebase/response.rb
91
90
  - lib/firebase/server_value.rb
92
91
  - spec/firebase_spec.rb
@@ -1,38 +0,0 @@
1
- require 'httpclient'
2
- require 'json'
3
-
4
- module Firebase
5
- class Request
6
- def initialize(base_uri)
7
- @client = HTTPClient.new(base_url: base_uri)
8
- @client.default_header['Content-Type'] = 'application/json'
9
- end
10
-
11
- def get(path, query_options)
12
- process(:get, path, nil, query_options)
13
- end
14
-
15
- def put(path, value, query_options)
16
- process(:put, path, value.to_json, query_options)
17
- end
18
-
19
- def post(path, value, query_options)
20
- process(:post, path, value.to_json, query_options)
21
- end
22
-
23
- def delete(path, query_options)
24
- process(:delete, path, nil, query_options)
25
- end
26
-
27
- def patch(path, value, query_options)
28
- process(:patch, path, value.to_json, query_options)
29
- end
30
-
31
- private
32
-
33
- def process(method, path, body=nil, query_options={})
34
- response = @client.request(method, "#{path}.json", body: body, query: query_options, follow_redirect: true)
35
- Firebase::Response.new(response)
36
- end
37
- end
38
- end