Skip to content

Commit ba12f51

Browse files
committed
RUBYAPI-40 config based
1 parent 8ef8257 commit ba12f51

File tree

9 files changed

+43
-33
lines changed

9 files changed

+43
-33
lines changed

lib/spark_api.rb

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
require 'spark_api/connection'
1414
require 'spark_api/client'
1515
require 'spark_api/faraday_middleware'
16+
require 'spark_api/reso_faraday_middleware'
1617
require 'spark_api/primary_array'
1718
require 'spark_api/options_hash'
1819
require 'spark_api/models'
@@ -39,14 +40,6 @@ def self.client(opts={})
3940
Thread.current[:spark_api_client] ||= SparkApi::Client.new(opts)
4041
end
4142

42-
def self.reso_client(opts={})
43-
opts = opts.dup
44-
opts[:version] = "Reso/OData"
45-
opts[:middleware] = :reso_api
46-
47-
Thread.current[:reso_api_client] ||= SparkApi::Client.new(opts)
48-
end
49-
5043
def self.method_missing(method, *args, &block)
5144
return super unless (client.respond_to?(method))
5245
client.send(method, *args, &block)
@@ -55,7 +48,6 @@ def self.method_missing(method, *args, &block)
5548
def self.reset
5649
reset_configuration
5750
Thread.current[:spark_api_client] = nil
58-
Thread.current[:reso_api_client] = nil
5951
end
6052

6153
end

lib/spark_api/cli.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class ConsoleCLI
3131
:api_user => "API_USER",
3232
# OTHER
3333
:debug=> "DEBUG",
34+
:middleware => "SPARK_MIDDLEWARE",
3435
:console => "SPARK_API_CONSOLE" # not a public option, meant to distinguish bin/spark_api and script/console
3536
}
3637

@@ -69,7 +70,8 @@ def self.setup_options(stdout,arguments)
6970
:api_secret => ENV[OPTIONS_ENV[:api_secret]],
7071
:api_user => ENV[OPTIONS_ENV[:api_user]],
7172
: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]]
7375
}
7476
cli_options = {}
7577
file_options = {}
@@ -128,7 +130,10 @@ def self.setup_options(stdout,arguments)
128130
opts.on("--api_user API_USER",
129131
"ID of the Spark user to run the client as.",
130132
"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+
132137
# General
133138
opts.on("-f", "--file FILE",
134139
"Load configuration for yaml file.") { |arg| file_options = parse_file_options(arg) }

lib/spark_api/cli/api_auth.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
config.api_user = ENV["API_USER"] if ENV["API_USER"]
77
config.endpoint = ENV["API_ENDPOINT"] if ENV["API_ENDPOINT"]
88
config.ssl_verify = ENV["SSL_VERIFY"].downcase != 'false' if ENV["SSL_VERIFY"]
9+
config.middleware = ENV["SPARK_MIDDLEWARE"] if ENV["SPARK_MIDDLEWARE"]
910
end

lib/spark_api/cli/oauth2.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
config.authentication_mode = SparkApi::Authentication::OAuth2
2020
config.endpoint = ENV["API_ENDPOINT"] if ENV["API_ENDPOINT"]
2121
config.ssl_verify = ENV["SSL_VERIFY"].downcase != 'false' if ENV["SSL_VERIFY"]
22+
config.middleware = ENV["SPARK_MIDDLEWARE"] if ENV["SPARK_MIDDLEWARE"]
2223
end
2324

2425
# Enables saving and loading serialized oauth2 sessions for the system user.

lib/spark_api/configuration.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ module Configuration
4343
DEFAULT_OAUTH2 = nil
4444
DEFAULT_COMPRESS = false
4545
DEFAULT_TIMEOUT = 5 # seconds
46-
DEFAULT_MIDDLEWARE = :spark_api
46+
DEFAULT_MIDDLEWARE = 'spark_api'
4747

4848
X_SPARK_API_USER_AGENT = "X-SparkApi-User-Agent"
4949

@@ -77,7 +77,7 @@ def reset_configuration
7777
self.version = DEFAULT_VERSION
7878
self.compress = DEFAULT_COMPRESS
7979
self.timeout = DEFAULT_TIMEOUT
80-
self.middleware = DEFAULT_MIDDLEWARE
80+
self.middleware = DEFAULT_MIDDLEWARE
8181
self
8282
end
8383
end

lib/spark_api/connection.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def connection(force_ssl = false)
2323
end
2424

2525
conn = Faraday.new(opts) do |conn|
26-
conn.response self.middleware
26+
conn.response self.middleware.to_sym
2727
conn.options[:timeout] = self.timeout
2828
conn.adapter Faraday.default_adapter
2929
end

lib/spark_api/faraday_middleware.rb

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,7 @@ def decompress_body(env)
8787

8888
end
8989

90-
class ResoFaradayMiddleware < FaradayMiddleware
91-
92-
def on_complete(env)
93-
94-
body = decompress_body(env)
95-
body = MultiJson.decode(body)
96-
97-
if body["D"]
98-
super(env)
99-
return
100-
end
101-
102-
env[:body] = body
103-
end
104-
105-
end
106-
10790
Faraday::Response.register_middleware :spark_api => FaradayMiddleware
108-
Faraday::Response.register_middleware :reso_api => ResoFaradayMiddleware
91+
10992
end
93+

lib/spark_api/request.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,11 @@ def request(method, path, body, options)
6565
begin
6666
request_opts = {}
6767
request_opts.merge!(options)
68-
request_path = "/#{version}#{path}"
68+
request_path = if middleware == :reso_api
69+
"/Reso/OData#{path}"
70+
else
71+
"/#{version}#{path}"
72+
end
6973
start_time = Time.now
7074
if [:get, :delete, :head].include?(method.to_sym)
7175
response = authenticator.request(method, request_path, nil, request_opts)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
module SparkApi
3+
4+
class ResoFaradayMiddleware < FaradayMiddleware
5+
6+
def on_complete(env)
7+
8+
body = decompress_body(env)
9+
body = MultiJson.decode(body)
10+
11+
if body["D"]
12+
puts "D contains #{body['D'].inspect}"
13+
super(env)
14+
return
15+
end
16+
17+
env[:body] = body
18+
end
19+
20+
end
21+
22+
Faraday::Response.register_middleware :reso_api => ResoFaradayMiddleware
23+
end

0 commit comments

Comments
 (0)