parse_resource 1.7.1 → 1.7.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,7 +28,7 @@ class ParseError
28
28
 
29
29
  def to_array
30
30
  @error[1] = @error[1] + " " + @msg
31
+ @error
31
32
  end
32
33
 
33
34
  end
34
-
@@ -0,0 +1,2 @@
1
+ class RecordNotFound < ArgumentError
2
+ end
@@ -0,0 +1,61 @@
1
+ require 'parse_resource/parse_user_validator'
2
+
3
+ class ParseUser < ParseResource::Base
4
+ fields :username, :password
5
+
6
+ def self.authenticate(username, password)
7
+ base_uri = "https://api.parse.com/1/login"
8
+ app_id = settings['app_id']
9
+ master_key = settings['master_key']
10
+ resource = RestClient::Resource.new(base_uri, app_id, master_key)
11
+
12
+ begin
13
+ resp = resource.get(:params => {:username => username, :password => password})
14
+ user = model_name.constantize.new(JSON.parse(resp), false)
15
+
16
+ user
17
+ rescue
18
+ false
19
+ end
20
+
21
+ end
22
+
23
+ def self.authenticate_with_facebook(user_id, access_token, expires)
24
+ base_uri = "https://api.parse.com/1/users"
25
+ app_id = settings['app_id']
26
+ master_key = settings['master_key']
27
+ resource = RestClient::Resource.new(base_uri, app_id, master_key)
28
+
29
+ begin
30
+ resp = resource.post(
31
+ { "authData" =>
32
+ { "facebook" =>
33
+ {
34
+ "id" => user_id,
35
+ "access_token" => access_token,
36
+ "expiration_date" => Time.now + expires.to_i
37
+ }
38
+ }
39
+ }.to_json,
40
+ :content_type => 'application/json', :accept => :json)
41
+ user = model_name.constantize.new(JSON.parse(resp), false)
42
+ user
43
+ rescue
44
+ false
45
+ end
46
+ end
47
+
48
+ def self.reset_password(email)
49
+ base_uri = "https://api.parse.com/1/requestPasswordReset"
50
+ app_id = settings['app_id']
51
+ master_key = settings['master_key']
52
+ resource = RestClient::Resource.new(base_uri, app_id, master_key)
53
+
54
+ begin
55
+ resp = resource.post(:email => email)
56
+ true
57
+ rescue
58
+ false
59
+ end
60
+ end
61
+ end
@@ -19,7 +19,13 @@ class Query
19
19
  end
20
20
 
21
21
  def include_object(parent)
22
- criteria[:include] = parent.to_s
22
+ criteria[:include] = parent
23
+ self
24
+ end
25
+
26
+ def order(attribute)
27
+ attribute = attribute.to_sym if attribute.is_a?(String)
28
+ criteria[:order] = attribute
23
29
  self
24
30
  end
25
31
 
@@ -41,9 +47,11 @@ class Query
41
47
  params.merge!({:limit => criteria[:limit].to_json}) if criteria[:limit]
42
48
  params.merge!({:skip => criteria[:skip].to_json}) if criteria[:skip]
43
49
  params.merge!({:count => criteria[:count].to_json}) if criteria[:count]
50
+ params.merge!({:include => criteria[:include]}) if criteria[:include]
51
+ params.merge!({:order => criteria[:order]}) if criteria[:order]
44
52
 
45
53
  resp = @klass.resource.get(:params => params)
46
-
54
+
47
55
  if criteria[:count] == 1
48
56
  results = JSON.parse(resp)['count']
49
57
  return results.to_i
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "parse_resource"
8
- s.version = "1.7.1"
8
+ s.version = "1.7.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alan deLevie"]
12
- s.date = "2012-01-02"
12
+ s.date = "2012-07-18"
13
13
  s.description = ""
14
14
  s.email = "adelevie@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -24,12 +24,14 @@ Gem::Specification.new do |s|
24
24
  "README.md",
25
25
  "Rakefile",
26
26
  "VERSION",
27
- "lib/base.rb",
28
- "lib/parse_error.rb",
27
+ "lib/.DS_Store",
29
28
  "lib/parse_resource.rb",
30
- "lib/parse_user.rb",
31
- "lib/parse_user_validator.rb",
32
- "lib/query.rb",
29
+ "lib/parse_resource/base.rb",
30
+ "lib/parse_resource/parse_error.rb",
31
+ "lib/parse_resource/parse_exceptions.rb",
32
+ "lib/parse_resource/parse_user.rb",
33
+ "lib/parse_resource/parse_user_validator.rb",
34
+ "lib/parse_resource/query.rb",
33
35
  "parse_resource.gemspec",
34
36
  "rdoc/ParseResource.html",
35
37
  "rdoc/created.rid",
@@ -41,7 +43,8 @@ Gem::Specification.new do |s|
41
43
  "test/test_associations.rb",
42
44
  "test/test_parse_resource.rb",
43
45
  "test/test_parse_user.rb",
44
- "test/test_query.rb"
46
+ "test/test_query.rb",
47
+ "test/test_query_options.rb"
45
48
  ]
46
49
  s.homepage = "http://github.com/adelevie/parse_resource"
47
50
  s.licenses = ["MIT"]
@@ -43,19 +43,36 @@ class TestAssociations < Test::Unit::TestCase
43
43
  def test_relational_query
44
44
  a = Author.create(:name => "JK Rowling_relational_query")
45
45
  p = Post.create(:title => "test relational query")
46
- p.author = a.to_pointer
46
+ p.author = a#.to_pointer
47
47
  p.save
48
48
  post = Post.include_object(:author).where(:title => "test relational query").first
49
49
  assert_equal Post, post.class
50
- assert_equal true, post.author.is_a?(Author)
50
+ assert_equal "Object", post.attributes['author']['__type']
51
+ assert_equal "Author", post.attributes['author']['className']
52
+ assert_equal a.id, post.attributes['author']['objectId']
53
+ assert_equal a.name, post.attributes['author']['name']
54
+ end
55
+
56
+ def test_to_pointer_duck_typing
57
+ a = Author.create(:name => "Duck")
58
+ p = Post.create(:title => "Typing")
59
+ p.author = a
60
+ p.save
61
+ assert_equal p.author.name, a.name
62
+ assert_equal a.posts.class, Array
63
+ assert_equal a.posts.length, 1
64
+ assert_equal a.posts[0].class, Post
65
+ assert_equal a.posts[0].id, p.id
51
66
  end
52
67
 
53
68
  def test_has_many_parent_getter
54
69
  a = Author.create(:name => "RL Stine")
55
70
  p = Post.create(:title => "Goosebumps_has_many_parent_getter")
56
- p.author = a.to_pointer
71
+ p.author = a#.to_pointer
57
72
  p.save
58
- assert_equal a.posts.class, Array
73
+ assert_equal Array, a.posts.class
74
+ assert_equal Post, a.posts.first.class
75
+ assert_equal p.title, a.posts.first.title
59
76
  end
60
77
 
61
78
  def test_has_many_child_getter
@@ -71,7 +88,7 @@ class TestAssociations < Test::Unit::TestCase
71
88
  Post.destroy_all
72
89
  aa = Author.create(:name => "Shmalter Kirn")
73
90
  pp = Post.create(:title => "Shmup in the Air")
74
- pp.author = aa.to_pointer
91
+ pp.author = aa#.to_pointer
75
92
  pp.save
76
93
  assert aa.id
77
94
  assert_equal aa.id, pp.author.id
@@ -64,12 +64,33 @@ class TestParseResource < Test::Unit::TestCase
64
64
  assert_equal p2.id, p2.id
65
65
  end
66
66
 
67
+ def test_find_should_throw_an_exception_if_object_is_nil
68
+ assert_raise RecordNotFound do
69
+ Post.find("")
70
+ end
71
+ end
72
+
67
73
  def test_first
68
74
  Post.create(:title => "firsttt")
69
75
  p = Post.first
70
76
  assert p.is_a?(Post)
71
77
  end
72
78
 
79
+ def test_find_by
80
+ p1 = Post.create(:title => "Welcome111")
81
+ where = Post.where(:title => "Welcome111").first
82
+ find = Post.find_by_title("Welcome111")
83
+ assert_equal where.id, find.id
84
+ end
85
+
86
+ def test_find_all_by
87
+ p1 = Post.create(:title => "Welcome111")
88
+ where = Post.where(:title => "Welcome111").all
89
+ find = Post.find_all_by_title("Welcome111")
90
+ assert_equal where.first.id, find.first.id
91
+ assert_equal find.class, Array
92
+ end
93
+
73
94
  def test_where
74
95
  p1 = Post.create(:title => "Welcome111")
75
96
  p2 = Post.where(:title => "Welcome111").first
@@ -89,7 +110,7 @@ class TestParseResource < Test::Unit::TestCase
89
110
  query = Post.where(:title => "chained_wheres").where(:body => "testing")
90
111
  p3 = query.first
91
112
 
92
- assert_equal p3.id, p1s.id
113
+ assert_equal p3.id, p1.id
93
114
  end
94
115
 
95
116
  def test_limit
@@ -0,0 +1,33 @@
1
+ require 'helper'
2
+ require 'parse_resource'
3
+
4
+ path = "parse_resource.yml"
5
+ settings = YAML.load(ERB.new(File.new(path).read).result)['test']
6
+
7
+ ParseResource::Base.load!(settings['app_id'], settings['master_key'])
8
+
9
+ class Event < ParseResource::Base
10
+ field :name
11
+ end
12
+
13
+ class TestQueryOptions < Test::Unit::TestCase
14
+
15
+ def setup
16
+ Event.destroy_all
17
+ end
18
+
19
+ def teardown
20
+ Event.destroy_all
21
+ end
22
+
23
+ def test_order
24
+ e1 = Event.create(:name => "1st")
25
+ e2 = Event.create(:name => "2nd")
26
+ events = Event.order("created_at").all
27
+ puts events[0].name
28
+ puts events[1].name
29
+ assert_equal true, (events[0].created_at < events[1].created_at)
30
+ Event.destroy_all
31
+ end
32
+
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.7.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-02 00:00:00.000000000Z
12
+ date: 2012-07-18 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
- requirement: &70093090400920 !ruby/object:Gem::Requirement
16
+ requirement: &70108516726620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70093090400920
24
+ version_requirements: *70108516726620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &70093090400220 !ruby/object:Gem::Requirement
27
+ requirement: &70108516726060 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70093090400220
35
+ version_requirements: *70108516726060
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activemodel
38
- requirement: &70093090399480 !ruby/object:Gem::Requirement
38
+ requirement: &70108516724320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70093090399480
46
+ version_requirements: *70108516724320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &70093090398820 !ruby/object:Gem::Requirement
49
+ requirement: &70108516717400 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70093090398820
57
+ version_requirements: *70108516717400
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &70093090398040 !ruby/object:Gem::Requirement
60
+ requirement: &70108516716900 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.6.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70093090398040
68
+ version_requirements: *70108516716900
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &70093090397320 !ruby/object:Gem::Requirement
71
+ requirement: &70108516716420 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70093090397320
79
+ version_requirements: *70108516716420
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: reek
82
- requirement: &70093090396580 !ruby/object:Gem::Requirement
82
+ requirement: &70108516715940 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.2.8
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70093090396580
90
+ version_requirements: *70108516715940
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rest-client
93
- requirement: &70093090395820 !ruby/object:Gem::Requirement
93
+ requirement: &70108516715360 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70093090395820
101
+ version_requirements: *70108516715360
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: activesupport
104
- requirement: &70093090395060 !ruby/object:Gem::Requirement
104
+ requirement: &70108516714540 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70093090395060
112
+ version_requirements: *70108516714540
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: activemodel
115
- requirement: &70093090394220 !ruby/object:Gem::Requirement
115
+ requirement: &70108516713640 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70093090394220
123
+ version_requirements: *70108516713640
124
124
  description: ''
125
125
  email: adelevie@gmail.com
126
126
  executables: []
@@ -136,12 +136,14 @@ files:
136
136
  - README.md
137
137
  - Rakefile
138
138
  - VERSION
139
- - lib/base.rb
140
- - lib/parse_error.rb
139
+ - lib/.DS_Store
141
140
  - lib/parse_resource.rb
142
- - lib/parse_user.rb
143
- - lib/parse_user_validator.rb
144
- - lib/query.rb
141
+ - lib/parse_resource/base.rb
142
+ - lib/parse_resource/parse_error.rb
143
+ - lib/parse_resource/parse_exceptions.rb
144
+ - lib/parse_resource/parse_user.rb
145
+ - lib/parse_resource/parse_user_validator.rb
146
+ - lib/parse_resource/query.rb
145
147
  - parse_resource.gemspec
146
148
  - rdoc/ParseResource.html
147
149
  - rdoc/created.rid
@@ -154,6 +156,7 @@ files:
154
156
  - test/test_parse_resource.rb
155
157
  - test/test_parse_user.rb
156
158
  - test/test_query.rb
159
+ - test/test_query_options.rb
157
160
  homepage: http://github.com/adelevie/parse_resource
158
161
  licenses:
159
162
  - MIT
@@ -169,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
169
172
  version: '0'
170
173
  segments:
171
174
  - 0
172
- hash: 3873715340025980696
175
+ hash: -1354010758999244304
173
176
  required_rubygems_version: !ruby/object:Gem::Requirement
174
177
  none: false
175
178
  requirements: