lib/afmotion/session_client.rb in afmotion-2.6 vs lib/afmotion/session_client.rb in afmotion-3.0
- old
+ new
@@ -1,7 +1,9 @@
-motion_require 'http_client'
motion_require 'version'
+motion_require 'client_shared'
+motion_require 'session_client_dsl'
+motion_require 'ext/AFHTTPSessionManager'
=begin
AFMotion::SessionClient.build("http://google.com") do |client|
client.session_configuration :default # :ephemeral
client.session_configuration :background, "com.usepropeller.afmotion"
@@ -19,132 +21,29 @@
attr_accessor :shared
# Returns an instance of AFHTTPRequestOperationManager
def build(base_url, &block)
dsl = AFMotion::SessionClientDSL.new(base_url)
- case block.arity
- when 0
- dsl.instance_eval(&block)
- when 1
- block.call(dsl)
+
+ if block_given?
+ case block.arity
+ when 0
+ dsl.instance_eval(&block)
+ when 1
+ block.call(dsl)
+ end
end
-
+
dsl.to_session_manager
end
# Sets AFMotion::Client.shared as the built client
def build_shared(base_url, &block)
self.shared = self.build(base_url, &block)
end
end
end
-end
-
-module AFMotion
- class SessionClientDSL < ClientDSL
- class Config
- attr_accessor :responseSerializer, :operationQueue, :requestSerializer, :sessionConfiguration
-
- class MockRequestSerializer
- attr_accessor :authorization
- end
-
- def requestSerializer
- @requestSerializer ||= MockRequestSerializer.new
- end
-
- def requestSerializer=(requestSerializer)
- if @requestSerializer && @requestSerializer.is_a?(MockRequestSerializer)
- requestSerializer.authorization = @requestSerializer.authorization
- end
- @requestSerializer = requestSerializer
- end
-
- def headers
- @headers ||= {}
- end
- end
-
- attr_accessor :operation_manager
- alias_method :config, :operation_manager
-
- def initialize(base_url)
- @base_url = base_url
- @operation_manager = Config.new
- end
-
- def to_session_manager
- session_manager = AFHTTPSessionManager.alloc.initWithBaseURL(@base_url.to_url,
- sessionConfiguration: config.sessionConfiguration)
- session_manager.responseSerializer = config.responseSerializer if config.responseSerializer
- if !config.requestSerializer.is_a?(Config::MockRequestSerializer)
- session_manager.requestSerializer = config.requestSerializer
- elsif config.requestSerializer.authorization
- session_manager.requestSerializer.authorization = config.requestSerializer.authorization
- end
- config.headers.each do |key, value|
- session_manager.requestSerializer.headers[key] = value
- end
- session_manager.operationQueue = config.operationQueue if config.operationQueue
- session_manager
- end
-
- SESSION_CONFIGURATION_SHORTHAND = {
- default: :defaultSessionConfiguration,
- ephemeral: :ephemeralSessionConfiguration,
- background: (UIDevice.currentDevice.systemVersion.to_f >= 8.0 ? "backgroundSessionConfigurationWithIdentifier:" : "backgroundSessionConfiguration:").to_sym
- }
-
- def session_configuration(session_configuration, identifier = nil)
- if session_configuration.is_a?(Symbol) || session_configuration.is_a?(String)
- method_signature = SESSION_CONFIGURATION_SHORTHAND[session_configuration.to_sym]
- ns_url_session_configuration = begin
- if identifier
- NSURLSessionConfiguration.send(method_signature, identifier)
- else
- NSURLSessionConfiguration.send(method_signature)
- end
- end
- self.config.sessionConfiguration = ns_url_session_configuration
- elsif session_configuration.is_a?(NSURLSessionConfiguration) ||
- # cluster class smh
- session_configuration.class.to_s.include?("URLSessionConfiguration")
- self.config.sessionConfiguration = session_configuration
- else
- raise "Invalid type for session_configuration; need Symbol, String, or NSURLSessionConfiguration, but got #{session_configuration.class}"
- end
- end
- end
-end
-
-class AFHTTPSessionManager
- include AFMotion::ClientShared
-
- AFMotion::HTTP_METHODS.each do |method|
- # EX client.get('my/resource.json')
- define_method "#{method}", -> (path, parameters = {}, &callback) do
- create_task(method, path, parameters, &callback)
- end
- end
-
- # options = {parameters: , constructingBodyWithBlock: , success:, failure:}
- def PUT(url_string, options = {})
- parameters = options[:parameters]
- block = options[:constructingBodyWithBlock]
- success = options[:success]
- failure = options[:failure]
-
- request = self.requestSerializer.multipartFormRequestWithMethod("PUT", URLString: NSURL.URLWithString(url_string, relativeToURL: self.baseURL).absoluteString, parameters:parameters, constructingBodyWithBlock:block)
-
- task = self.dataTaskWithRequest(request, completionHandler: ->(response, responseObject, error) {
- if error && failure
- failure.call(task, error)
- elsif success
- success.call(task, responseObject)
- end
- })
-
- task.resume
-
- task
+
+ # These are now the same thing
+ class Client < SessionClient
end
end