Class: Algorithmia::Requester

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/algorithmia/requester.rb

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Requester

Returns a new instance of Requester.



7
8
9
10
11
12
13
14
15
16
# File 'lib/algorithmia/requester.rb', line 7

def initialize(client)
  self.class.base_uri client.api_address
  @client = client
  @default_headers = {
    'User-Agent' => 'Algorithmia Ruby Client'
  }
  unless @client.api_key.nil?
    @default_headers['Authorization'] = @client.api_key
  end
end

Instance Method Details

#delete(endpoint, query: {}) ⇒ Object



70
71
72
73
74
# File 'lib/algorithmia/requester.rb', line 70

def delete(endpoint, query: {})
  response = self.class.delete(endpoint, query: query, headers: @default_headers)
  check_for_errors(response)
  response
end

#get(endpoint, query: {}, headers: {}) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/algorithmia/requester.rb', line 18

def get(endpoint, query: {}, headers: {})
  headers = merge_headers(headers)
  headers.delete('Content-Type')   # No content, can break request parsing
  response = self.class.get(endpoint, query: query, headers: headers)
  check_for_errors(response)
  response
end

#head(endpoint) ⇒ Object



62
63
64
65
66
67
68
# File 'lib/algorithmia/requester.rb', line 62

def head(endpoint)
  headers = merge_headers({})
  headers.delete('Content-Type')   # No content, can break request parsing
  response = self.class.head(endpoint, headers: headers)
  check_for_errors(response)
  response
end

#post(endpoint, body, query: {}, headers: {}, timeout: 60) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/algorithmia/requester.rb', line 26

def post(endpoint, body, query: {}, headers: {}, timeout: 60)
  headers = merge_headers(headers)

  headers['Content-Type'] ||= case
    when body.kind_of?(String) && body.encoding == Encoding::ASCII_8BIT
      'application/octet-stream'
    when body.kind_of?(String)
      'text/plain'
    else
      body = body.to_json
      'application/json'
  end

  response = self.class.post(endpoint, body: body, query: query, headers: headers, timeout: timeout)
  check_for_errors(response)
  response
end

#put(endpoint, body, query: {}, headers: {}) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/algorithmia/requester.rb', line 44

def put(endpoint, body, query: {}, headers: {})
  headers = merge_headers(headers)

  headers['Content-Type'] ||= case
    when body.kind_of?(String) && body.encoding == Encoding::ASCII_8BIT
      'application/octet-stream'
    when body.kind_of?(String)
      'text/plain'
    else
      body = body.to_json
      'application/json'
  end

  response = self.class.put(endpoint, body: body, query: query, headers: headers)
  check_for_errors(response)
  response
end