Class: Strawpoll::API
- Inherits:
-
Object
- Object
- Strawpoll::API
- Defined in:
- lib/strawpoll/api.rb
Defined Under Namespace
Classes: Error
Constant Summary collapse
- API_URI =
URI("http://strawpoll.me/")
Class Method Summary collapse
- .create(params) ⇒ Object
- .get(id) ⇒ Object
- .http ⇒ Object
- .patch(id, params) ⇒ Object
- .perform(uri, method, params = {}) ⇒ Object
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 |
.http ⇒ Object
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 |