class Boolio

Constants

URL
VERSION

Attributes

id[R]
val[RW]

Public Class Methods

fetch(id) click to toggle source
# File lib/boolio.rb, line 32
def self.fetch(id)
  response = HTTP.get(URL + id)
  boolean  = JSON.parse response.body
  Boolio.new(id: boolean["id"], val: boolean["val"])
end
new(opts = {}) click to toggle source
# File lib/boolio.rb, line 11
def initialize(opts = {})
  @val = process_init_value(opts[:val])
  @id  = opts[:id] || post(@val)["id"]
end

Public Instance Methods

destroy!() click to toggle source
# File lib/boolio.rb, line 20
def destroy!
  return if frozen?
  response = delete
  if response.code == 200
    @id  = nil
    @val = nil
    freeze
  else
    raise "Could not destroy boolean: #{response.status}"
  end
end
to_s() click to toggle source
# File lib/boolio.rb, line 38
def to_s
  val
end
update(value = val) click to toggle source
# File lib/boolio.rb, line 16
def update(value = val)
  put(value)
end

Private Instance Methods

delete() click to toggle source
# File lib/boolio.rb, line 60
def delete
  HTTP.delete(URL + id)
end
post(value) click to toggle source
# File lib/boolio.rb, line 55
def post(value)
  response = HTTP.post(URL, form: { val: value })
  JSON.parse response.body
end
process_init_value(value) click to toggle source
# File lib/boolio.rb, line 44
def process_init_value(value)
  return [true, false].sample if value.nil?
  raise ArgumentError, "Provide a boolean." unless [TrueClass, FalseClass, String].include?(value.class)
  value.to_s == "true"
end
put(value) click to toggle source
# File lib/boolio.rb, line 50
def put(value)
  response = HTTP.put((URL + id), form: { val: value })
  JSON.parse response.body
end