class Pushpad::Sender

Constants

ATTRIBUTES

Public Class Methods

create(attributes) click to toggle source
# File lib/pushpad/sender.rb, line 27
def self.create(attributes)      
  endpoint = "https://pushpad.xyz/api/v1/senders"
  response = Request.post(endpoint, attributes.to_json)
  
  unless response.code == "201"
    raise CreateError, "Response #{response.code} #{response.message}: #{response.body}"
  end
  
  new(JSON.parse(response.body, symbolize_names: true))
end
find(id) click to toggle source
# File lib/pushpad/sender.rb, line 38
def self.find(id)  
  response = Request.get("https://pushpad.xyz/api/v1/senders/#{id}")
  
  unless response.code == "200"
    raise FindError, "Response #{response.code} #{response.message}: #{response.body}"
  end
  
  new(JSON.parse(response.body, symbolize_names: true))
end
find_all() click to toggle source
# File lib/pushpad/sender.rb, line 48
def self.find_all
  response = Request.get("https://pushpad.xyz/api/v1/senders")
  
  unless response.code == "200"
    raise FindError, "Response #{response.code} #{response.message}: #{response.body}"
  end
  
  JSON.parse(response.body, symbolize_names: true).map do |attributes|
    new(attributes)
  end
end
new(options) click to toggle source
# File lib/pushpad/sender.rb, line 19
def initialize(options)
  @id = options[:id]
  @name = options[:name]
  @vapid_private_key = options[:vapid_private_key]
  @vapid_public_key = options[:vapid_public_key]
  @created_at = options[:created_at] && Time.parse(options[:created_at])
end

Public Instance Methods

delete() click to toggle source
# File lib/pushpad/sender.rb, line 79
def delete      
  raise "You must set id" unless id
  
  response = Request.delete("https://pushpad.xyz/api/v1/senders/#{id}")
  
  unless response.code == "204"
    raise DeleteError, "Response #{response.code} #{response.message}: #{response.body}"
  end
end
update(attributes) click to toggle source
# File lib/pushpad/sender.rb, line 60
def update(attributes)      
  raise "You must set id" unless id
  
  endpoint = "https://pushpad.xyz/api/v1/senders/#{id}"
  response = Request.patch(endpoint, attributes.to_json)
  
  unless response.code == "200"
    raise UpdateError, "Response #{response.code} #{response.message}: #{response.body}"
  end
  
  updated = self.class.new(JSON.parse(response.body, symbolize_names: true))
  
  ATTRIBUTES.each do |attr|
    self.instance_variable_set("@#{attr}", updated.instance_variable_get("@#{attr}"))
  end
  
  self
end