Class: App

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/sacrifice/app.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Utils

#bad_request_message, #handle_bad_request

Constructor Details

#initialize(attrs) ⇒ App

Returns a new instance of App.



10
11
12
13
# 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

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



8
9
10
# File 'lib/sacrifice/app.rb', line 8

def id
  @id
end

#nameObject (readonly)

Returns the value of attribute name.



8
9
10
# File 'lib/sacrifice/app.rb', line 8

def name
  @name
end

#secretObject (readonly)

Returns the value of attribute secret.



8
9
10
# File 'lib/sacrifice/app.rb', line 8

def secret
  @secret
end

Class Method Details

.allObject

query methods



57
58
59
60
61
62
63
# File 'lib/sacrifice/app.rb', line 57

def self.all
  if DB[:apps]
    DB[:apps].map { |attrs| new(attrs) }
  else
    []
  end
end

.create!(attrs) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Object



65
66
67
# File 'lib/sacrifice/app.rb', line 65

def self.find_by_name(name)
  all.find { |a| a.name == name }
end

Instance Method Details

#access_tokenObject



69
70
71
# File 'lib/sacrifice/app.rb', line 69

def access_token
  @access_token ||= AccessToken.get(id, secret)
end

#attrsObject



15
16
17
# File 'lib/sacrifice/app.rb', line 15

def attrs
  {name: name, id: id, secret: secret}
end

#create_user(options = {}) ⇒ Object



42
43
44
45
46
47
# 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) ⇒ Object



73
74
75
76
77
# 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) ⇒ Object



49
50
51
52
53
54
# 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

#usersObject



32
33
34
35
36
37
38
39
40
# 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