Class: AFMotion::SessionClientDSL

Inherits:
ClientDSL
  • Object
show all
Defined in:
lib/afmotion/session_client.rb

Defined Under Namespace

Classes: Config

Constant Summary collapse

SESSION_CONFIGURATION_SHORTHAND =
{
  default: :defaultSessionConfiguration,
  ephemeral: :ephemeralSessionConfiguration,
  background: "backgroundSessionConfiguration:".to_sym
}

Constants inherited from ClientDSL

ClientDSL::OPERATION_TO_REQUEST_SERIALIZER, ClientDSL::OPERATION_TO_RESPONSE_SERIALIZER

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from ClientDSL

#authorization, #header, #operation_queue, #request_serializer, #response_serializer

Constructor Details

#initialize(base_url) ⇒ SessionClientDSL

Returns a new instance of SessionClientDSL.



70
71
72
73
# File 'lib/afmotion/session_client.rb', line 70

def initialize(base_url)
  @base_url = base_url
  @operation_manager = Config.new
end

Instance Attribute Details

#operation_managerObject Also known as: config

Returns the value of attribute operation_manager.



67
68
69
# File 'lib/afmotion/session_client.rb', line 67

def operation_manager
  @operation_manager
end

Instance Method Details

#session_configuration(session_configuration, identifier = nil) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/afmotion/session_client.rb', line 97

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

#to_session_managerObject



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/afmotion/session_client.rb', line 75

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