parse_resource 1.7.1 → 1.7.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.
@@ -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: