class Pushpad::Project

Constants

ATTRIBUTES

Public Class Methods

create(attributes) click to toggle source
# File lib/pushpad/project.rb, line 32
def self.create(attributes)      
  endpoint = "https://pushpad.xyz/api/v1/projects"
  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/project.rb, line 43
def self.find(id)  
  response = Request.get("https://pushpad.xyz/api/v1/projects/#{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/project.rb, line 53
def self.find_all
  response = Request.get("https://pushpad.xyz/api/v1/projects")
  
  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/project.rb, line 19
def initialize(options)
  @id = options[:id]
  @sender_id = options[:sender_id]
  @name = options[:name]
  @website = options[:website]
  @icon_url = options[:icon_url]
  @badge_url = options[:badge_url]
  @notifications_ttl = options[:notifications_ttl]
  @notifications_require_interaction = options[:notifications_require_interaction] 
  @notifications_silent = options[:notifications_silent]
  @created_at = options[:created_at] && Time.parse(options[:created_at])
end

Public Instance Methods

delete() click to toggle source
# File lib/pushpad/project.rb, line 84
def delete      
  raise "You must set id" unless id
  
  response = Request.delete("https://pushpad.xyz/api/v1/projects/#{id}")
  
  unless response.code == "202"
    raise DeleteError, "Response #{response.code} #{response.message}: #{response.body}"
  end
end
update(attributes) click to toggle source
# File lib/pushpad/project.rb, line 65
def update(attributes)      
  raise "You must set id" unless id
  
  endpoint = "https://pushpad.xyz/api/v1/projects/#{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