class App
Attributes
id[R]
name[R]
secret[R]
Public Class Methods
all()
click to toggle source
query methods
# File lib/sacrifice/app.rb, line 57 def self.all if DB[:apps] DB[:apps].map { |attrs| new(attrs) } else [] end end
create!(attrs)
click to toggle source
# File lib/sacrifice/app.rb, line 19 def self.create!(attrs) new_app = new(attrs) if all.find { |app| app.name == new_app.name } raise ArgumentError, "App names must be unique, and there is already an app named \"#{new_app.name}\"." end DB.update do |data| data[:apps] ||= [] data[:apps] << new_app.attrs end end
find_by_name(name)
click to toggle source
# File lib/sacrifice/app.rb, line 65 def self.find_by_name(name) all.find { |a| a.name == name } end
new(attrs)
click to toggle source
# File lib/sacrifice/app.rb, line 10 def initialize(attrs) @name, @id, @secret = attrs[:name].to_s, attrs[:id].to_s, attrs[:secret].to_s validate! end
Private Class Methods
find!(name)
click to toggle source
# File lib/sacrifice/app.rb, line 103 def self.find!(name) app = App.find_by_name(name) unless app raise Thor::Error, "Unknown app #{name}. Run 'sacrifice apps' to see known apps." end app end
Public Instance Methods
access_token()
click to toggle source
# File lib/sacrifice/app.rb, line 69 def access_token @access_token ||= AccessToken.get(id, secret) end
attrs()
click to toggle source
# File lib/sacrifice/app.rb, line 15 def attrs {name: name, id: id, secret: secret} end
create_user(options = {})
click to toggle source
# File lib/sacrifice/app.rb, line 42 def create_user(options = {}) handle_bad_request do user_data = RestClient.post(users_url, {access_token: access_token}.merge(options)) User.new(JSON.parse(user_data)) end end
find_user(user_id)
click to toggle source
# File lib/sacrifice/app.rb, line 73 def find_user(user_id) users.find { |user| user.id.to_s == user_id.to_s } end
rm_user(uid)
click to toggle source
# File lib/sacrifice/app.rb, line 49 def rm_user(uid) handle_bad_request do url = rm_user_url(uid, access_token) RestClient.delete(url) end end
users()
click to toggle source
# File lib/sacrifice/app.rb, line 32 def users handle_bad_request do users_data = RestClient.get(users_url, params: {access_token: access_token}) JSON.parse(users_data)["data"].map do |user_data| User.new(user_data) end end end
Private Instance Methods
rm_user_url(uid, token)
click to toggle source
# File lib/sacrifice/app.rb, line 85 def rm_user_url(uid, token) "#{users_url}?uid=#{uid}&access_token=#{URI.escape(token)}" end
users_url()
click to toggle source
# File lib/sacrifice/app.rb, line 81 def users_url "#{GRAPH_API_BASE}/#{id}/accounts/test-users" end
validate!()
click to toggle source
# File lib/sacrifice/app.rb, line 89 def validate! unless name && name =~ /\S/ raise ArgumentError, "App name must not be empty" end unless id && id =~ /^[0-9a-f]+$/i raise ArgumentError, "App id must be a nonempty hex string, but was #{id.inspect}" end unless secret && secret =~ /^[0-9a-f]+$/i raise ArgumentError, "App secret must be a nonempty hex string, but was #{secret.inspect}" end end