ncmb-ruby-client 0.1.3 → 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.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.rubocop.yml +2 -0
- data/Gemfile +4 -1
- data/README.md +107 -2
- data/Rakefile +6 -0
- data/examples/acl_test.rb +12 -6
- data/examples/csv_test.rb +17 -8
- data/examples/data_store.rb +13 -5
- data/examples/file_test.rb +18 -12
- data/examples/performance.rb +12 -6
- data/examples/pointer_test.rb +11 -5
- data/examples/push.rb +13 -7
- data/examples/relation.rb +11 -5
- data/examples/script.rb +25 -0
- data/examples/signature.rb +18 -4
- data/examples/user_test.rb +12 -5
- data/examples/venue_search.rb +30 -17
- data/lib/ncmb.rb +23 -20
- data/lib/ncmb/acl.rb +10 -2
- data/lib/ncmb/client.rb +35 -19
- data/lib/ncmb/data_store.rb +2 -0
- data/lib/ncmb/device.rb +3 -1
- data/lib/ncmb/error.rb +2 -0
- data/lib/ncmb/file.rb +3 -1
- data/lib/ncmb/geo_point.rb +6 -4
- data/lib/ncmb/increment.rb +2 -0
- data/lib/ncmb/object.rb +14 -5
- data/lib/ncmb/push.rb +2 -0
- data/lib/ncmb/query.rb +20 -18
- data/lib/ncmb/relation.rb +9 -7
- data/lib/ncmb/role.rb +3 -1
- data/lib/ncmb/script.rb +56 -0
- data/lib/ncmb/user.rb +3 -1
- data/lib/ncmb/version.rb +3 -1
- data/ncmb-ruby-client.gemspec +13 -13
- data/spec/delete_spec.rb +13 -9
- data/spec/get_spec.rb +9 -5
- data/spec/post_spec.rb +11 -6
- data/spec/put_spec.rb +19 -10
- data/spec/spec_helper.rb +6 -3
- metadata +10 -8
data/lib/ncmb/geo_point.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module NCMB
|
2
4
|
class GeoPoint
|
3
5
|
include NCMB
|
@@ -7,11 +9,11 @@ module NCMB
|
|
7
9
|
@longitude = longitude
|
8
10
|
end
|
9
11
|
|
10
|
-
def to_json(a =
|
12
|
+
def to_json(a = '')
|
11
13
|
{
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
'__type': 'GeoPoint',
|
15
|
+
'longitude': @longitude,
|
16
|
+
'latitude': @latitude
|
15
17
|
}.to_json
|
16
18
|
end
|
17
19
|
|
data/lib/ncmb/increment.rb
CHANGED
data/lib/ncmb/object.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module NCMB
|
2
4
|
class Object
|
3
5
|
include NCMB
|
@@ -43,12 +45,12 @@ module NCMB
|
|
43
45
|
end
|
44
46
|
|
45
47
|
def deletable?
|
46
|
-
if self.acl[
|
48
|
+
if self.acl.fields[:*][:write] == true
|
47
49
|
return true
|
48
50
|
end
|
49
51
|
return false unless NCMB.CurrentUser
|
50
|
-
return false unless self.acl[NCMB.CurrentUser.objectId.to_sym]
|
51
|
-
return false unless self.acl[NCMB.CurrentUser.objectId.to_sym][:write]
|
52
|
+
return false unless self.acl.fields[NCMB.CurrentUser.objectId.to_sym]
|
53
|
+
return false unless self.acl.fields[NCMB.CurrentUser.objectId.to_sym][:write]
|
52
54
|
true
|
53
55
|
end
|
54
56
|
|
@@ -64,12 +66,12 @@ module NCMB
|
|
64
66
|
@fields[:objectId] != nil
|
65
67
|
end
|
66
68
|
|
67
|
-
def
|
69
|
+
def convert_params
|
68
70
|
@fields.each do |key, field|
|
69
71
|
if field.is_a?(NCMB::Object)
|
70
72
|
field.save unless field.saved?
|
71
73
|
@fields[key] = {
|
72
|
-
__type:
|
74
|
+
__type: 'Pointer',
|
73
75
|
className: field.ClassName,
|
74
76
|
objectId: field.objectId
|
75
77
|
}
|
@@ -83,6 +85,11 @@ module NCMB
|
|
83
85
|
@fields[key] = relation
|
84
86
|
end
|
85
87
|
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def post
|
91
|
+
return self.put if saved?
|
92
|
+
convert_params
|
86
93
|
result = @@client.post path, @fields
|
87
94
|
@fields.merge!(result)
|
88
95
|
self
|
@@ -90,6 +97,8 @@ module NCMB
|
|
90
97
|
alias :save :post
|
91
98
|
|
92
99
|
def put
|
100
|
+
return self.post unless saved?
|
101
|
+
convert_params
|
93
102
|
put_path = path
|
94
103
|
params = @fields
|
95
104
|
params.delete :objectId
|
data/lib/ncmb/push.rb
CHANGED
data/lib/ncmb/query.rb
CHANGED
@@ -1,19 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module NCMB
|
2
4
|
module Query
|
3
5
|
[
|
4
|
-
{greaterThan:
|
5
|
-
{notEqualTo:
|
6
|
+
{greaterThan: '$gt'},
|
7
|
+
{notEqualTo: '$ne'},
|
6
8
|
{equalTo: nil},
|
7
|
-
{lessThan:
|
8
|
-
{lessThanOrEqualTo:
|
9
|
-
{greaterThanOrEqualTo:
|
10
|
-
{in:
|
11
|
-
{notIn:
|
12
|
-
{exists:
|
13
|
-
{regex:
|
14
|
-
{inArray:
|
15
|
-
{notInArray:
|
16
|
-
{allInArray:
|
9
|
+
{lessThan: '$lt'},
|
10
|
+
{lessThanOrEqualTo: '$lte'},
|
11
|
+
{greaterThanOrEqualTo: '$gte'},
|
12
|
+
{in: '$in'},
|
13
|
+
{notIn: '$nin'},
|
14
|
+
{exists: '$exists'},
|
15
|
+
{regex: '$regex'},
|
16
|
+
{inArray: '$inArray'},
|
17
|
+
{notInArray: '$ninArray'},
|
18
|
+
{allInArray: '$all'},
|
17
19
|
].each do |m|
|
18
20
|
define_method m.keys.first do |name, value|
|
19
21
|
params = {}
|
@@ -29,14 +31,14 @@ module NCMB
|
|
29
31
|
end
|
30
32
|
|
31
33
|
[
|
32
|
-
{withinKilometers:
|
33
|
-
{withinMiles:
|
34
|
-
{withinRadians:
|
34
|
+
{withinKilometers: '$maxDistanceInKilometers'},
|
35
|
+
{withinMiles: '$maxDistanceInMiles'},
|
36
|
+
{withinRadians: '$maxDistanceInRadians'}
|
35
37
|
].each do |m|
|
36
38
|
define_method m.keys.first do |name, geo, value|
|
37
39
|
params = {}
|
38
40
|
params[name] = {
|
39
|
-
|
41
|
+
'$nearSphere': geo,
|
40
42
|
}
|
41
43
|
params[name][m.values.first] = value
|
42
44
|
@queries[@search_key] << params
|
@@ -47,8 +49,8 @@ module NCMB
|
|
47
49
|
def withinSquare(name, geo1, geo2)
|
48
50
|
params = {}
|
49
51
|
params[name] = {
|
50
|
-
|
51
|
-
|
52
|
+
'$within': {
|
53
|
+
'$box': [
|
52
54
|
geo1,
|
53
55
|
geo2
|
54
56
|
]
|
data/lib/ncmb/relation.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module NCMB
|
2
4
|
class Relation < Array
|
3
5
|
include NCMB
|
@@ -6,16 +8,16 @@ module NCMB
|
|
6
8
|
|
7
9
|
end
|
8
10
|
|
9
|
-
def to_json(a =
|
11
|
+
def to_json(a = '')
|
10
12
|
params = {
|
11
|
-
|
13
|
+
'__op': 'AddRelation'
|
12
14
|
}
|
13
|
-
params[
|
15
|
+
params['objects'] = []
|
14
16
|
self.each do |obj|
|
15
|
-
params[
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
params['objects'] << {
|
18
|
+
'__type': 'Pointer',
|
19
|
+
'className': obj.ClassName,
|
20
|
+
'objectId': obj.objectId
|
19
21
|
}
|
20
22
|
end
|
21
23
|
params.to_json
|
data/lib/ncmb/role.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module NCMB
|
2
4
|
class Role < NCMB::Object
|
3
5
|
include NCMB
|
@@ -10,7 +12,7 @@ module NCMB
|
|
10
12
|
roleName: name
|
11
13
|
}
|
12
14
|
end
|
13
|
-
@fields[:acl] = NCMB::Acl.new
|
15
|
+
@fields[:acl] = NCMB::Acl.new
|
14
16
|
end
|
15
17
|
|
16
18
|
def self.find_or_create(name)
|
data/lib/ncmb/script.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NCMB
|
4
|
+
class Script
|
5
|
+
include NCMB
|
6
|
+
def initialize(name)
|
7
|
+
@name = name
|
8
|
+
@params = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def get(params = {})
|
12
|
+
self.set(params).execute('get')
|
13
|
+
end
|
14
|
+
|
15
|
+
def post(params = {})
|
16
|
+
self.set(params).execute('post')
|
17
|
+
end
|
18
|
+
|
19
|
+
def put(params = {})
|
20
|
+
self.set(params).execute('put')
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete(params = {})
|
24
|
+
self.set(params)
|
25
|
+
@@client.delete
|
26
|
+
end
|
27
|
+
|
28
|
+
def set(params)
|
29
|
+
params = Hash[ params.map{ |k, v| [k.to_sym, v] } ]
|
30
|
+
self
|
31
|
+
.header(params[:header])
|
32
|
+
.body(params[:body])
|
33
|
+
.query(params[:query])
|
34
|
+
self
|
35
|
+
end
|
36
|
+
|
37
|
+
def header(params)
|
38
|
+
@params[:header] = params
|
39
|
+
self
|
40
|
+
end
|
41
|
+
|
42
|
+
def body(params)
|
43
|
+
@params[:body] = params
|
44
|
+
self
|
45
|
+
end
|
46
|
+
|
47
|
+
def query(params)
|
48
|
+
@params[:query] = params
|
49
|
+
self
|
50
|
+
end
|
51
|
+
|
52
|
+
def execute(method)
|
53
|
+
@@client.send(method, "/#{@@client.script_api_version}/script/#{@name}", (@params[:query] || {}).merge(@params[:body] || {}), @params[:header])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/ncmb/user.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module NCMB
|
2
4
|
class User < NCMB::Object
|
3
5
|
include NCMB
|
@@ -23,7 +25,7 @@ module NCMB
|
|
23
25
|
end
|
24
26
|
|
25
27
|
def put
|
26
|
-
params = @fields
|
28
|
+
params = @fields.clone
|
27
29
|
session_key = params[:sessionToken]
|
28
30
|
[:objectId, :createDate, :updateDate, :sessionToken, :password].each do |name|
|
29
31
|
params.delete name
|
data/lib/ncmb/version.rb
CHANGED
data/ncmb-ruby-client.gemspec
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'ncmb/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'ncmb-ruby-client'
|
8
9
|
spec.version = Ncmb::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description = %q
|
12
|
-
spec.summary = %q
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
10
|
+
spec.authors = ['Atsushi Nakatsugawa']
|
11
|
+
spec.email = ['atsushi@moongift.jp']
|
12
|
+
spec.description = %q(A simple Ruby client for the nifty cloud mobile backend REST API)
|
13
|
+
spec.summary = %q(A simple Ruby client for the nifty cloud mobile backend REST API)
|
14
|
+
spec.homepage = 'http://mb.cloud.nifty.com/'
|
15
|
+
spec.license = 'MIT License'
|
15
16
|
|
16
17
|
spec.files = `git ls-files`.split($/)
|
17
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
20
|
-
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency "rspec"
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
spec.add_development_dependency 'bundler', '>= 2.2.10'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'rspec'
|
24
24
|
end
|
data/spec/delete_spec.rb
CHANGED
@@ -1,20 +1,24 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
2
4
|
describe NCMB do
|
3
5
|
before do
|
4
6
|
yaml = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'setting.yml'))
|
5
|
-
NCMB.initialize
|
7
|
+
NCMB.initialize(
|
8
|
+
application_key: yaml['application_key'],
|
9
|
+
client_key: yaml['client_key']
|
10
|
+
)
|
6
11
|
@Todo = NCMB::DataStore.new('TODO')
|
7
|
-
@todo = @Todo.new(text:
|
12
|
+
@todo = @Todo.new(text: 'Test task')
|
8
13
|
@object_id = @todo.save().objectId
|
9
14
|
end
|
10
15
|
|
11
|
-
it
|
12
|
-
@todo.delete.
|
16
|
+
it 'Delete #1' do
|
17
|
+
expect(@todo.delete).to eql(true)
|
13
18
|
end
|
14
19
|
|
15
|
-
it
|
16
|
-
@todo.delete.
|
17
|
-
@todo.delete.
|
18
|
-
@todo.error[:code].should == 'E404001'
|
20
|
+
it 'Delete again' do
|
21
|
+
expect(@todo.delete).to eql(true)
|
22
|
+
expect { @todo.delete }.to raise_error(NCMB::APIError, "No data available.")
|
19
23
|
end
|
20
24
|
end
|
data/spec/get_spec.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
3
4
|
describe NCMB do
|
4
5
|
before do
|
5
6
|
yaml = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'setting.yml'))
|
6
|
-
NCMB.initialize
|
7
|
+
NCMB.initialize(
|
8
|
+
application_key: yaml['application_key'],
|
9
|
+
client_key: yaml['client_key']
|
10
|
+
)
|
7
11
|
@todoClass = todoClass = NCMB::DataStore.new 'GET_TODO'
|
8
12
|
@todoClass.delete_all
|
9
13
|
10.times do |i|
|
@@ -11,9 +15,9 @@ describe NCMB do
|
|
11
15
|
end
|
12
16
|
end
|
13
17
|
|
14
|
-
it
|
18
|
+
it 'Get #1' do
|
15
19
|
@items = @todoClass.order('-createDate').skip(0).all
|
16
|
-
@items.length.
|
20
|
+
expect(@items.length).to eql(10)
|
17
21
|
end
|
18
22
|
|
19
23
|
end
|
data/spec/post_spec.rb
CHANGED
@@ -1,19 +1,24 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
2
4
|
describe NCMB do
|
3
5
|
before do
|
4
6
|
yaml = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'setting.yml'))
|
5
|
-
NCMB.initialize
|
7
|
+
NCMB.initialize(
|
8
|
+
application_key: yaml['application_key'],
|
9
|
+
client_key: yaml['client_key']
|
10
|
+
)
|
6
11
|
end
|
7
12
|
|
8
|
-
it
|
9
|
-
text =
|
13
|
+
it 'Post #1' do
|
14
|
+
text = 'Test task'
|
10
15
|
queries = {todo: text}
|
11
16
|
todo_class = NCMB::DataStore.new 'POST_TODO'
|
12
17
|
todo = todo_class.new(queries).save
|
13
|
-
todo.todo.
|
18
|
+
expect(todo.todo).to eql(text)
|
14
19
|
end
|
15
20
|
|
16
|
-
it
|
21
|
+
it 'Post with location #1' do
|
17
22
|
|
18
23
|
end
|
19
24
|
end
|
data/spec/put_spec.rb
CHANGED
@@ -1,15 +1,24 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
describe NCMB do
|
3
3
|
before do
|
4
|
-
yaml = YAML.load_file(
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
yaml = YAML.load_file(
|
5
|
+
File.join(File.dirname(__FILE__), '..', 'setting.yml')
|
6
|
+
)
|
7
|
+
@ncmb = NCMB::Client.new(
|
8
|
+
application_key: yaml['application_key'],
|
9
|
+
client_key: yaml['client_key']
|
10
|
+
)
|
11
|
+
@object_id = @ncmb.post(
|
12
|
+
'/2013-09-01/classes/TODO',
|
13
|
+
todo: 'Test task'
|
14
|
+
)[:objectId]
|
9
15
|
end
|
10
|
-
|
11
|
-
it
|
12
|
-
res = @ncmb.put(
|
13
|
-
|
16
|
+
|
17
|
+
it 'Put #1' do
|
18
|
+
res = @ncmb.put(
|
19
|
+
"/2013-09-01/classes/TODO/#{@object_id}",
|
20
|
+
todo: 'Test task updated'
|
21
|
+
)
|
22
|
+
expect(res[:updateDate]).not_to be_nil
|
14
23
|
end
|
15
24
|
end
|