53 lines
928 B
Ruby
53 lines
928 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class ActivityPub::DeviceSerializer < ActivityPub::Serializer
|
||
|
context_extensions :olm
|
||
|
|
||
|
include RoutingHelper
|
||
|
|
||
|
class FingerprintKeySerializer < ActivityPub::Serializer
|
||
|
attributes :type, :public_key_base64
|
||
|
|
||
|
def type
|
||
|
'Ed25519Key'
|
||
|
end
|
||
|
|
||
|
def public_key_base64
|
||
|
object.fingerprint_key
|
||
|
end
|
||
|
end
|
||
|
|
||
|
class IdentityKeySerializer < ActivityPub::Serializer
|
||
|
attributes :type, :public_key_base64
|
||
|
|
||
|
def type
|
||
|
'Curve25519Key'
|
||
|
end
|
||
|
|
||
|
def public_key_base64
|
||
|
object.identity_key
|
||
|
end
|
||
|
end
|
||
|
|
||
|
attributes :device_id, :type, :name, :claim
|
||
|
|
||
|
has_one :fingerprint_key, serializer: FingerprintKeySerializer
|
||
|
has_one :identity_key, serializer: IdentityKeySerializer
|
||
|
|
||
|
def type
|
||
|
'Device'
|
||
|
end
|
||
|
|
||
|
def claim
|
||
|
account_claim_url(object.account, id: object.device_id)
|
||
|
end
|
||
|
|
||
|
def fingerprint_key
|
||
|
object
|
||
|
end
|
||
|
|
||
|
def identity_key
|
||
|
object
|
||
|
end
|
||
|
end
|