summaryrefslogtreecommitdiff
path: root/app/models/identity.rb
diff options
context:
space:
mode:
authorAzul <azul@riseup.net>2018-01-31 12:27:55 +0100
committerAzul <azul@riseup.net>2018-01-31 13:32:50 +0100
commita55cc3653de22d868ade5303918280a38e8e9fe8 (patch)
treea2c697fa5e5787f4f8905c74554c737cfd76445e /app/models/identity.rb
parent0a83272f33b0731ea61e47aec9019a3afeb3e975 (diff)
keys: store type and rev in hash rather than serialized
Since the old keys used to be strings i started out by json serializing the new keys with type, value, rev. However storing serialized json in couch (json) does not really make sense. So now we do not serialize but instead have one json document. The lookup for a key of type pgp may still return a string but for everything that uses the new api it will return a hash with type and revision. This data structure is way easier to handle also on the nickserver side.
Diffstat (limited to 'app/models/identity.rb')
-rw-r--r--app/models/identity.rb7
1 files changed, 4 insertions, 3 deletions
diff --git a/app/models/identity.rb b/app/models/identity.rb
index b8c2245..13ce124 100644
--- a/app/models/identity.rb
+++ b/app/models/identity.rb
@@ -131,9 +131,10 @@ class Identity < CouchRest::Model::Base
read_attribute('keys') || HashWithIndifferentAccess.new
end
- def set_key(type, key)
- return if keys[type] == key.to_s
- write_attribute('keys', keys.merge(type => key.to_s))
+ def set_key(type, key_hash)
+ key_hash.stringify_keys! if key_hash.respond_to? :stringify_keys!
+ return if keys[type] == key_hash
+ write_attribute('keys', keys.merge(type => key_hash))
end
def delete_key(type)