Class: MonkeyBusiness::HttpRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/api/request.rb

Overview

Abstraction of an HTTP request sent to the surveymonkey API

Class Method Summary collapse

Class Method Details

.deleteObject



68
69
70
71
72
73
74
75
# File 'lib/api/request.rb', line 68

def self.delete
  request = Net::HTTP::Delete.new(@uri.request_uri)

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request)
end

.getObject



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/api/request.rb', line 26

def self.get
  params = @options.map { |k, v| "#{k}=#{URI.encode(v)}" }.join('&')

  request = Net::HTTP::Get.new("#{@uri.request_uri}?#{params}")
  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  response = @http.request(request)

  JSON.parse(response.body)
end

.headObject



77
78
79
80
81
82
83
# File 'lib/api/request.rb', line 77

def self.head
  request = Net::HTTP::Head.new(@uri.request_uri)
  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request).to_hash
end

.optionsObject



85
86
87
88
89
90
91
92
93
94
# File 'lib/api/request.rb', line 85

def self.options
  request = Net::HTTP::Options.new(@uri.request_uri)

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  response = @http.request(request)

  response['Allow'].split(',').map { |x| x.downcase.to_sym }
end

.patchObject



58
59
60
61
62
63
64
65
66
# File 'lib/api/request.rb', line 58

def self.patch
  request = Net::HTTP::Patch.new(@uri.request_uri)
  request.body = @options.to_json

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request)
end

.postObject



38
39
40
41
42
43
44
45
46
# File 'lib/api/request.rb', line 38

def self.post
  request = Net::HTTP::Post.new(@uri.request_uri)
  request.body = @options.to_json

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request)
end

.putObject



48
49
50
51
52
53
54
55
56
# File 'lib/api/request.rb', line 48

def self.put
  request = Net::HTTP::Put.new(@uri.request_uri)
  request.body = @options.to_json

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request)
end

.request(access_token, uri, options = {}) ⇒ Object

Raises:



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/api/request.rb', line 11

def self.request(access_token, uri, options = {})
  @access_token = access_token
  @uri = URI(uri)

  @http_method = options[:method] ? options.delete(:method).to_sym : :get
  @options = options

  raise HttpMethodError, @http_method unless respond_to?(@http_method)

  @http = Net::HTTP.new(@uri.host, @uri.port)
  @http.use_ssl = true

  send(@http_method)
end