Class: AFMotion::SessionClientDSL

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

Defined Under Namespace

Classes: Config

Constant Summary collapse

SESSION_CONFIGURATION_SHORTHAND =
{
  default: :defaultSessionConfiguration,
  ephemeral: :ephemeralSessionConfiguration,
  background: (Object.const_defined?("UIDevice") && UIDevice.currentDevice.systemVersion.to_f >= 8.0 ? "backgroundSessionConfigurationWithIdentifier:" : "backgroundSessionConfiguration:").to_sym
}
OPERATION_TO_REQUEST_SERIALIZER =
{
  json: AFJSONRequestSerializer,
  plist: AFPropertyListRequestSerializer
}
OPERATION_TO_RESPONSE_SERIALIZER =
{
  json: AFJSONResponseSerializer,
  xml: AFXMLParserResponseSerializer,
  plist: AFPropertyListResponseSerializer,
  image: AFImageResponseSerializer,
  http: AFHTTPResponseSerializer,
  form: AFHTTPResponseSerializer
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_url) ⇒ SessionClientDSL

Returns a new instance of SessionClientDSL.



28
29
30
31
# File 'lib/afmotion/session_client_dsl.rb', line 28

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

Instance Attribute Details

#configObject

Returns the value of attribute config.



26
27
28
# File 'lib/afmotion/session_client_dsl.rb', line 26

def config
  @config
end

Instance Method Details

#authorization(options = {}) ⇒ Object



82
83
84
85
# File 'lib/afmotion/session_client_dsl.rb', line 82

def authorization(options = {})
  @authorization = options
  apply_authorization(options)
end

#header(header, value) ⇒ Object



76
77
78
79
80
# File 'lib/afmotion/session_client_dsl.rb', line 76

def header(header, value)
  @headers ||= {}
  @headers[header] = value
  apply_header(header, value)
end

#request_serializer(serializer) ⇒ Object



91
92
93
94
95
96
97
98
99
100
# File 'lib/afmotion/session_client_dsl.rb', line 91

def request_serializer(serializer)
  if serializer.is_a?(Symbol) || serializer.is_a?(String)
  config.requestSerializer = OPERATION_TO_REQUEST_SERIALIZER[serializer.to_sym].serializer
  elsif serializer.is_a?(Class)
  config.requestSerializer = serializer.serializer
  else
  config.requestSerializer = serializer
  end
  reapply_options
end

#response_serializer(serializer) ⇒ Object



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/afmotion/session_client_dsl.rb', line 110

def response_serializer(serializer)
  write_json_options = true
  if serializer.is_a?(Symbol) || serializer.is_a?(String)
  config.responseSerializer = OPERATION_TO_RESPONSE_SERIALIZER[serializer.to_sym].serializer
  elsif serializer.is_a?(Class)
  config.responseSerializer = serializer.serializer
  else
  config.responseSerializer = serializer
  write_json_options = false
  end
  af_serializer = config.responseSerializer
  if af_serializer.is_a?(AFJSONResponseSerializer) && write_json_options
  af_serializer.readingOptions = NSJSONReadingMutableContainers
  end
  af_serializer
end

#session_configuration(session_configuration, identifier = nil) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/afmotion/session_client_dsl.rb', line 56

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



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/afmotion/session_client_dsl.rb', line 33

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
end