Module: HTTMultiParty

Included in:
Basement
Defined in:
lib/httmultiparty.rb,
lib/httmultiparty/version.rb

Defined Under Namespace

Modules: ClassMethods, Multipartable Classes: Basement, MultipartPost, MultipartPut

Constant Summary collapse

VERSION =
'0.3.15'

Class Method Summary collapse

Class Method Details

.delete(*args) ⇒ Object



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

def self.delete(*args)
  Basement.delete(*args)
end

.file_to_upload_io(file, detect_mime_type = false) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/httmultiparty.rb', line 14

def self.file_to_upload_io(file, detect_mime_type = false)
  if file.respond_to? :original_filename
    filename = file.original_filename
  else
    filename =  File.split(file.path).last
  end
  content_type = detect_mime_type ? MimeMagic.by_path(filename) : 'application/octet-stream'
  UploadIO.new(file, content_type, filename)
end

.flatten_params(params = {}, prefix = '') ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/httmultiparty.rb', line 37

def self.flatten_params(params={}, prefix='')
  flattened = []
  params.each do |(k,v)|
    if params.is_a?(Array)
      v = k
      k = ""
    end

    flattened_key = prefix == "" ? "#{k}" : "#{prefix}[#{k}]"
    if v.is_a?(Hash) || v.is_a?(Array)
      flattened += flatten_params(v, flattened_key)
    else
      flattened << [flattened_key, v]
    end
  end
  flattened
end

.get(*args) ⇒ Object



55
56
57
# File 'lib/httmultiparty.rb', line 55

def self.get(*args)
  Basement.get(*args)
end

.head(*args) ⇒ Object



71
72
73
# File 'lib/httmultiparty.rb', line 71

def self.head(*args)
  Basement.head(*args)
end

.included(base) ⇒ Object



9
10
11
12
# File 'lib/httmultiparty.rb', line 9

def self.included(base)
  base.send :include, HTTParty
  base.extend ClassMethods
end

.options(*args) ⇒ Object



75
76
77
# File 'lib/httmultiparty.rb', line 75

def self.options(*args)
  Basement.options(*args)
end

.post(*args) ⇒ Object



59
60
61
# File 'lib/httmultiparty.rb', line 59

def self.post(*args)
  Basement.post(*args)
end

.put(*args) ⇒ Object



63
64
65
# File 'lib/httmultiparty.rb', line 63

def self.put(*args)
  Basement.put(*args)
end

.query_string_normalizer(options = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/httmultiparty.rb', line 24

def self.query_string_normalizer(options = {})
  detect_mime_type = options.fetch(:detect_mime_type, false)
  Proc.new do |params|
    HTTMultiParty.flatten_params(params).map do |(k,v)|
      if file_present_in_params?(params)
        [k, v.respond_to?(:read) ? HTTMultiParty.file_to_upload_io(v, detect_mime_type) : v]
      else
        "#{k}=#{v}"
      end
    end
  end
end