Class: PollEverywhere::Models::Poll

Inherits:
Object
  • Object
show all
Includes:
Serializable
Defined in:
lib/polleverywhere/models.rb

Overview

Poll is an abstract base class for multiple choice and free text polls

Direct Known Subclasses

FreeTextPoll, MultipleChoicePoll

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Serializable

included

Constructor Details

#initialize(http = PollEverywhere.http) ⇒ Poll

Returns a new instance of Poll.



109
110
111
# File 'lib/polleverywhere/models.rb', line 109

def initialize(http=PollEverywhere.http)
  self.http = http
end

Instance Attribute Details

#httpObject

Returns the value of attribute http.



107
108
109
# File 'lib/polleverywhere/models.rb', line 107

def http
  @http
end

Class Method Details

.allObject



145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/polleverywhere/models.rb', line 145

def self.all
  PollEverywhere.http.get.from("/my/polls").as(:json).response do |response|
    ::JSON.parse(response.body).map do |hash|
      case hash.keys.first.to_sym
      when MCP.root_key
        MCP.from_hash(hash)
      when FTP.root_key
        MCP.from_hash(hash)
      end
    end
  end
end

.get(permalink) ⇒ Object



141
142
143
# File 'lib/polleverywhere/models.rb', line 141

def self.get(permalink)
  from_hash(:permalink => permalink).fetch
end

Instance Method Details

#archiveObject



158
159
160
161
162
163
164
165
166
167
168
# File 'lib/polleverywhere/models.rb', line 158

def archive
  if persisted?
    http.delete.to(path + "/results/archive").response do |response|
      return true
    end

    return false
  else
    false
  end
end

#clearObject



170
171
172
173
174
175
176
177
178
179
180
# File 'lib/polleverywhere/models.rb', line 170

def clear
  if persisted?
    http.delete.to(path + "/results").response do |response|
      return true
    end

    return false
  else
    false
  end
end

#destroyObject



182
183
184
185
186
# File 'lib/polleverywhere/models.rb', line 182

def destroy
  http.delete(path).response do |response|
    self.id = self.permalink = nil
  end
end

#pathObject



188
189
190
# File 'lib/polleverywhere/models.rb', line 188

def path
  "/#{self.class.root_key}s/#{permalink}" if persisted?
end

#persisted?Boolean

Returns:

  • (Boolean)


125
126
127
# File 'lib/polleverywhere/models.rb', line 125

def persisted?
  !!permalink
end

#possible_statesObject



192
193
194
# File 'lib/polleverywhere/models.rb', line 192

def possible_states
  [:opened, :closed, :maxed_out]
end

#saveObject



129
130
131
132
133
134
135
136
137
138
139
# File 'lib/polleverywhere/models.rb', line 129

def save
  if persisted?
    http.put(to_json).as(:json).to(path).response do |response|
      from_json response.body
    end
  else
    http.post(to_json).as(:json).to("/#{self.class.root_key}s").response do |response|
      from_json response.body
    end
  end
end

#startObject

Start the poll so that it may receive audience responses



114
115
116
117
# File 'lib/polleverywhere/models.rb', line 114

def start
  self.state = "opened"
  save
end

#stopObject

Stop the poll so that it stops receieving responses



120
121
122
123
# File 'lib/polleverywhere/models.rb', line 120

def stop
  self.state = "closed"
  save
end