Class: Translatomatic::HTTPRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/translatomatic/http_request.rb

Defined Under Namespace

Classes: FileParam, Param

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url) ⇒ HTTPRequest

Returns a new instance of HTTPRequest.



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

def initialize(url)
  @uri = url.respond_to?(:host) ? url : URI.parse(url)
  @multipart_boundary = SecureRandom.hex(16)
end

Instance Attribute Details

#multipart_boundaryObject

Returns the value of attribute multipart_boundary.



7
8
9
# File 'lib/translatomatic/http_request.rb', line 7

def multipart_boundary
  @multipart_boundary
end

Instance Method Details

#file(*args) ⇒ Object



52
53
54
# File 'lib/translatomatic/http_request.rb', line 52

def file(*args)
  FileParam.new(*args)
end

#get(query = nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/translatomatic/http_request.rb', line 23

def get(query = nil)
  uri = @uri
  if query
    uri = @uri.dup
    uri.query = URI.encode_www_form(query)
  end
  request = Net::HTTP::Get.new(uri)
  request['User-Agent'] = USER_AGENT
  send_request(request)
end

#param(*args) ⇒ Object



56
57
58
# File 'lib/translatomatic/http_request.rb', line 56

def param(*args)
  Param.new(*args)
end

#post(body, options = {}) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/translatomatic/http_request.rb', line 34

def post(body, options = {})
  request = Net::HTTP::Post.new(@uri)
  request['User-Agent'] = USER_AGENT
  content_type = options[:content_type]

  if options[:multipart]
    content_type = "multipart/form-data; boundary=#{@multipart_boundary}"
    request.body = multipartify(body)
  elsif body.kind_of?(Hash)
    request.set_form_data(body)
  else
    request.body = body
  end
  request.content_type = content_type if content_type

  send_request(request)
end

#start(options = {}) ⇒ Object



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

def start(options = {})
  options = options.merge(use_ssl: @uri.scheme == "https")
  Net::HTTP.start(@uri.host, @uri.port, options) do |http|
    @http = http
    yield http
  end
  @http = nil
end