parse-ruby-client 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -48,6 +48,14 @@ Parse.init
48
48
 
49
49
  The test folder assumes this naming convention for environment variables, so if you want to run the tests, you *must* do this. But it's easy. And good for you, too.
50
50
 
51
+ ### New: Load API keys from `global.json` created by Cloud Code
52
+
53
+ ```ruby
54
+ Parse.init_from_cloud_code("path/to/global.json")
55
+ ```
56
+
57
+ The path defaults to `"../config/global.json"`. So if you create a folder inside the root of a Cloud Code directory, and in that folder is a `.rb` file, just call `Parse.init_from_cloud_code` with no arguments and you're set.
58
+
51
59
  ## Creating and Saving Objects
52
60
 
53
61
  Create an instance of ```Parse::Object``` with your class name supplied as a string, set some keys, and call ```save()```.
@@ -133,7 +141,6 @@ params = {"foo" => "bar"}
133
141
  function.call(params)
134
142
  ```
135
143
 
136
-
137
144
  # TODO
138
145
 
139
146
  - Add some form of debug logging
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
data/lib/parse/client.rb CHANGED
@@ -110,6 +110,16 @@ module Parse
110
110
  @@client = Client.new(defaulted)
111
111
  end
112
112
 
113
+ # A convenience method for using global.json
114
+ def Parse.init_from_cloud_code(path="../config/global.json")
115
+ global = JSON.parse(Object::File.open(path).read) # warning: toplevel constant File referenced by Parse::Object::File
116
+ application_name = global["applications"]["_default"]["link"]
117
+ application_id = global["applications"][application_name]["applicationId"]
118
+ master_key = global["applications"][application_name]["masterKey"]
119
+ Parse.init :application_id => application_id,
120
+ :master_key => master_key
121
+ end
122
+
113
123
  # Used mostly for testing. Lets you delete the api key global vars.
114
124
  def Parse.destroy
115
125
  @@client = nil
@@ -75,10 +75,6 @@ module Parse
75
75
  value <=> other.value
76
76
  end
77
77
 
78
- def to_s
79
- value.to_s
80
- end
81
-
82
78
  def method_missing(method, *args, &block)
83
79
  if value.respond_to?(method)
84
80
  value.send(method, *args, &block)
data/lib/parse/object.rb CHANGED
@@ -61,7 +61,7 @@ module Parse
61
61
  def new?
62
62
  self["objectId"].nil?
63
63
  end
64
-
64
+
65
65
  def safe_json
66
66
  without_reserved = self.dup
67
67
  Protocol::RESERVED_KEYS.each { |k| without_reserved.delete(k) }
@@ -103,7 +103,13 @@ module Parse
103
103
 
104
104
  def as_json(*a)
105
105
  Hash[self.map do |key, value|
106
- [key, value.nil? ? Protocol::DELETE_OP : value]
106
+ value = if value
107
+ value.respond_to?(:as_json) ? value.as_json : value
108
+ else
109
+ Protocol::DELETE_OP
110
+ end
111
+
112
+ [key, value]
107
113
  end]
108
114
  end
109
115
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "parse-ruby-client"
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
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", "Adam Alpern"]
12
- s.date = "2012-10-09"
12
+ s.date = "2012-10-14"
13
13
  s.description = "A simple Ruby client for the parse.com REST API"
14
14
  s.email = "adelevie@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -57,11 +57,13 @@ Gem::Specification.new do |s|
57
57
  "pkg/parse-ruby-client-1-0.0.1.gem",
58
58
  "pkg/parse-ruby-client.gem",
59
59
  "test/cloud_functions/MyCloudCode/cloud/main.js",
60
+ "test/config/global.json",
60
61
  "test/helper.rb",
61
62
  "test/test_client.rb",
62
63
  "test/test_cloud.rb",
63
64
  "test/test_datatypes.rb",
64
65
  "test/test_init.rb",
66
+ "test/test_init_from_cloud_code.rb",
65
67
  "test/test_object.rb",
66
68
  "test/test_push.rb",
67
69
  "test/test_query.rb",
@@ -0,0 +1,14 @@
1
+ {
2
+ "applications": {
3
+ "_default": {
4
+ "link": "FakeApp"
5
+ },
6
+ "FakeApp": {
7
+ "applicationId": "fakeApplicationId",
8
+ "masterKey": "fakeMasterKey"
9
+ }
10
+ },
11
+ "global": {
12
+ "parseVersion": "1.0.23"
13
+ }
14
+ }
@@ -0,0 +1,8 @@
1
+ require 'helper'
2
+
3
+ class TestInitFromCloudCode < Test::Unit::TestCase
4
+ def test_init
5
+ client = Parse.init_from_cloud_code("test/config/global.json")
6
+ assert_equal Parse::Client, client.class
7
+ end
8
+ end
data/test/test_object.rb CHANGED
@@ -25,7 +25,7 @@ class TestObject < Test::Unit::TestCase
25
25
  end
26
26
 
27
27
  def test_pointer
28
- VCR.use_cassette('test_pointer', :record => :new_episodes) do
28
+ VCR.use_cassette('test_pointer', :record => :new_episodes) do
29
29
  post = Parse::Object.new "Post"
30
30
  assert_nil post.pointer
31
31
 
@@ -89,11 +89,19 @@ class TestObject < Test::Unit::TestCase
89
89
  end
90
90
  end
91
91
 
92
+ def test_deep_as_json
93
+ VCR.use_cassette('test_deep_as_json', :record => :new_episodes) do
94
+ other = Parse::Object.new "Post"
95
+ other['date'] = Parse::Date.new(DateTime.now)
96
+ assert other.as_json['date']['iso']
97
+ end
98
+ end
99
+
92
100
  def test_nils_delete_keys
93
101
  VCR.use_cassette('test_nils_delete_keys', :record => :new_episodes) do
94
102
  post = Parse::Object.new "Post"
95
103
  post["title"] = "hello"
96
- post.save
104
+ post.save
97
105
  post["title"] = nil
98
106
  post.save
99
107
  assert_false post.refresh.keys.include?("title")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-10-09 00:00:00.000000000 Z
13
+ date: 2012-10-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: patron
@@ -204,11 +204,13 @@ files:
204
204
  - pkg/parse-ruby-client-1-0.0.1.gem
205
205
  - pkg/parse-ruby-client.gem
206
206
  - test/cloud_functions/MyCloudCode/cloud/main.js
207
+ - test/config/global.json
207
208
  - test/helper.rb
208
209
  - test/test_client.rb
209
210
  - test/test_cloud.rb
210
211
  - test/test_datatypes.rb
211
212
  - test/test_init.rb
213
+ - test/test_init_from_cloud_code.rb
212
214
  - test/test_object.rb
213
215
  - test/test_push.rb
214
216
  - test/test_query.rb
@@ -228,7 +230,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
228
230
  version: '0'
229
231
  segments:
230
232
  - 0
231
- hash: -1868119700729674580
233
+ hash: 2994353426493104333
232
234
  required_rubygems_version: !ruby/object:Gem::Requirement
233
235
  none: false
234
236
  requirements: