spark_api 1.4.14 → 1.4.15
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.
- checksums.yaml +8 -8
- data/VERSION +1 -1
- data/lib/spark_api.rb +1 -0
- data/lib/spark_api/authentication/api_auth.rb +1 -1
- data/lib/spark_api/cli.rb +7 -2
- data/lib/spark_api/cli/api_auth.rb +1 -0
- data/lib/spark_api/cli/oauth2.rb +1 -0
- data/lib/spark_api/configuration.rb +4 -1
- data/lib/spark_api/connection.rb +17 -1
- data/lib/spark_api/faraday_middleware.rb +2 -0
- data/lib/spark_api/request.rb +5 -1
- data/lib/spark_api/reso_faraday_middleware.rb +30 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjZlZjMzZmMxM2VhODU0OTVlMGIyZDhhZGQ2ZWE5ZDUzNGU4MDJhMA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
N2Y2MGMzODc0YTI5NTJlODE5ZTUwMjc0MzA1NmZhZTE3ZTRmZGMzYw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDczNmFhZjM3ODIxZmI4Yzc0ZGEyZDczMTdmMmMyZTljNzYwNmJlYWIyNDhh
|
10
|
+
YTVlNzk4ZGYxNzNkMDRlYzI3OGMwY2ZhZDg3ODE2ZTBjNTY0NmExYjA0YjVj
|
11
|
+
MTJiNTZjNDg2NjhmMDM0MzE0ZjQ3ZDY5MGE1Y2U5Yjc2YWI0Zjc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzEwMzM3YTIwODY1YjQ1MGZjY2Y1OTYyZmQ2MWNkOTI4Njg1MDk4YWI2NDQz
|
14
|
+
YjVjNmUzNjVlNTg1Y2M1MDZkMDk0YTRmNWY3MmU5ZjAwZGM3NDc5MDZjODlj
|
15
|
+
ZjNiNDUxN2ViYTYwNTA2NjhmZDI3ZjAwODFkMzBmODZkZGQ4OGY=
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.15
|
data/lib/spark_api.rb
CHANGED
@@ -13,6 +13,7 @@ require 'spark_api/request'
|
|
13
13
|
require 'spark_api/connection'
|
14
14
|
require 'spark_api/client'
|
15
15
|
require 'spark_api/faraday_middleware'
|
16
|
+
require 'spark_api/reso_faraday_middleware'
|
16
17
|
require 'spark_api/primary_array'
|
17
18
|
require 'spark_api/options_hash'
|
18
19
|
require 'spark_api/models'
|
@@ -19,7 +19,7 @@ module SparkApi
|
|
19
19
|
sig = sign("#{@client.api_secret}ApiKey#{@client.api_key}")
|
20
20
|
SparkApi.logger.debug { "Authenticating to #{@client.endpoint}" }
|
21
21
|
start_time = Time.now
|
22
|
-
request_path = "
|
22
|
+
request_path = "#{SparkApi::Configuration::DEFAULT_SESSION_PATH}?ApiKey=#{@client.api_key}&ApiSig=#{sig}"
|
23
23
|
resp = @client.connection(true).post request_path, ""
|
24
24
|
request_time = Time.now - start_time
|
25
25
|
SparkApi.logger.info { "[#{(request_time * 1000).to_i}ms] Api: POST #{request_path}" }
|
data/lib/spark_api/cli.rb
CHANGED
@@ -31,6 +31,7 @@ module SparkApi
|
|
31
31
|
:api_user => "API_USER",
|
32
32
|
# OTHER
|
33
33
|
:debug=> "DEBUG",
|
34
|
+
:middleware => "SPARK_MIDDLEWARE",
|
34
35
|
:console => "SPARK_API_CONSOLE" # not a public option, meant to distinguish bin/spark_api and script/console
|
35
36
|
}
|
36
37
|
|
@@ -69,7 +70,8 @@ module SparkApi
|
|
69
70
|
:api_secret => ENV[OPTIONS_ENV[:api_secret]],
|
70
71
|
:api_user => ENV[OPTIONS_ENV[:api_user]],
|
71
72
|
:ssl_verify => ENV.fetch(OPTIONS_ENV[:ssl_verify], true),
|
72
|
-
:console => ENV[OPTIONS_ENV[:console]]
|
73
|
+
:console => ENV[OPTIONS_ENV[:console]],
|
74
|
+
:middleware => ENV[OPTIONS_ENV[:middleware]]
|
73
75
|
}
|
74
76
|
cli_options = {}
|
75
77
|
file_options = {}
|
@@ -128,7 +130,10 @@ module SparkApi
|
|
128
130
|
opts.on("--api_user API_USER",
|
129
131
|
"ID of the Spark user to run the client as.",
|
130
132
|
"Default: ENV['#{OPTIONS_ENV[:api_user]}']") { |arg| cli_options[:api_user] = arg }
|
131
|
-
|
133
|
+
opts.on("--middleware SPARK_MIDDLEWARE",
|
134
|
+
"spark_api for accessing spark, reso_api for accessing reso adapter",
|
135
|
+
"Default: spark_api") { |arg| cli_options[:middleware] = arg }
|
136
|
+
|
132
137
|
# General
|
133
138
|
opts.on("-f", "--file FILE",
|
134
139
|
"Load configuration for yaml file.") { |arg| file_options = parse_file_options(arg) }
|
@@ -6,4 +6,5 @@ SparkApi.configure do |config|
|
|
6
6
|
config.api_user = ENV["API_USER"] if ENV["API_USER"]
|
7
7
|
config.endpoint = ENV["API_ENDPOINT"] if ENV["API_ENDPOINT"]
|
8
8
|
config.ssl_verify = ENV["SSL_VERIFY"].downcase != 'false' if ENV["SSL_VERIFY"]
|
9
|
+
config.middleware = ENV["SPARK_MIDDLEWARE"] if ENV["SPARK_MIDDLEWARE"]
|
9
10
|
end
|
data/lib/spark_api/cli/oauth2.rb
CHANGED
@@ -19,6 +19,7 @@ SparkApi.configure do |config|
|
|
19
19
|
config.authentication_mode = SparkApi::Authentication::OAuth2
|
20
20
|
config.endpoint = ENV["API_ENDPOINT"] if ENV["API_ENDPOINT"]
|
21
21
|
config.ssl_verify = ENV["SSL_VERIFY"].downcase != 'false' if ENV["SSL_VERIFY"]
|
22
|
+
config.middleware = ENV["SPARK_MIDDLEWARE"] if ENV["SPARK_MIDDLEWARE"]
|
22
23
|
end
|
23
24
|
|
24
25
|
# Enables saving and loading serialized oauth2 sessions for the system user.
|
@@ -11,7 +11,7 @@ module SparkApi
|
|
11
11
|
# valid configuration options
|
12
12
|
VALID_OPTION_KEYS = [:api_key, :api_secret, :api_user, :endpoint,
|
13
13
|
:user_agent, :version, :ssl, :ssl_verify, :oauth2_provider, :authentication_mode,
|
14
|
-
:auth_endpoint, :callback, :compress, :timeout].freeze
|
14
|
+
:auth_endpoint, :callback, :compress, :timeout, :middleware].freeze
|
15
15
|
OAUTH2_KEYS = [:authorization_uri, :access_uri, :client_id, :client_secret,
|
16
16
|
# Requirements for authorization_code grant type
|
17
17
|
:redirect_uri,
|
@@ -36,12 +36,14 @@ module SparkApi
|
|
36
36
|
DEFAULT_AUTHORIZATION_URI = 'https://sparkplatform.com/oauth2'
|
37
37
|
DEFAULT_VERSION = 'v1'
|
38
38
|
DEFAULT_ACCESS_URI = "#{DEFAULT_ENDPOINT}/#{DEFAULT_VERSION}/oauth2/grant"
|
39
|
+
DEFAULT_SESSION_PATH = "/#{DEFAULT_VERSION}/session"
|
39
40
|
DEFAULT_USER_AGENT = "Spark API Ruby Gem #{VERSION}"
|
40
41
|
DEFAULT_SSL = true
|
41
42
|
DEFAULT_SSL_VERIFY = true
|
42
43
|
DEFAULT_OAUTH2 = nil
|
43
44
|
DEFAULT_COMPRESS = false
|
44
45
|
DEFAULT_TIMEOUT = 5 # seconds
|
46
|
+
DEFAULT_MIDDLEWARE = 'spark_api'
|
45
47
|
|
46
48
|
X_SPARK_API_USER_AGENT = "X-SparkApi-User-Agent"
|
47
49
|
|
@@ -75,6 +77,7 @@ module SparkApi
|
|
75
77
|
self.version = DEFAULT_VERSION
|
76
78
|
self.compress = DEFAULT_COMPRESS
|
77
79
|
self.timeout = DEFAULT_TIMEOUT
|
80
|
+
self.middleware = DEFAULT_MIDDLEWARE
|
78
81
|
self
|
79
82
|
end
|
80
83
|
end
|
data/lib/spark_api/connection.rb
CHANGED
@@ -23,7 +23,7 @@ module SparkApi
|
|
23
23
|
end
|
24
24
|
|
25
25
|
conn = Faraday.new(opts) do |conn|
|
26
|
-
conn.response
|
26
|
+
conn.response self.middleware.to_sym
|
27
27
|
conn.options[:timeout] = self.timeout
|
28
28
|
conn.adapter Faraday.default_adapter
|
29
29
|
end
|
@@ -33,6 +33,14 @@ module SparkApi
|
|
33
33
|
|
34
34
|
# HTTP request headers for client requests
|
35
35
|
def headers
|
36
|
+
if self.middleware.to_sym == :reso_api
|
37
|
+
reso_headers
|
38
|
+
else
|
39
|
+
spark_headers
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def spark_headers
|
36
44
|
{
|
37
45
|
:accept => 'application/json',
|
38
46
|
:content_type => 'application/json',
|
@@ -40,6 +48,14 @@ module SparkApi
|
|
40
48
|
Configuration::X_SPARK_API_USER_AGENT => user_agent
|
41
49
|
}
|
42
50
|
end
|
51
|
+
|
52
|
+
def reso_headers
|
53
|
+
{
|
54
|
+
:accept => 'application/json, application/xml',
|
55
|
+
:user_agent => Configuration::DEFAULT_USER_AGENT,
|
56
|
+
Configuration::X_SPARK_API_USER_AGENT => user_agent
|
57
|
+
}
|
58
|
+
end
|
43
59
|
|
44
60
|
end
|
45
61
|
end
|
data/lib/spark_api/request.rb
CHANGED
@@ -65,7 +65,11 @@ module SparkApi
|
|
65
65
|
begin
|
66
66
|
request_opts = {}
|
67
67
|
request_opts.merge!(options)
|
68
|
-
request_path =
|
68
|
+
request_path = if middleware && middleware.to_sym == :reso_api
|
69
|
+
"/Reso/OData#{path}"
|
70
|
+
else
|
71
|
+
"/#{version}#{path}"
|
72
|
+
end
|
69
73
|
start_time = Time.now
|
70
74
|
if [:get, :delete, :head].include?(method.to_sym)
|
71
75
|
response = authenticator.request(method, request_path, nil, request_opts)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
module SparkApi
|
3
|
+
|
4
|
+
class ResoFaradayMiddleware < FaradayMiddleware
|
5
|
+
|
6
|
+
def on_complete(env)
|
7
|
+
|
8
|
+
body = decompress_body(env)
|
9
|
+
|
10
|
+
begin
|
11
|
+
body = MultiJson.decode(body)
|
12
|
+
|
13
|
+
if body["D"]
|
14
|
+
super(env)
|
15
|
+
return
|
16
|
+
end
|
17
|
+
|
18
|
+
env[:body] = body
|
19
|
+
rescue MultiJson::ParseError => e
|
20
|
+
# We will allow the client to choose their XML parser, but should do
|
21
|
+
# some minor format verification
|
22
|
+
raise e if body.strip[/\A<\?xml/].nil?
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
Faraday::Response.register_middleware :reso_api => ResoFaradayMiddleware
|
30
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spark_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Hornseth
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-07-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -369,6 +369,7 @@ files:
|
|
369
369
|
- lib/spark_api/paginate.rb
|
370
370
|
- lib/spark_api/primary_array.rb
|
371
371
|
- lib/spark_api/request.rb
|
372
|
+
- lib/spark_api/reso_faraday_middleware.rb
|
372
373
|
- lib/spark_api/response.rb
|
373
374
|
- lib/spark_api/version.rb
|
374
375
|
- script/bootstrap
|