Class: DoorMat::Email

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
AttrSymmetricStore
Defined in:
app/models/door_mat/email.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from AttrSymmetricStore

included

Class Method Details

.address_hash(address) ⇒ Object



16
17
18
# File 'app/models/door_mat/email.rb', line 16

def self.address_hash(address)
  DoorMat::Crypto::FastHash.sha256(address.to_str)
end

.address_hash_from_encoded_address(encoded_address) ⇒ Object



26
27
28
# File 'app/models/door_mat/email.rb', line 26

def self.address_hash_from_encoded_address(encoded_address)
  self.address_hash(self.decode_urlsafe(encoded_address))
end

.confirmed_matching(address) ⇒ Object



35
36
37
38
# File 'app/models/door_mat/email.rb', line 35

def self.confirmed_matching(address)
  address_hash = self.address_hash(address.to_str)
  self.where(address_hash: address_hash).where('status = :confirmed or status = :primary', self.statuses)
end

.count_matching(address) ⇒ Object



40
41
42
43
# File 'app/models/door_mat/email.rb', line 40

def self.count_matching(address)
  address_hash = self.address_hash(address.to_str)
  self.where(address_hash: address_hash).count
end

.decode_urlsafe(encoded_address) ⇒ Object



20
21
22
23
24
# File 'app/models/door_mat/email.rb', line 20

def self.decode_urlsafe(encoded_address)
  Base64.urlsafe_decode64(encoded_address.to_str)
rescue ArgumentError
  return encoded_address.to_str
end

.for(address) ⇒ Object



45
46
47
48
49
50
51
# File 'app/models/door_mat/email.rb', line 45

def self.for(address)
  e = self.new
  e.address_hash = self.address_hash(address.to_str)
  e.address = address.to_str
  e.status = :not_confirmed
  e
end

.matching(address) ⇒ Object



30
31
32
33
# File 'app/models/door_mat/email.rb', line 30

def self.matching(address)
  address_hash = self.address_hash(address.to_str)
  self.where(address_hash: address_hash)
end

Instance Method Details

#to_urlsafe_encodedObject



53
54
55
# File 'app/models/door_mat/email.rb', line 53

def to_urlsafe_encoded
  Base64.urlsafe_encode64(self.address)
end