Module: AFMotion::HTTPBuilder

Included in:
HTTP, Image, JSON, PLIST, XML
Defined in:
lib/afmotion/http.rb

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/afmotion/http.rb', line 3

def self.included(base)
  AFMotion::HTTP_METHODS.each do |method|
    base.send(:define_singleton_method, method, -> (request_or_url, parameters = {}, &callback) do
      request = request_or_url
      if !request.is_a?(NSURLRequest)
        request = NSMutableURLRequest.requestWithURL(request_or_url.to_url)
        request.HTTPMethod = method.upcase
        if [:get, :head].member? method.downcase.to_sym
          request.HTTPShouldUsePipelining = true
        end
        # SEE NSURLRequest_params.rb
        request.parameters = parameters.merge(__encoding__: self.parameter_encoding)
      end

      operation = (self.request_module.for_request(request) do |result|
        callback.call(result)
      end)

      operation.start
      operation
    end)
  end
end