Class: DoorMat::Email
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- DoorMat::Email
- Includes:
- AttrSymmetricStore
- Defined in:
- app/models/door_mat/email.rb
Class Method Summary collapse
- .address_hash(address) ⇒ Object
- .address_hash_from_encoded_address(encoded_address) ⇒ Object
- .confirmed_matching(address) ⇒ Object
- .count_matching(address) ⇒ Object
- .decode_urlsafe(encoded_address) ⇒ Object
- .for(address) ⇒ Object
- .matching(address) ⇒ Object
Instance Method Summary collapse
Methods included from AttrSymmetricStore
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_encoded ⇒ Object
53 54 55 |
# File 'app/models/door_mat/email.rb', line 53 def to_urlsafe_encoded Base64.urlsafe_encode64(self.address) end |