simple_firebase 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d3bab677f2372dc43677600d540a57a68495c166
4
+ data.tar.gz: 0b434e0135ef4fce4ce2e4ab0e84cb41b8cf7d1f
5
+ SHA512:
6
+ metadata.gz: afd7785893bfbbbd0c71fe6a7875d3a51f9c950872539383502762d881033844e41f4f874c03712448c4cf3dce229231ed8ab2001877404308c2065fcda6d78f
7
+ data.tar.gz: f7557669d9a2559e1e8605aee4dd2fa831d88aeda4a67852656e0ffec360f63e0ef893aade93df7f786e9fcf3790175f0438664f7199011299a7507170920bd7
@@ -0,0 +1,45 @@
1
+ require 'yaml'
2
+ require 'net/http'
3
+ require 'simple_firebase/response'
4
+ require 'simple_firebase/exceptions/firebase_error'
5
+
6
+ module SimpleFirebase
7
+ class Client
8
+ DEFAULT_PAGE_SIZE = 1000
9
+
10
+ def initialize(uri, key)
11
+ @uri = uri
12
+ @key = key
13
+ end
14
+
15
+ def fetch_single(resource, key, value)
16
+ fetch(resource, key, value, 1).values.first
17
+ end
18
+
19
+ def fetch(resource, key, value, page_size)
20
+ uri = construct_uri(resource, key, value, page_size)
21
+
22
+ r = SimpleFirebase::Response.new(Net::HTTP.get_response(uri))
23
+
24
+ raise SimpleFirebase::Exceptions::FirebaseError r.body unless r.success?
25
+
26
+ r.json_body
27
+ end
28
+
29
+ def uri; @uri; end
30
+ def key; @key; end
31
+
32
+ private
33
+
34
+ def construct_uri(resource, order_by, start_at, page_size)
35
+ q = { auth: @key, limitToFirst: page_size || DEFAULT_PAGE_SIZE }
36
+ q[:orderBy] = '"' + order_by + '"' if order_by
37
+ q[:startAt] = '"' + start_at.to_s + '"'
38
+
39
+ uri = URI("#{@uri}#{resource}.json")
40
+ uri.query = URI.encode_www_form q
41
+
42
+ uri
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,9 @@
1
+ module SimpleFirebase
2
+ module Exceptions
3
+ class FirebaseError < StandardError
4
+ def initialize(message = nil)
5
+ super(message || 'Unknown error occured.')
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,21 @@
1
+ require 'json'
2
+
3
+ module SimpleFirebase
4
+ class Response
5
+ def initialize(http_response)
6
+ @http_response = http_response
7
+ end
8
+
9
+ def success?
10
+ @http_response.code.to_i >= 200 && @http_response.code.to_i < 300
11
+ end
12
+
13
+ def json_body
14
+ JSON.parse(@http_response.body || "null")
15
+ end
16
+
17
+ def body
18
+ @http_response.body
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ module SimpleFirebase
2
+ end
3
+
4
+ ['simple_firebase/client',
5
+ 'simple_firebase/response'].each do |s|
6
+ require s
7
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simple_firebase
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Istisiki Cardoso
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-10-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple ruby library for fetching firebase resources.
14
+ email: czimon@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/simple_firebase.rb
20
+ - lib/simple_firebase/client.rb
21
+ - lib/simple_firebase/exceptions/firebase_error.rb
22
+ - lib/simple_firebase/response.rb
23
+ homepage: http://rubygems.org/gems/simple_firebase
24
+ licenses:
25
+ - MIT
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.6.13
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: A simple ruby library for fetching firebase resources.
47
+ test_files: []