diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-02-22 16:00:20 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-02-22 16:00:20 +0100 |
commit | 709c6685a90bb819696566cc9e42e587546d72dc (patch) | |
tree | 272783009e0a0c8b13b8003dc4bc4e58f3b0b84b /app/models/account.rb | |
parent | 9c4856bdb11fc9311ab30a97224cee3dfaec492f (diff) |
Made some progress
Diffstat (limited to 'app/models/account.rb')
-rw-r--r-- | app/models/account.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/app/models/account.rb b/app/models/account.rb index c0b153794..90e8d7610 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -1,6 +1,38 @@ class Account < ActiveRecord::Base + # Local users + has_one :user, inverse_of: :account + + # Timelines + has_many :stream_entries, inverse_of: :account has_many :statuses, inverse_of: :account + # Follow relations + has_many :active_relationships, class_name: 'Follow', foreign_key: 'account_id', dependent: :destroy + has_many :passive_relationships, class_name: 'Follow', foreign_key: 'target_account_id', dependent: :destroy + + has_many :following, through: :active_relationships, source: :target_account + has_many :followers, through: :passive_relationships, source: :account + + def follow!(other_account) + self.active_relationships.create!(target_account: other_account) + end + + def unfollow!(other_account) + self.active_relationships.find_by(target_account: other_account).destroy + end + + def following?(other_account) + following.include?(other_account) + end + + def local? + self.domain.nil? + end + + def keypair + self.private_key.nil? ? OpenSSL::PKey::RSA.new(self.public_key) : OpenSSL::PKey::RSA.new(self.private_key) + end + def subscription(webhook_url) @subscription ||= OStatus2::Subscription.new(self.remote_url, secret: self.secret, token: self.verify_token, webhook: webhook_url, hub: self.hub_url) end |