Class: OpenKit::Request::PostMultipartDelegate

Inherits:
BaseDelegate
  • Object
show all
Defined in:
lib/openkit/request/post_multipart.rb

Instance Attribute Summary

Attributes inherited from BaseDelegate

#app_key, #host, #path, #scheme, #secret_key

Instance Method Summary collapse

Methods inherited from BaseDelegate

#base_uri, #uri

Constructor Details

#initialize(path, req_params, upload) ⇒ PostMultipartDelegate

Returns a new instance of PostMultipartDelegate.



29
30
31
32
33
# File 'lib/openkit/request/post_multipart.rb', line 29

def initialize(path, req_params, upload)
  super(path)
  @req_params = req_params
  @upload = upload
end

Instance Method Details

#flat_names(parameters, running = '', &block) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'lib/openkit/request/post_multipart.rb', line 51

def flat_names(parameters, running = '', &block)
  parameters.each do |k,v|
    name = (running.length == 0) ? k.to_s : running + "[#{k}]"
    if v.is_a?(Hash)
      flat_names(v, name, &block)
    else
      yield name, v
    end
  end
end

#flatten_params(parameters) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/openkit/request/post_multipart.rb', line 43

def flatten_params(parameters)
  flattened = {}
  flat_names(parameters, '') do |name,v|
    flattened[name] = v
  end
  flattened
end

#net_requestObject



35
36
37
38
39
40
41
# File 'lib/openkit/request/post_multipart.rb', line 35

def net_request
  up_io = UploadIO.new(@upload.file, "application/octet-stream", "upload")
  flat_params = flatten_params(@req_params)
  req = Net::HTTP::Post::Multipart.new(uri.request_uri, flat_params.merge(@upload.param_name => up_io))
  req['Accept'] = "application/json"
  req
end