Class: Strawpoll::API

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

Defined Under Namespace

Classes: Error

Constant Summary collapse

API_URI =
URI("http://strawpoll.me/")

Class Method Summary collapse

Class Method Details

.create(params) ⇒ Object



14
15
16
# File 'lib/strawpoll/api.rb', line 14

def create(params)
  perform("/api/v2/polls", :post, params).parsed_body.symbolize_keys
end

.get(id) ⇒ Object



10
11
12
# File 'lib/strawpoll/api.rb', line 10

def get(id)
  perform("/api/v2/polls/#{id}", :get).parsed_body.symbolize_keys
end

.httpObject



6
7
8
# File 'lib/strawpoll/api.rb', line 6

def http
  @http ||= Net::HTTP.new(API_URI.host, API_URI.port)
end

.patch(id, params) ⇒ Object



18
19
20
# File 'lib/strawpoll/api.rb', line 18

def patch(id, params)
  perform("/api/v2/polls/#{id}", :patch, params).parsed_body.symbolize_keys
end

.perform(uri, method, params = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/strawpoll/api.rb', line 22

def perform(uri, method, params = {})
  request = case method
    when :get
      Net::HTTP::Get.new(uri)
    when :post
      Net::HTTP::Post.new(uri).tap do |request|
        request.set_form_data(params)
      end
    when :patch
      Net::HTTP::Patch.new(uri).tap do |request|
        request.body = params.to_json
        request.content_type = 'application/json'
      end
  end

  http.request(request).tap do |response|
    raise Strawpoll::API::Error.new(response.body) unless response.kind_of? Net::HTTPSuccess

    response.parsed_body = JSON.parse(response.body) rescue {}
  end
end