Class: Motion::HTTP::Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/cocoa/adapter.rb,
lib/android/adapter.rb

Defined Under Namespace

Classes: OkhttpCallback

Constant Summary collapse

JSONMediaType =
Okhttp3::MediaType.parse("application/json; charset=utf-8")

Class Method Summary collapse

Class Method Details

.clientObject



6
7
8
# File 'lib/android/adapter.rb', line 6

def self.client
  @client ||= Okhttp3::OkHttpClient.new
end

.managerObject



4
5
6
# File 'lib/cocoa/adapter.rb', line 4

def self.manager
  @manager ||= AFHTTPSessionManager.manager
end

.request(http_method, url, headers, params = nil, &callback) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/cocoa/adapter.rb', line 8

def self.request(http_method, url, headers, params = nil, &callback)
  progress = nil
  on_success = lambda do |task, response_object|
    response = task.response
    callback.call(Response.new(response.statusCode, Headers.new(response.allHeaderFields), nil, response_object))
  end
  on_error = lambda do |operation, error|
    NSLog("Error: %@", error)
    response = operation.response
    status_code = response.statusCode if response
    response_headers = response.allHeaderFields if response
    error_message = error.localizedDescription
    error_message += error.userInfo[NSLocalizedDescriptionKey] if error.userInfo[NSLocalizedDescriptionKey]
    callback.call(
      Response.new(status_code, Headers.new(response_headers), error_message)
    )
  end

  case http_method
  when :get
    manager.GET url, parameters: params, progress: progress, success: on_success, failure: on_error
  when :post
    manager.POST url, parameters: params, progress: progress, success: on_success, failure: on_error
  when :put
    manager.PUT url, parameters: params, progress: progress, success: on_success, failure: on_error
  when :patch
    manager.PATCH url, parameters: params, progress: progress, success: on_success, failure: on_error
  when :delete
    manager.DELETE url, parameters: params, progress: progress, success: on_success, failure: on_error
  end

  # FIXME: dynamically calling the method using send results in a crash
  # method_signature = "#{http_method.to_s.upcase}:parameters:progress:success:failure:"
  # # manager.send(method_signature, url, params, nil, on_success, on_error)
end