parse-stack 1.8.0 → 1.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.solargraph.yml +23 -0
- data/.travis.yml +0 -1
- data/Gemfile +13 -12
- data/Gemfile.lock +88 -51
- data/README.md +2 -4
- data/Rakefile +14 -14
- data/lib/parse/api/aggregate.rb +4 -7
- data/lib/parse/api/all.rb +1 -1
- data/lib/parse/api/analytics.rb +0 -3
- data/lib/parse/api/batch.rb +3 -5
- data/lib/parse/api/cloud_functions.rb +0 -3
- data/lib/parse/api/config.rb +0 -4
- data/lib/parse/api/files.rb +3 -7
- data/lib/parse/api/hooks.rb +4 -8
- data/lib/parse/api/objects.rb +7 -12
- data/lib/parse/api/push.rb +0 -4
- data/lib/parse/api/schema.rb +2 -6
- data/lib/parse/api/server.rb +4 -7
- data/lib/parse/api/sessions.rb +2 -5
- data/lib/parse/api/users.rb +9 -14
- data/lib/parse/client.rb +54 -50
- data/lib/parse/client/authentication.rb +29 -33
- data/lib/parse/client/batch.rb +8 -11
- data/lib/parse/client/body_builder.rb +19 -20
- data/lib/parse/client/caching.rb +23 -28
- data/lib/parse/client/protocol.rb +11 -12
- data/lib/parse/client/request.rb +4 -6
- data/lib/parse/client/response.rb +5 -7
- data/lib/parse/model/acl.rb +14 -12
- data/lib/parse/model/associations/belongs_to.rb +14 -21
- data/lib/parse/model/associations/collection_proxy.rb +328 -329
- data/lib/parse/model/associations/has_many.rb +18 -25
- data/lib/parse/model/associations/has_one.rb +6 -11
- data/lib/parse/model/associations/pointer_collection_proxy.rb +5 -8
- data/lib/parse/model/associations/relation_collection_proxy.rb +5 -9
- data/lib/parse/model/bytes.rb +8 -10
- data/lib/parse/model/classes/installation.rb +2 -4
- data/lib/parse/model/classes/product.rb +2 -5
- data/lib/parse/model/classes/role.rb +3 -5
- data/lib/parse/model/classes/session.rb +2 -5
- data/lib/parse/model/classes/user.rb +20 -16
- data/lib/parse/model/core/actions.rb +31 -46
- data/lib/parse/model/core/builder.rb +6 -6
- data/lib/parse/model/core/errors.rb +0 -1
- data/lib/parse/model/core/fetching.rb +45 -50
- data/lib/parse/model/core/properties.rb +51 -66
- data/lib/parse/model/core/querying.rb +291 -294
- data/lib/parse/model/core/schema.rb +89 -92
- data/lib/parse/model/date.rb +16 -17
- data/lib/parse/model/file.rb +171 -174
- data/lib/parse/model/geopoint.rb +12 -16
- data/lib/parse/model/model.rb +31 -37
- data/lib/parse/model/object.rb +47 -53
- data/lib/parse/model/pointer.rb +177 -176
- data/lib/parse/model/push.rb +8 -10
- data/lib/parse/model/shortnames.rb +1 -2
- data/lib/parse/model/time_zone.rb +3 -5
- data/lib/parse/query.rb +34 -35
- data/lib/parse/query/constraint.rb +4 -6
- data/lib/parse/query/constraints.rb +21 -29
- data/lib/parse/query/operation.rb +8 -11
- data/lib/parse/query/ordering.rb +45 -49
- data/lib/parse/stack.rb +11 -12
- data/lib/parse/stack/generators/rails.rb +28 -30
- data/lib/parse/stack/generators/templates/model.erb +5 -6
- data/lib/parse/stack/generators/templates/model_installation.rb +0 -1
- data/lib/parse/stack/generators/templates/model_role.rb +0 -1
- data/lib/parse/stack/generators/templates/model_session.rb +0 -1
- data/lib/parse/stack/generators/templates/model_user.rb +0 -1
- data/lib/parse/stack/generators/templates/parse.rb +9 -9
- data/lib/parse/stack/generators/templates/webhooks.rb +1 -2
- data/lib/parse/stack/railtie.rb +2 -4
- data/lib/parse/stack/tasks.rb +70 -86
- data/lib/parse/stack/version.rb +1 -1
- data/lib/parse/webhooks.rb +19 -26
- data/lib/parse/webhooks/payload.rb +26 -28
- data/lib/parse/webhooks/registration.rb +23 -31
- data/parse-stack.gemspec +25 -25
- data/parse-stack.png +0 -0
- metadata +13 -7
- data/.github/parse-ruby-sdk.png +0 -0
data/lib/parse/api/files.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require "active_support"
|
5
|
+
require "active_support/core_ext"
|
6
6
|
|
7
7
|
module Parse
|
8
|
-
|
9
8
|
module API
|
10
9
|
# Defines the Parse Files interface for the Parse REST API
|
11
10
|
module Files
|
@@ -19,14 +18,11 @@ module Parse
|
|
19
18
|
# @return [Parse::Response]
|
20
19
|
def create_file(fileName, data = {}, content_type = nil)
|
21
20
|
headers = {}
|
22
|
-
headers.merge!(
|
21
|
+
headers.merge!({ Parse::Protocol::CONTENT_TYPE => content_type.to_s }) if content_type.present?
|
23
22
|
response = request :post, "#{FILES_PATH}/#{fileName}", body: data, headers: headers
|
24
23
|
response.parse_class = Parse::Model::TYPE_FILE
|
25
24
|
response
|
26
25
|
end
|
27
|
-
|
28
26
|
end
|
29
|
-
|
30
27
|
end
|
31
|
-
|
32
28
|
end
|
data/lib/parse/api/hooks.rb
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
module Parse
|
5
|
-
|
6
|
-
|
7
5
|
module API
|
8
6
|
# Defines the Parse webhooks interface for the Parse REST API
|
9
7
|
module Hooks
|
@@ -23,7 +21,7 @@ module Parse
|
|
23
21
|
# Fetch all defined cloud code functions.
|
24
22
|
# @return [Parse::Response]
|
25
23
|
def functions
|
26
|
-
opts = {cache: false}
|
24
|
+
opts = { cache: false }
|
27
25
|
request :get, "#{HOOKS_PREFIX}functions", opts: opts
|
28
26
|
end
|
29
27
|
|
@@ -39,7 +37,7 @@ module Parse
|
|
39
37
|
# @param url [String] the url endpoint for this cloud code function.
|
40
38
|
# @return [Parse::Response]
|
41
39
|
def create_function(functionName, url)
|
42
|
-
request :post, "#{HOOKS_PREFIX}functions", body: {functionName: functionName, url: url}
|
40
|
+
request :post, "#{HOOKS_PREFIX}functions", body: { functionName: functionName, url: url }
|
43
41
|
end
|
44
42
|
|
45
43
|
# Updated the endpoint url for a registered cloud code webhook function.
|
@@ -62,7 +60,7 @@ module Parse
|
|
62
60
|
# Get the set of registered triggers.
|
63
61
|
# @return [Parse::Response]
|
64
62
|
def triggers
|
65
|
-
opts = {cache: false}
|
63
|
+
opts = { cache: false }
|
66
64
|
request :get, "#{HOOKS_PREFIX}triggers", opts: opts
|
67
65
|
end
|
68
66
|
|
@@ -84,7 +82,7 @@ module Parse
|
|
84
82
|
# @see Parse::API::Hooks::TRIGGER_NAMES
|
85
83
|
def create_trigger(triggerName, className, url)
|
86
84
|
triggerName = _verify_trigger(triggerName)
|
87
|
-
body = {className: className, triggerName: triggerName, url: url }
|
85
|
+
body = { className: className, triggerName: triggerName, url: url }
|
88
86
|
request :post, "#{HOOKS_PREFIX}triggers", body: body
|
89
87
|
end
|
90
88
|
|
@@ -108,8 +106,6 @@ module Parse
|
|
108
106
|
triggerName = _verify_trigger(triggerName)
|
109
107
|
request :put, "#{HOOKS_PREFIX}triggers/#{className}/#{triggerName}", body: { __op: "Delete" }
|
110
108
|
end
|
111
|
-
|
112
109
|
end
|
113
110
|
end
|
114
|
-
|
115
111
|
end
|
data/lib/parse/api/objects.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require "active_support"
|
5
|
+
require "active_support/core_ext"
|
6
6
|
|
7
7
|
module Parse
|
8
|
-
|
9
8
|
module API
|
10
9
|
# REST API methods for fetching CRUD operations on Parse objects.
|
11
10
|
module Objects
|
@@ -15,10 +14,9 @@ module Parse
|
|
15
14
|
|
16
15
|
# @!visibility private
|
17
16
|
PREFIX_MAP = { installation: "installations", _installation: "installations",
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
}.freeze
|
17
|
+
user: "users", _user: "users",
|
18
|
+
role: "roles", _role: "roles",
|
19
|
+
session: "sessions", _session: "sessions" }.freeze
|
22
20
|
|
23
21
|
# @!visibility private
|
24
22
|
def self.included(base)
|
@@ -43,7 +41,6 @@ module Parse
|
|
43
41
|
end
|
44
42
|
id.present? ? "#{uri}/#{id}" : "#{uri}/"
|
45
43
|
end
|
46
|
-
|
47
44
|
end
|
48
45
|
|
49
46
|
# Get the API path for this class.
|
@@ -61,7 +58,7 @@ module Parse
|
|
61
58
|
# @param headers [Hash] additional HTTP headers to send with the request.
|
62
59
|
# @return [Parse::Response]
|
63
60
|
def create_object(className, body = {}, headers: {}, **opts)
|
64
|
-
response = request :post, uri_path(className)
|
61
|
+
response = request :post, uri_path(className), body: body, headers: headers, opts: opts
|
65
62
|
response.parse_class = className if response.present?
|
66
63
|
response
|
67
64
|
end
|
@@ -111,12 +108,10 @@ module Parse
|
|
111
108
|
# @param headers [Hash] additional HTTP headers to send with the request.
|
112
109
|
# @return [Parse::Response]
|
113
110
|
def update_object(className, id, body = {}, headers: {}, **opts)
|
114
|
-
response = request :put, uri_path(className,id)
|
111
|
+
response = request :put, uri_path(className, id), body: body, headers: headers, opts: opts
|
115
112
|
response.parse_class = className if response.present?
|
116
113
|
response
|
117
114
|
end
|
118
|
-
|
119
115
|
end #Objects
|
120
116
|
end #API
|
121
|
-
|
122
117
|
end
|
data/lib/parse/api/push.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
module Parse
|
5
|
-
|
6
5
|
module API
|
7
6
|
# Defines the Parse Push notification service interface for the Parse REST API
|
8
7
|
module Push
|
@@ -16,9 +15,6 @@ module Parse
|
|
16
15
|
def push(payload = {})
|
17
16
|
request :post, PUSH_PATH, body: payload.as_json
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
21
|
-
|
22
19
|
end
|
23
|
-
|
24
20
|
end
|
data/lib/parse/api/schema.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
module Parse
|
5
|
-
|
6
5
|
module API
|
7
6
|
# Defines the Schema interface for the Parse REST API
|
8
7
|
module Schema
|
@@ -12,7 +11,7 @@ module Parse
|
|
12
11
|
# Get all the schemas for the application.
|
13
12
|
# @return [Parse::Response]
|
14
13
|
def schemas
|
15
|
-
opts = {cache: false}
|
14
|
+
opts = { cache: false }
|
16
15
|
request :get, SCHEMAS_PATH, opts: opts
|
17
16
|
end
|
18
17
|
|
@@ -20,7 +19,7 @@ module Parse
|
|
20
19
|
# @param className [String] the name of the remote Parse collection.
|
21
20
|
# @return [Parse::Response]
|
22
21
|
def schema(className)
|
23
|
-
opts = {cache: false}
|
22
|
+
opts = { cache: false }
|
24
23
|
request :get, "#{SCHEMAS_PATH}/#{className}", opts: opts
|
25
24
|
end
|
26
25
|
|
@@ -41,9 +40,6 @@ module Parse
|
|
41
40
|
def update_schema(className, schema)
|
42
41
|
request :put, "#{SCHEMAS_PATH}/#{className}", body: schema
|
43
42
|
end
|
44
|
-
|
45
43
|
end #Schema
|
46
|
-
|
47
44
|
end #API
|
48
|
-
|
49
45
|
end
|
data/lib/parse/api/server.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
module Parse
|
5
|
-
|
6
5
|
module API
|
7
6
|
# APIs related to the open source Parse Server.
|
8
7
|
module Server
|
@@ -12,9 +11,9 @@ module Parse
|
|
12
11
|
attr_accessor :server_info
|
13
12
|
|
14
13
|
# @!visibility private
|
15
|
-
SERVER_INFO_PATH =
|
14
|
+
SERVER_INFO_PATH = "serverInfo"
|
16
15
|
# @!visibility private
|
17
|
-
SERVER_HEALTH_PATH =
|
16
|
+
SERVER_HEALTH_PATH = "health"
|
18
17
|
# Fetch and cache information about the Parse server configuration. This
|
19
18
|
# hash contains information specifically to the configuration of the running
|
20
19
|
# parse server.
|
@@ -23,13 +22,13 @@ module Parse
|
|
23
22
|
return @server_info if @server_info.present?
|
24
23
|
response = request :get, SERVER_INFO_PATH
|
25
24
|
@server_info = response.error? ? nil :
|
26
|
-
|
25
|
+
response.result.with_indifferent_access
|
27
26
|
end
|
28
27
|
|
29
28
|
# Fetches the status of the server based on the health check.
|
30
29
|
# @return [Boolean] whether the server is 'OK'.
|
31
30
|
def server_health
|
32
|
-
opts = {cache: false}
|
31
|
+
opts = { cache: false }
|
33
32
|
response = request :get, SERVER_HEALTH_PATH, opts: opts
|
34
33
|
response.success?
|
35
34
|
end
|
@@ -46,8 +45,6 @@ module Parse
|
|
46
45
|
def server_version
|
47
46
|
server_info.present? ? @server_info[:parseServerVersion] : nil
|
48
47
|
end
|
49
|
-
|
50
48
|
end
|
51
49
|
end
|
52
|
-
|
53
50
|
end
|
data/lib/parse/api/sessions.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
module Parse
|
5
|
-
|
6
5
|
module API
|
7
6
|
# Defines the Session class interface for the Parse REST API
|
8
7
|
module Sessions
|
@@ -14,14 +13,12 @@ module Parse
|
|
14
13
|
# @param opts [Hash] additional options to pass to the {Parse::Client} request.
|
15
14
|
# @return [Parse::Response]
|
16
15
|
def fetch_session(session_token, **opts)
|
17
|
-
opts.merge!({use_master_key: false, cache: false})
|
18
|
-
headers = {Parse::Protocol::SESSION_TOKEN => session_token}
|
16
|
+
opts.merge!({ use_master_key: false, cache: false })
|
17
|
+
headers = { Parse::Protocol::SESSION_TOKEN => session_token }
|
19
18
|
response = request :get, "#{SESSION_PATH_PREFIX}/me", headers: headers, opts: opts
|
20
19
|
response.parse_class = Parse::Model::CLASS_SESSION
|
21
20
|
response
|
22
21
|
end
|
23
|
-
|
24
22
|
end
|
25
23
|
end
|
26
|
-
|
27
24
|
end
|
data/lib/parse/api/users.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require
|
4
|
+
require "open-uri"
|
5
5
|
|
6
6
|
module Parse
|
7
|
-
|
8
7
|
module API
|
9
8
|
# Defines the User class interface for the Parse REST API
|
10
9
|
module Users
|
@@ -42,7 +41,7 @@ module Parse
|
|
42
41
|
# @param headers [Hash] additional HTTP headers to send with the request.
|
43
42
|
# @return [Parse::Response]
|
44
43
|
def current_user(session_token, headers: {}, **opts)
|
45
|
-
headers.merge!({Parse::Protocol::SESSION_TOKEN => session_token})
|
44
|
+
headers.merge!({ Parse::Protocol::SESSION_TOKEN => session_token })
|
46
45
|
response = request :get, "#{USER_PATH_PREFIX}/me", headers: headers, opts: opts
|
47
46
|
response.parse_class = Parse::Model::CLASS_USER
|
48
47
|
response
|
@@ -54,9 +53,9 @@ module Parse
|
|
54
53
|
# @param headers [Hash] additional HTTP headers to send with the request.
|
55
54
|
# @return [Parse::Response]
|
56
55
|
def create_user(body, headers: {}, **opts)
|
57
|
-
headers.merge!({ Parse::Protocol::REVOCABLE_SESSION =>
|
56
|
+
headers.merge!({ Parse::Protocol::REVOCABLE_SESSION => "1" })
|
58
57
|
if opts[:session_token].present?
|
59
|
-
headers.merge!({ Parse::Protocol::SESSION_TOKEN => opts[:session_token]})
|
58
|
+
headers.merge!({ Parse::Protocol::SESSION_TOKEN => opts[:session_token] })
|
60
59
|
end
|
61
60
|
response = request :post, USER_PATH_PREFIX, body: body, headers: headers, opts: opts
|
62
61
|
response.parse_class = Parse::Model::CLASS_USER
|
@@ -102,8 +101,8 @@ module Parse
|
|
102
101
|
# @param opts [Hash] additional options to pass to the {Parse::Client} request.
|
103
102
|
# @param headers [Hash] additional HTTP headers to send with the request.
|
104
103
|
# @return [Parse::Response]
|
105
|
-
def request_password_reset(email,
|
106
|
-
body = {email: email}
|
104
|
+
def request_password_reset(email, headers: {}, **opts)
|
105
|
+
body = { email: email }
|
107
106
|
request :post, REQUEST_PASSWORD_RESET, body: body, opts: opts, headers: headers
|
108
107
|
end
|
109
108
|
|
@@ -116,7 +115,7 @@ module Parse
|
|
116
115
|
def login(username, password, headers: {}, **opts)
|
117
116
|
# Probably pass Installation-ID as header
|
118
117
|
query = { username: username, password: password }
|
119
|
-
headers.merge!({ Parse::Protocol::REVOCABLE_SESSION =>
|
118
|
+
headers.merge!({ Parse::Protocol::REVOCABLE_SESSION => "1" })
|
120
119
|
# headers.merge!( { Parse::Protocol::INSTALLATION_ID => ''} )
|
121
120
|
response = request :get, LOGIN_PATH, query: query, headers: headers, opts: opts
|
122
121
|
response.parse_class = Parse::Model::CLASS_USER
|
@@ -129,8 +128,8 @@ module Parse
|
|
129
128
|
# @param opts [Hash] additional options to pass to the {Parse::Client} request.
|
130
129
|
# @return [Parse::Response]
|
131
130
|
def logout(session_token, headers: {}, **opts)
|
132
|
-
headers.merge!({ Parse::Protocol::SESSION_TOKEN => session_token})
|
133
|
-
opts.merge!({use_master_key: false, session_token: session_token})
|
131
|
+
headers.merge!({ Parse::Protocol::SESSION_TOKEN => session_token })
|
132
|
+
opts.merge!({ use_master_key: false, session_token: session_token })
|
134
133
|
request :post, LOGOUT_PATH, headers: headers, opts: opts
|
135
134
|
end
|
136
135
|
|
@@ -146,10 +145,6 @@ module Parse
|
|
146
145
|
body[:email] = email || body[:email]
|
147
146
|
create_user(body, opts)
|
148
147
|
end
|
149
|
-
|
150
|
-
|
151
148
|
end # Users
|
152
|
-
|
153
149
|
end #API
|
154
|
-
|
155
150
|
end #Parse
|
data/lib/parse/client.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
1
|
+
require "faraday"
|
2
|
+
require "faraday_middleware"
|
3
|
+
require "active_support"
|
4
|
+
require "moneta"
|
5
|
+
require "active_model_serializers"
|
6
|
+
require "active_support/inflector"
|
7
|
+
require "active_support/core_ext/object"
|
8
|
+
require "active_support/core_ext/string"
|
9
|
+
require "active_support/core_ext/date/calculations"
|
10
|
+
require "active_support/core_ext/date_time/calculations"
|
11
|
+
require "active_support/core_ext/time/calculations"
|
12
|
+
require "active_support/core_ext"
|
13
13
|
require_relative "client/request"
|
14
14
|
require_relative "client/response"
|
15
15
|
require_relative "client/batch"
|
@@ -21,21 +21,28 @@ require_relative "api/all"
|
|
21
21
|
module Parse
|
22
22
|
class Error < StandardError
|
23
23
|
# An error when a general connection occurs.
|
24
|
-
class ConnectionError < Error; end
|
24
|
+
class ConnectionError < Error; end
|
25
|
+
|
25
26
|
# An error when a connection timeout occurs.
|
26
|
-
class TimeoutError < Error; end
|
27
|
+
class TimeoutError < Error; end
|
28
|
+
|
27
29
|
# An error when there is an Parse REST API protocol error.
|
28
|
-
class ProtocolError < Error; end
|
30
|
+
class ProtocolError < Error; end
|
31
|
+
|
29
32
|
# An error when the Parse server returned invalid code.
|
30
|
-
class ServerError < Error; end
|
33
|
+
class ServerError < Error; end
|
34
|
+
|
31
35
|
# An error when a Parse server responds with HTTP 500.
|
32
|
-
class ServiceUnavailableError < Error; end
|
36
|
+
class ServiceUnavailableError < Error; end
|
37
|
+
|
33
38
|
# An error when the authentication credentials in the request are invalid.
|
34
|
-
class AuthenticationError < Error; end
|
39
|
+
class AuthenticationError < Error; end
|
40
|
+
|
35
41
|
# An error when the burst limit has been exceeded.
|
36
|
-
class RequestLimitExceededError < Error; end
|
42
|
+
class RequestLimitExceededError < Error; end
|
43
|
+
|
37
44
|
# An error when the session token provided in the request is invalid.
|
38
|
-
class InvalidSessionTokenError < Error; end
|
45
|
+
class InvalidSessionTokenError < Error; end
|
39
46
|
end
|
40
47
|
|
41
48
|
# Retrieve the App specific Parse configuration parameters. The configuration
|
@@ -129,7 +136,7 @@ module Parse
|
|
129
136
|
RETRY_DELAY = 1.5
|
130
137
|
|
131
138
|
# An error when a general response error occurs when communicating with Parse server.
|
132
|
-
class ResponseError < Parse::Error; end
|
139
|
+
class ResponseError < Parse::Error; end
|
133
140
|
|
134
141
|
# @!attribute cache
|
135
142
|
# The underlying cache store for caching API requests.
|
@@ -198,7 +205,6 @@ module Parse
|
|
198
205
|
def setup(opts = {})
|
199
206
|
@clients[:default] = self.new(opts, &Proc.new)
|
200
207
|
end
|
201
|
-
|
202
208
|
end
|
203
209
|
|
204
210
|
# Create a new client connected to the Parse Server REST API endpoint.
|
@@ -242,16 +248,16 @@ module Parse
|
|
242
248
|
# @see Parse::Middleware::Authentication
|
243
249
|
# @see Parse::Protocol
|
244
250
|
def initialize(opts = {})
|
245
|
-
@server_url
|
246
|
-
@application_id = opts[:application_id] || opts[:app_id] || ENV["PARSE_SERVER_APPLICATION_ID"] || ENV[
|
247
|
-
@api_key
|
248
|
-
@master_key
|
251
|
+
@server_url = opts[:server_url] || ENV["PARSE_SERVER_URL"] || Parse::Protocol::SERVER_URL
|
252
|
+
@application_id = opts[:application_id] || opts[:app_id] || ENV["PARSE_SERVER_APPLICATION_ID"] || ENV["PARSE_APP_ID"]
|
253
|
+
@api_key = opts[:api_key] || opts[:rest_api_key] || ENV["PARSE_SERVER_REST_API_KEY"] || ENV["PARSE_API_KEY"]
|
254
|
+
@master_key = opts[:master_key] || ENV["PARSE_SERVER_MASTER_KEY"] || ENV["PARSE_MASTER_KEY"]
|
249
255
|
opts[:adapter] ||= Faraday.default_adapter
|
250
256
|
opts[:expires] ||= 3
|
251
|
-
if @server_url.nil? || @application_id.nil? || (
|
257
|
+
if @server_url.nil? || @application_id.nil? || (@api_key.nil? && @master_key.nil?)
|
252
258
|
raise Parse::Error::ConnectionError, "Please call Parse.setup(server_url:, application_id:, api_key:) to setup a client"
|
253
259
|
end
|
254
|
-
@server_url +=
|
260
|
+
@server_url += "/" unless @server_url.ends_with?("/")
|
255
261
|
#Configure Faraday
|
256
262
|
opts[:faraday] ||= {}
|
257
263
|
opts[:faraday].merge!(:url => @server_url)
|
@@ -267,9 +273,9 @@ module Parse
|
|
267
273
|
# so that other middlewares have access to the env that is being set by
|
268
274
|
# this middleware. First added is first to brocess.
|
269
275
|
conn.use Parse::Middleware::Authentication,
|
270
|
-
|
271
|
-
|
272
|
-
|
276
|
+
application_id: @application_id,
|
277
|
+
master_key: @master_key,
|
278
|
+
api_key: @api_key
|
273
279
|
# This middleware turns the result from Parse into a Parse::Response object
|
274
280
|
# and making sure request that are going out, follow the proper MIME format.
|
275
281
|
# We place it after the Authentication middleware in case we need to use then
|
@@ -294,13 +300,12 @@ module Parse
|
|
294
300
|
raise ArgumentError, "Parse::Client option :cache needs to be a type of Moneta store"
|
295
301
|
end
|
296
302
|
self.cache = opts[:cache]
|
297
|
-
conn.use Parse::Middleware::Caching, self.cache, {expires: opts[:expires].to_i }
|
303
|
+
conn.use Parse::Middleware::Caching, self.cache, { expires: opts[:expires].to_i }
|
298
304
|
end
|
299
305
|
|
300
306
|
yield(conn) if block_given?
|
301
307
|
|
302
308
|
conn.adapter opts[:adapter]
|
303
|
-
|
304
309
|
end
|
305
310
|
Parse::Client.clients[:default] ||= self
|
306
311
|
end
|
@@ -383,11 +388,11 @@ module Parse
|
|
383
388
|
# if the first argument is a Parse::Request object, then construct it
|
384
389
|
_request = nil
|
385
390
|
if method.is_a?(Request)
|
386
|
-
_request
|
387
|
-
method
|
388
|
-
uri
|
389
|
-
query
|
390
|
-
body
|
391
|
+
_request = method
|
392
|
+
method = _request.method
|
393
|
+
uri ||= _request.path
|
394
|
+
query ||= _request.query
|
395
|
+
body ||= _request.body
|
391
396
|
headers.merge! _request.headers
|
392
397
|
else
|
393
398
|
_request = Parse::Request.new(method, uri, body: body, headers: headers, opts: opts)
|
@@ -471,7 +476,7 @@ module Parse
|
|
471
476
|
warn "[Parse:Retry] Retries remaining #{_retry_count} : #{response.request}"
|
472
477
|
_retry_count -= 1
|
473
478
|
backoff_delay = RETRY_DELAY * (self.retry_limit - _retry_count)
|
474
|
-
_retry_delay = [0,RETRY_DELAY, backoff_delay].sample
|
479
|
+
_retry_delay = [0, RETRY_DELAY, backoff_delay].sample
|
475
480
|
sleep _retry_delay if _retry_delay > 0
|
476
481
|
retry
|
477
482
|
end
|
@@ -481,7 +486,7 @@ module Parse
|
|
481
486
|
warn "[Parse:Retry] Retries remaining #{_retry_count} : #{_request}"
|
482
487
|
_retry_count -= 1
|
483
488
|
backoff_delay = RETRY_DELAY * (self.retry_limit - _retry_count)
|
484
|
-
_retry_delay = [0,RETRY_DELAY, backoff_delay].sample
|
489
|
+
_retry_delay = [0, RETRY_DELAY, backoff_delay].sample
|
485
490
|
sleep _retry_delay if _retry_delay > 0
|
486
491
|
retry
|
487
492
|
end
|
@@ -502,7 +507,7 @@ module Parse
|
|
502
507
|
# @param body [Hash] a hash that will be JSON encoded for the body of this request.
|
503
508
|
# @param headers (see #get)
|
504
509
|
# @return (see #request)
|
505
|
-
def post(uri, body = nil, headers = {}
|
510
|
+
def post(uri, body = nil, headers = {})
|
506
511
|
request :post, uri, body: body, headers: headers
|
507
512
|
end
|
508
513
|
|
@@ -547,18 +552,18 @@ module Parse
|
|
547
552
|
# a the default {Parse::Client} instance.
|
548
553
|
module ClassMethods
|
549
554
|
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
+
# @return [Parse::Client] the current client for :default.
|
556
|
+
attr_accessor :client
|
557
|
+
|
558
|
+
def client
|
559
|
+
@client ||= Parse::Client.client #defaults to :default tag
|
560
|
+
end
|
555
561
|
end
|
556
562
|
|
557
563
|
# @return [Parse::Client] the current client defined for the class.
|
558
564
|
def client
|
559
565
|
self.class.client
|
560
566
|
end
|
561
|
-
|
562
567
|
end #Connectable
|
563
568
|
end
|
564
569
|
|
@@ -588,7 +593,7 @@ module Parse
|
|
588
593
|
# @param opts (see Parse.call_function)
|
589
594
|
# @return (see Parse.call_function)
|
590
595
|
def self.trigger_job(name, body = {}, **opts)
|
591
|
-
conn = opts[:session] || opts[:client] ||
|
596
|
+
conn = opts[:session] || opts[:client] || :default
|
592
597
|
response = Parse::Client.client(conn).trigger_job(name, body)
|
593
598
|
return response if opts[:raw].present?
|
594
599
|
response.error? ? nil : response.result["result"]
|
@@ -600,10 +605,9 @@ module Parse
|
|
600
605
|
# @param opts [Hash] additional options.
|
601
606
|
# @return [Object] the result data of the response. nil if there was an error.
|
602
607
|
def self.call_function(name, body = {}, **opts)
|
603
|
-
conn = opts[:session] || opts[:client] ||
|
608
|
+
conn = opts[:session] || opts[:client] || :default
|
604
609
|
response = Parse::Client.client(conn).call_function(name, body)
|
605
610
|
return response if opts[:raw].present?
|
606
611
|
response.error? ? nil : response.result["result"]
|
607
612
|
end
|
608
|
-
|
609
613
|
end
|