opal-firebase 0.0.2
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 +7 -0
- data/.gitignore +17 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +45 -0
- data/lib/opal-firebase.rb +1 -0
- data/lib/opal/firebase.rb +4 -0
- data/lib/opal/firebase/version.rb +5 -0
- data/opal-firebase.gemspec +24 -0
- data/opal/opal-firebase.rb +3 -0
- data/opal/opal-firebase/data_snapshot.rb +78 -0
- data/opal/opal-firebase/firebase.rb +55 -0
- data/opal/opal-firebase/query.rb +50 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 59858440f531b89e5573d8c091d6eedb2c7f8c6e
|
4
|
+
data.tar.gz: 78b1d82586365b797c4bc4850fdc8481826d7b3e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 58b5571b225c829734f34658b4c080452fd55663403c4100be3f44868301299aa4519d1a4626ecf3f0c20293bd44cd9cdf30d75601013aec275e7f606fb0acf1
|
7
|
+
data.tar.gz: 954fd1a779e3e99967eaa9658ec0c73d0963ed04c6d3fe29cb13eb33eed708e24843b7f6d349f891d0a33e28db29bdc2b95779c6938c897fc4fb22e6e15753de
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Gabriel Rios
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Opal::Firebase
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'opal-firebase'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install opal-firebase
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler.require
|
3
|
+
Bundler::GemHelper.install_tasks
|
4
|
+
|
5
|
+
# require 'opal/rspec/rake_task'
|
6
|
+
|
7
|
+
desc "Build build/opal-firebase.js"
|
8
|
+
task :dist do
|
9
|
+
require 'fileutils'
|
10
|
+
FileUtils.mkdir_p 'build'
|
11
|
+
|
12
|
+
src = Opal::Builder.build('opal-firebase')
|
13
|
+
min = uglify src
|
14
|
+
gzp = gzip min
|
15
|
+
|
16
|
+
File.open('build/opal-firebase.js', 'w+') do |out|
|
17
|
+
out << src
|
18
|
+
end
|
19
|
+
|
20
|
+
puts "development: #{src.size}, minified: #{min.size}, gzipped: #{gzp.size}"
|
21
|
+
end
|
22
|
+
|
23
|
+
# Used for uglifying source to minify
|
24
|
+
def uglify(str)
|
25
|
+
IO.popen('uglifyjs', 'r+') do |i|
|
26
|
+
i.puts str
|
27
|
+
i.close_write
|
28
|
+
return i.read
|
29
|
+
end
|
30
|
+
rescue Errno::ENOENT
|
31
|
+
$stderr.puts '"uglifyjs" command not found (install with: "npm install -g uglify-js")'
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
|
35
|
+
# Gzip code to check file size
|
36
|
+
def gzip(str)
|
37
|
+
IO.popen('gzip -f', 'r+') do |i|
|
38
|
+
i.puts str
|
39
|
+
i.close_write
|
40
|
+
return i.read
|
41
|
+
end
|
42
|
+
rescue Errno::ENOENT
|
43
|
+
$stderr.puts '"gzip" command not found, it is required to produce the .gz version'
|
44
|
+
nil
|
45
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'opal/firebase'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'opal/firebase/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "opal-firebase"
|
8
|
+
spec.version = Opal::Firebase::VERSION
|
9
|
+
spec.authors = ["Gabriel Rios"]
|
10
|
+
spec.email = ["gabrielfalcaorios@gmail.com"]
|
11
|
+
spec.description = %q{Opal access to Firebase}
|
12
|
+
spec.summary = %q{Opal library for Firebase}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_runtime_dependency 'opal', '~> 0.6.0'
|
24
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# TODO: Tests, look at https://github.com/opal/opal-jquery/blob/master/spec/event_spec.rb
|
2
|
+
# or not if its just delegates
|
3
|
+
#
|
4
|
+
class DataSnapshot
|
5
|
+
include Native
|
6
|
+
|
7
|
+
def initialize(_native)
|
8
|
+
super(_native)
|
9
|
+
end
|
10
|
+
#
|
11
|
+
# Get the Javascript object representation of the DataSnapshot.
|
12
|
+
def val
|
13
|
+
`#@native.val()`
|
14
|
+
end
|
15
|
+
|
16
|
+
# Get a Hash representantion of the data snapshot
|
17
|
+
# TODO: is hash if its an object
|
18
|
+
def value
|
19
|
+
Native(val)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Get a DataSnapshot for the specified child location.
|
23
|
+
def child(childPath)
|
24
|
+
%x{ #{ DataSnapshot.new `#@native.child(childPath)` } }
|
25
|
+
end
|
26
|
+
|
27
|
+
# Enumerate through the DataSnapshot’s children.
|
28
|
+
#
|
29
|
+
def each_child(&block)
|
30
|
+
%x{
|
31
|
+
#@native.forEach(function(childSnap) {
|
32
|
+
#{block.call(DataSnapshot.new %x{childSnap})}
|
33
|
+
})
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
# Return true if the specified child exists.
|
38
|
+
def has_child?(childPath)
|
39
|
+
`#@native.hasChild(childPath)`
|
40
|
+
end
|
41
|
+
|
42
|
+
# Return true if this DataSnapshot has any children.
|
43
|
+
def has_children?
|
44
|
+
`#@native.hasChildren()`
|
45
|
+
end
|
46
|
+
|
47
|
+
# Get the name of this DataSnapshot's location.
|
48
|
+
def name
|
49
|
+
`#@native.name()`
|
50
|
+
end
|
51
|
+
|
52
|
+
# Get the number of children for this DataSnapshot.
|
53
|
+
def num_children
|
54
|
+
`#@native.numChildren()`
|
55
|
+
end
|
56
|
+
|
57
|
+
# Get the Firebase reference for this DataSnapshot's location.
|
58
|
+
def reference
|
59
|
+
%x{ #{ Firebase.new `#@native.ref().toString()` } }
|
60
|
+
end
|
61
|
+
|
62
|
+
# Get the priority of the data in this DataSnapshot.
|
63
|
+
def priority
|
64
|
+
`#@native.getPriority()`
|
65
|
+
end
|
66
|
+
|
67
|
+
def export_val # Export data as a Javascript object with priority information.
|
68
|
+
`#@native.exportVal()`
|
69
|
+
end
|
70
|
+
|
71
|
+
def inspect
|
72
|
+
"#<Firebase::Snapshot name:#{name} value:#{val}>"
|
73
|
+
end
|
74
|
+
|
75
|
+
def to_n
|
76
|
+
@native
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# NOTE: should pass the to_n here
|
2
|
+
# TODO: Child should return a firebase instance
|
3
|
+
class Firebase < Query
|
4
|
+
include Native
|
5
|
+
|
6
|
+
attr_accessor :url
|
7
|
+
|
8
|
+
def initialize(url)
|
9
|
+
@url = url
|
10
|
+
super(ref)
|
11
|
+
end
|
12
|
+
|
13
|
+
def ref
|
14
|
+
`new Firebase(#{url})`
|
15
|
+
end
|
16
|
+
|
17
|
+
alias_native :authorize, :auth
|
18
|
+
alias_native :authorize_with_token, :authWithCustomToken
|
19
|
+
alias_native :unauthorize, :unauth
|
20
|
+
alias_native :transaction, :transaction
|
21
|
+
alias_native :parent, :parent
|
22
|
+
alias_native :root, :root
|
23
|
+
alias_native :name, :name
|
24
|
+
alias_native :set, :set
|
25
|
+
alias_native :update, :update
|
26
|
+
alias_native :remove, :remove
|
27
|
+
alias_native :set_with_priority, :setWithPriority
|
28
|
+
alias_native :priority=, :setPriority
|
29
|
+
alias_native :off, :off
|
30
|
+
alias_native :go_online, :goOnline
|
31
|
+
alias_native :go_offlien, :goOffline
|
32
|
+
alias_native :on_disconnect, :onDisconnect
|
33
|
+
|
34
|
+
def child(path)
|
35
|
+
Firebase.new(%x{ #@native.child(#{path}).toString() })
|
36
|
+
end
|
37
|
+
|
38
|
+
# Add data to a list using a unique name.
|
39
|
+
def push(value, &callback)
|
40
|
+
Firebase.new `#@native.push(#{value.to_n}).toString()`
|
41
|
+
end
|
42
|
+
|
43
|
+
# Get the absolute URL corresponding to this location.
|
44
|
+
def to_s
|
45
|
+
url
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_n
|
49
|
+
@native
|
50
|
+
end
|
51
|
+
|
52
|
+
def inspect
|
53
|
+
"#<Firebase url: #{url}>"
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
class Query
|
2
|
+
include Native
|
3
|
+
|
4
|
+
def initialize(_native)
|
5
|
+
super(_native)
|
6
|
+
end
|
7
|
+
|
8
|
+
def limit(limit)
|
9
|
+
Query.new(%x{ #@native.limit(limit) })
|
10
|
+
end
|
11
|
+
|
12
|
+
def limit_to_first(limit)
|
13
|
+
Query.new(%x{ #@native.limitToFirst(limit) })
|
14
|
+
end
|
15
|
+
|
16
|
+
def limit_to_last(limit)
|
17
|
+
Query.new(%x{ #@native.limitToLast(limit) })
|
18
|
+
end
|
19
|
+
|
20
|
+
def once(event_type, &callback)
|
21
|
+
wrapper = proc {|snapshot|
|
22
|
+
snapshot = DataSnapshot.new(`snapshot`)
|
23
|
+
callback.call(snapshot)
|
24
|
+
}.to_n
|
25
|
+
|
26
|
+
`#@native.once(#{event_type}, #{wrapper})`
|
27
|
+
callback
|
28
|
+
end
|
29
|
+
|
30
|
+
# Attach a callback to read data and receive data changes.
|
31
|
+
# Based on
|
32
|
+
# https://github.com/opal/opal-jquery/blob/master/opal/opal-jquery/element.rb#L279
|
33
|
+
def on(event_type, &callback)
|
34
|
+
wrapper = proc{|snapshot|
|
35
|
+
snapshot = DataSnapshot.new(%x{ snapshot })
|
36
|
+
callback.call(snapshot)
|
37
|
+
}.to_n
|
38
|
+
|
39
|
+
`#@native.on(#{event_type}, #{wrapper})`
|
40
|
+
callback
|
41
|
+
end
|
42
|
+
|
43
|
+
def end_at(value, key = nil)
|
44
|
+
Query.new %x{ #@native.endAt(#{value.to_n}, #{key}) }
|
45
|
+
end
|
46
|
+
|
47
|
+
def start_at(value, key = nil)
|
48
|
+
Query.new %x{ #@native.startAt(#{value.to_n}, #{key}) }
|
49
|
+
end
|
50
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: opal-firebase
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gabriel Rios
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: opal
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.6.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.6.0
|
55
|
+
description: Opal access to Firebase
|
56
|
+
email:
|
57
|
+
- gabrielfalcaorios@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- Gemfile
|
64
|
+
- LICENSE.txt
|
65
|
+
- README.md
|
66
|
+
- Rakefile
|
67
|
+
- lib/opal-firebase.rb
|
68
|
+
- lib/opal/firebase.rb
|
69
|
+
- lib/opal/firebase/version.rb
|
70
|
+
- opal-firebase.gemspec
|
71
|
+
- opal/opal-firebase.rb
|
72
|
+
- opal/opal-firebase/data_snapshot.rb
|
73
|
+
- opal/opal-firebase/firebase.rb
|
74
|
+
- opal/opal-firebase/query.rb
|
75
|
+
homepage: ''
|
76
|
+
licenses:
|
77
|
+
- MIT
|
78
|
+
metadata: {}
|
79
|
+
post_install_message:
|
80
|
+
rdoc_options: []
|
81
|
+
require_paths:
|
82
|
+
- lib
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
requirements: []
|
94
|
+
rubyforge_project:
|
95
|
+
rubygems_version: 2.2.2
|
96
|
+
signing_key:
|
97
|
+
specification_version: 4
|
98
|
+
summary: Opal library for Firebase
|
99
|
+
test_files: []
|