parse_resource 1.6.2 → 1.6.3

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.
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
- ParseResource
1
+ ParseResource
2
2
  =============
3
3
 
4
4
  ParseResource makes it easy to interact with Parse.com's REST API. It adheres to the ActiveRecord pattern. ParceResource is fully ActiveModel compliant, meaning you can use validations and Rails forms.
5
5
 
6
6
  Ruby/Rails developers should feel right at home.
7
7
 
8
+ If you're used to `Post.create(:title => "Hello, world", :author => "Octocat")`, then this is for you.
9
+
8
10
  Features
9
11
  ---------------
10
12
  * ActiveRecord-like API, almost no learning curve
@@ -17,26 +19,6 @@ Use cases
17
19
  * Use the same database for your web and native apps
18
20
  * Pre-collect data for use in iOS and Android apps
19
21
 
20
- To-do
21
- --------------
22
- * User authentication
23
- * Better documentation
24
- * Associations
25
- * Callbacks
26
- * Push notifications
27
- * Better type-casting
28
-
29
- User authentication is my top priority feature. Several people have specifically requested it, and Parse just began exposing [`User` objects in the REST API](https://www.parse.com/docs/rest#users).
30
-
31
- Let me know of any other features you want.
32
-
33
-
34
- Words of caution
35
- ---------------
36
-
37
- ParseResource is brand new. Test coverage is decent.
38
-
39
- This is my first gem. Be afraid.
40
22
 
41
23
  Installation
42
24
  ------------
@@ -44,7 +26,7 @@ Installation
44
26
  Include in your `Gemfile`:
45
27
 
46
28
  ```ruby
47
- gem "parse_resource", "~> 1.6.1"
29
+ gem "parse_resource", "~> 1.6.2"
48
30
  ```
49
31
 
50
32
  Or just gem install:
@@ -142,20 +124,38 @@ posts.map {|p| p.title} #=> ["Unpaid blogger", "Uncrunched"]
142
124
  id = "DjiH4Qffke"
143
125
  p = Post.find(id) #simple find by id
144
126
 
145
- #you can chain method calls, just like in ActiveRecord
127
+ # you can chain method calls, just like in ActiveRecord
146
128
  Post.where(:param1 => "foo").where(:param2 => "bar").all
147
129
 
148
- #destroy all objects
130
+ # destroy all objects
149
131
  Post.destroy_all
150
132
 
151
- #limit the query
133
+ # limit the query
152
134
  posts = Post.limit(5).where(:foo => "bar")
153
135
  posts.length #=> 5
154
136
 
155
- #get a count
137
+ # get a count
156
138
  Post.where(:bar => "foo").count #=> 1337
157
139
  ```
158
140
 
141
+ Documentation
142
+ -------------
143
+ [Here](http://rubydoc.info/gems/parse_resource/)
144
+
145
+ To-do
146
+ --------------
147
+ * User authentication
148
+ * Better documentation
149
+ * Associations
150
+ * Callbacks
151
+ * Push notifications
152
+ * Better type-casting
153
+ * HTTP request error handling
154
+
155
+ User authentication is my top priority feature. Several people have specifically requested it, and Parse just began exposing [User objects in the REST API](https://www.parse.com/docs/rest#users).
156
+
157
+ Let me know of any other features you want.
158
+
159
159
 
160
160
  Contributing to ParseResource
161
161
  -----------------------------
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.6.2
1
+ 1.6.3
data/lib/base.rb CHANGED
@@ -84,7 +84,14 @@ module ParseResource
84
84
  k = k.to_s
85
85
  end
86
86
 
87
- @attributes[k.to_s]
87
+ if @attributes[k.to_s].is_a?(Hash) && !@attributes[k.to_s]["__type"].nil?
88
+ case @attributes[k.to_s]["__type"]
89
+ when "Date"
90
+ return result = @attributes[k.to_s]["iso"]
91
+ end
92
+ end
93
+
94
+ return @attributes[k.to_s]
88
95
  end
89
96
  end
90
97
  end
@@ -101,6 +108,15 @@ module ParseResource
101
108
  @@settings = {"app_id" => app_id, "master_key" => master_key}
102
109
  end
103
110
 
111
+ def settings
112
+ if @@settings.nil?
113
+ path = "config/parse_resource.yml"
114
+ environment = defined?(Rails) && Rails.respond_to?(:env) ? Rails.env : ENV["RACK_ENV"]
115
+ @@settings = YAML.load(ERB.new(File.new(path).read).result)[environment]
116
+ end
117
+ @@settings
118
+ end
119
+
104
120
  # Creates a RESTful resource
105
121
  # sends requests to [base_uri]/[classname]
106
122
  #
@@ -110,7 +126,14 @@ module ParseResource
110
126
  environment = defined?(Rails) && Rails.respond_to?(:env) ? Rails.env : ENV["RACK_ENV"]
111
127
  @@settings = YAML.load(ERB.new(File.new(path).read).result)[environment]
112
128
  end
113
- base_uri = "https://api.parse.com/1/classes/#{model_name}"
129
+
130
+ if model_name == "User" #https://parse.com/docs/rest#users-signup
131
+ base_uri = "https://api.parse.com/1/users"
132
+ else
133
+ base_uri = "https://api.parse.com/1/classes/#{model_name}"
134
+ end
135
+
136
+ #refactor to settings['app_id'] etc
114
137
  app_id = @@settings['app_id']
115
138
  master_key = @@settings['master_key']
116
139
  RestClient::Resource.new(base_uri, app_id, master_key)
@@ -1,5 +1,6 @@
1
1
  require 'base'
2
2
  require 'query'
3
+ require 'parse_user'
3
4
 
4
5
  module ParseResource
5
6
  end
data/lib/parse_user.rb ADDED
@@ -0,0 +1,15 @@
1
+ class ParseUser < ParseResource::Base
2
+ fields :username, :password
3
+
4
+ def self.login(username, password)
5
+ base_uri = "https://api.parse.com/1/login"
6
+ app_id = settings['app_id']
7
+ master_key = settings['master_key']
8
+ resource = RestClient::Resource.new(base_uri, app_id, master_key)
9
+
10
+ resp = resource.get(:params => {:username => username, :password => password})
11
+ user = model_name.constantize.new(JSON.parse(resp), false)
12
+
13
+ user
14
+ end
15
+ end
data/lib/query.rb CHANGED
@@ -24,7 +24,7 @@ class Query
24
24
  # self
25
25
  #end
26
26
 
27
- def count(count)
27
+ def count(count=1)
28
28
  criteria[:count] = count
29
29
  #self
30
30
  all
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "parse_resource"
8
- s.version = "1.6.2"
8
+ s.version = "1.6.3"
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 = "2011-12-09"
12
+ s.date = "2011-12-16"
13
13
  s.description = ""
14
14
  s.email = "adelevie@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
26
26
  "VERSION",
27
27
  "lib/base.rb",
28
28
  "lib/parse_resource.rb",
29
+ "lib/parse_user.rb",
29
30
  "lib/query.rb",
30
31
  "parse_resource.gemspec",
31
32
  "rdoc/ParseResource.html",
@@ -100,9 +100,7 @@
100
100
 
101
101
  <li><a href="./ParseResource/Base/ClassMethods.html">ParseResource::Base::ClassMethods</a></li>
102
102
 
103
- <li><a href="./Criteria.html">Criteria</a></li>
104
-
105
- <li><a href="./Post.html">Post</a></li>
103
+ <li><a href="./Query.html">Query</a></li>
106
104
 
107
105
  </ul>
108
106
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
data/rdoc/created.rid CHANGED
@@ -1,6 +1,5 @@
1
- Thu, 08 Dec 2011 23:26:29 -0500
2
- README.md Tue, 06 Dec 2011 20:23:21 -0500
3
- lib/criteria.rb Thu, 08 Dec 2011 23:18:08 -0500
4
- lib/examples/post.rb Sat, 01 Oct 2011 16:18:47 -0400
5
- lib/parse_resource.rb Thu, 08 Dec 2011 18:14:05 -0500
6
- lib/base.rb Thu, 08 Dec 2011 23:22:58 -0500
1
+ Fri, 09 Dec 2011 18:31:09 -0500
2
+ README.md Fri, 09 Dec 2011 18:15:16 -0500
3
+ lib/query.rb Fri, 09 Dec 2011 18:08:24 -0500
4
+ lib/parse_resource.rb Fri, 09 Dec 2011 17:54:17 -0500
5
+ lib/base.rb Fri, 09 Dec 2011 17:53:11 -0500
data/rdoc/index.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <head>
7
7
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8
8
 
9
- <title>parse_resource 1.6.0</title>
9
+ <title>parse_resource 1.6.2</title>
10
10
 
11
11
  <link type="text/css" media="screen" href="rdoc.css" rel="stylesheet" />
12
12
 
@@ -19,10 +19,10 @@
19
19
  <body class="indexpage">
20
20
 
21
21
 
22
- <h1>parse_resource 1.6.0</h1>
22
+ <h1>parse_resource 1.6.2</h1>
23
23
 
24
24
 
25
- <p>This is the API documentation for 'parse_resource 1.6.0'.</p>
25
+ <p>This is the API documentation for 'parse_resource 1.6.2'.</p>
26
26
 
27
27
 
28
28
 
@@ -37,9 +37,7 @@
37
37
 
38
38
  <li class="module"><a href="ParseResource/Base/ClassMethods.html">ParseResource::Base::ClassMethods</a></li>
39
39
 
40
- <li class="class"><a href="Criteria.html">Criteria</a></li>
41
-
42
- <li class="class"><a href="Post.html">Post</a></li>
40
+ <li class="class"><a href="Query.html">Query</a></li>
43
41
 
44
42
  </ul>
45
43
 
@@ -72,19 +70,19 @@
72
70
 
73
71
  <li><a href="ParseResource/Base.html#method-c-new">::new &mdash; ParseResource::Base</a></li>
74
72
 
75
- <li><a href="Criteria.html#method-c-new">::new &mdash; Criteria</a></li>
73
+ <li><a href="Query.html#method-c-new">::new &mdash; Query</a></li>
76
74
 
77
75
  <li><a href="ParseResource/Base.html#method-c-resource">::resource &mdash; ParseResource::Base</a></li>
78
76
 
79
77
  <li><a href="ParseResource/Base.html#method-c-where">::where &mdash; ParseResource::Base</a></li>
80
78
 
81
- <li><a href="Criteria.html#method-i-all">#all &mdash; Criteria</a></li>
79
+ <li><a href="Query.html#method-i-all">#all &mdash; Query</a></li>
82
80
 
83
81
  <li><a href="ParseResource/Base.html#method-i-attributes">#attributes &mdash; ParseResource::Base</a></li>
84
82
 
85
83
  <li><a href="ParseResource/Base.html#method-i-attributes%3D">#attributes= &mdash; ParseResource::Base</a></li>
86
84
 
87
- <li><a href="Criteria.html#method-i-count">#count &mdash; Criteria</a></li>
85
+ <li><a href="Query.html#method-i-count">#count &mdash; Query</a></li>
88
86
 
89
87
  <li><a href="ParseResource/Base.html#method-i-create">#create &mdash; ParseResource::Base</a></li>
90
88
 
@@ -92,17 +90,19 @@
92
90
 
93
91
  <li><a href="ParseResource/Base.html#method-i-created_at">#created_at &mdash; ParseResource::Base</a></li>
94
92
 
95
- <li><a href="Criteria.html#method-i-criteria">#criteria &mdash; Criteria</a></li>
93
+ <li><a href="Query.html#method-i-criteria">#criteria &mdash; Query</a></li>
96
94
 
97
95
  <li><a href="ParseResource/Base.html#method-i-destroy">#destroy &mdash; ParseResource::Base</a></li>
98
96
 
97
+ <li><a href="Query.html#method-i-execute">#execute &mdash; Query</a></li>
98
+
99
99
  <li><a href="ParseResource/Base.html#method-i-id">#id &mdash; ParseResource::Base</a></li>
100
100
 
101
101
  <li><a href="ParseResource/Base.html#method-i-instance_resource">#instance_resource &mdash; ParseResource::Base</a></li>
102
102
 
103
- <li><a href="Criteria.html#method-i-limit">#limit &mdash; Criteria</a></li>
103
+ <li><a href="Query.html#method-i-limit">#limit &mdash; Query</a></li>
104
104
 
105
- <li><a href="Criteria.html#method-i-method_missing">#method_missing &mdash; Criteria</a></li>
105
+ <li><a href="Query.html#method-i-method_missing">#method_missing &mdash; Query</a></li>
106
106
 
107
107
  <li><a href="ParseResource/Base.html#method-i-new%3F">#new? &mdash; ParseResource::Base</a></li>
108
108
 
@@ -110,6 +110,8 @@
110
110
 
111
111
  <li><a href="ParseResource/Base.html#method-i-resource">#resource &mdash; ParseResource::Base</a></li>
112
112
 
113
+ <li><a href="Query.html#method-i-respond_to%3F">#respond_to? &mdash; Query</a></li>
114
+
113
115
  <li><a href="ParseResource/Base.html#method-i-save">#save &mdash; ParseResource::Base</a></li>
114
116
 
115
117
  <li><a href="ParseResource/Base.html#method-i-update">#update &mdash; ParseResource::Base</a></li>
@@ -118,7 +120,7 @@
118
120
 
119
121
  <li><a href="ParseResource/Base.html#method-i-updated_at">#updated_at &mdash; ParseResource::Base</a></li>
120
122
 
121
- <li><a href="Criteria.html#method-i-where">#where &mdash; Criteria</a></li>
123
+ <li><a href="Query.html#method-i-where">#where &mdash; Query</a></li>
122
124
 
123
125
  </ul>
124
126
 
@@ -6,7 +6,7 @@
6
6
  <head>
7
7
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8
8
 
9
- <title>File: parse_resource.rb [parse_resource 1.6.0]</title>
9
+ <title>File: parse_resource.rb [parse_resource 1.6.2]</title>
10
10
 
11
11
  <link type="text/css" media="screen" href="../rdoc.css" rel="stylesheet" />
12
12
 
@@ -24,7 +24,7 @@
24
24
  <div id="metadata">
25
25
  <dl>
26
26
  <dt class="modified-date">Last Modified</dt>
27
- <dd class="modified-date">2011-12-08 18:14:05 -0500</dd>
27
+ <dd class="modified-date">2011-12-09 17:54:17 -0500</dd>
28
28
 
29
29
 
30
30
  <dt class="requires">Requires</dt>
@@ -33,7 +33,7 @@
33
33
 
34
34
  <li>base</li>
35
35
 
36
- <li>criteria</li>
36
+ <li>query</li>
37
37
 
38
38
  </ul>
39
39
  </dd>
@@ -32,9 +32,11 @@ class TestParseResource < Test::Unit::TestCase
32
32
  end
33
33
 
34
34
  def test_count
35
+ Author.destroy_all
35
36
  p1 = Author.create(:name => "bar")
36
37
  p2 = Author.create(:name => "jab")
37
38
  assert_equal Author.count, 2
39
+ assert_equal Author.where(:name => "jab").count, 1
38
40
  p1.destroy
39
41
  p2.destroy
40
42
  assert_equal Author.count, 0
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.6.2
4
+ version: 1.6.3
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: 2011-12-09 00:00:00.000000000Z
12
+ date: 2011-12-16 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
- requirement: &83699820 !ruby/object:Gem::Requirement
16
+ requirement: &79516440 !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: *83699820
24
+ version_requirements: *79516440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &83699170 !ruby/object:Gem::Requirement
27
+ requirement: &79515910 !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: *83699170
35
+ version_requirements: *79515910
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activemodel
38
- requirement: &83698030 !ruby/object:Gem::Requirement
38
+ requirement: &79515450 !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: *83698030
46
+ version_requirements: *79515450
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &83697660 !ruby/object:Gem::Requirement
49
+ requirement: &79514900 !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: *83697660
57
+ version_requirements: *79514900
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &83697230 !ruby/object:Gem::Requirement
60
+ requirement: &79514250 !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: *83697230
68
+ version_requirements: *79514250
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &83696570 !ruby/object:Gem::Requirement
71
+ requirement: &79513330 !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: *83696570
79
+ version_requirements: *79513330
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: reek
82
- requirement: &83695740 !ruby/object:Gem::Requirement
82
+ requirement: &79512680 !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: *83695740
90
+ version_requirements: *79512680
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rest-client
93
- requirement: &83694910 !ruby/object:Gem::Requirement
93
+ requirement: &79511730 !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: *83694910
101
+ version_requirements: *79511730
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: activesupport
104
- requirement: &83694410 !ruby/object:Gem::Requirement
104
+ requirement: &79510530 !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: *83694410
112
+ version_requirements: *79510530
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: activemodel
115
- requirement: &83693630 !ruby/object:Gem::Requirement
115
+ requirement: &79509440 !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: *83693630
123
+ version_requirements: *79509440
124
124
  description: ''
125
125
  email: adelevie@gmail.com
126
126
  executables: []
@@ -138,6 +138,7 @@ files:
138
138
  - VERSION
139
139
  - lib/base.rb
140
140
  - lib/parse_resource.rb
141
+ - lib/parse_user.rb
141
142
  - lib/query.rb
142
143
  - parse_resource.gemspec
143
144
  - rdoc/ParseResource.html
@@ -164,7 +165,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
164
165
  version: '0'
165
166
  segments:
166
167
  - 0
167
- hash: -629305873
168
+ hash: 47696225
168
169
  required_rubygems_version: !ruby/object:Gem::Requirement
169
170
  none: false
170
171
  requirements: