class Strawpoll::Poll
Attributes
id[RW]
multi[RW]
options[RW]
permissive[RW]
title[RW]
votes[RW]
Public Class Methods
create(options = {})
click to toggle source
# File lib/strawpoll/poll.rb, line 75 def create(options = {}) self.new(options).create end
get(id)
click to toggle source
# File lib/strawpoll/poll.rb, line 67 def get(id) raise ArgumentError.new('You must specify id') unless id response = API.get(id) self.new(response.merge(id: id)) end
new(options = {})
click to toggle source
# File lib/strawpoll/poll.rb, line 5 def initialize(options = {}) options.symbolize_keys! options = { multi: false, permissive: false, votes: [], }.merge(options) [:id, :title, :options, :votes, :multi, :permissive].each do |attribute| self.send("#{attribute}=", options[attribute]) end self end
Public Instance Methods
create()
click to toggle source
# File lib/strawpoll/poll.rb, line 21 def create [:title, :options].each do |attribute| raise ArgumentError.new('Attributes title and options are required') unless self.send(attribute) end response = API.create(title: title, options: options, multi: multi, permissive: permissive) self.id = response[:id] self end
reload()
click to toggle source
# File lib/strawpoll/poll.rb, line 33 def reload raise ArgumentError.new('You must specify id') unless id API.get(id).tap do |response| self.title = response[:title] self.multi = response[:multi] self.permissive = response[:permissive] self.options = response[:options] self.votes = response[:votes] end self end
vote(option)
click to toggle source
# File lib/strawpoll/poll.rb, line 57 def vote(option) option = option.to_s raise ArgumentError.new('Wrong option') unless options.include?(option) API.patch(id, { votes: [options.index(option)] }) reload end
votes_count(option = nil)
click to toggle source
# File lib/strawpoll/poll.rb, line 47 def votes_count(option = nil) result = options.inject({}) do |result, option| result[option] = votes[options.index(option)] || 0 result end option.nil? ? result : result[option] end