48 lines
1.3 KiB
Ruby
48 lines
1.3 KiB
Ruby
class Person
|
|
attr_accessor :diaspora_id, :url, :guid, :serialized_public_key, :serialized_private_key
|
|
|
|
def initialize
|
|
@guid = UUID.generate(:compact)
|
|
end
|
|
|
|
def private_key; OpenSSL::PKey::RSA.new(serialized_private_key) end
|
|
def public_key; OpenSSL::PKey::RSA.new(serialized_public_key) end
|
|
|
|
def alias_url; "#{url}people/#{guid}" end
|
|
def hcard_url; "#{url}hcard/users/#{guid}" end
|
|
def profile_url; "#{url}u/#{nickname}" end
|
|
def atom_url; "#{url}public/#{nickname}.atom" end
|
|
def salmon_url; "#{url}receive/users/#{guid}" end
|
|
def subscribe_url; "#{url}people?q={uri}" end
|
|
|
|
def nickname; diaspora_id.split("@")[0] end
|
|
|
|
def photo_default_url; "#{url}assets/user/default.png" end
|
|
|
|
def searchable; true end
|
|
def full_name; "Dummy User" end
|
|
def first_name; "Dummy" end
|
|
def last_name; "User" end
|
|
|
|
def save!
|
|
Person.database[:diaspora_id][diaspora_id] = self
|
|
Person.database[:guid][guid] = self
|
|
end
|
|
|
|
class << self
|
|
attr_writer :init_database
|
|
|
|
def find_by(opts)
|
|
return database[:diaspora_id][opts[:diaspora_id]] if opts[:diaspora_id]
|
|
database[:guid][opts[:guid]]
|
|
end
|
|
|
|
def database
|
|
@database ||= @init_database || {diaspora_id: {}, guid: {}}
|
|
end
|
|
|
|
def reset_database
|
|
@database = nil
|
|
end
|
|
end
|
|
end
|