Class: FaspClient::Provider
Constant Summary
ApplicationRecord::CATEGORIES
Instance Method Summary
collapse
Instance Method Details
#account_search(query, limit: 20) ⇒ Object
68
69
70
|
# File 'app/models/fasp_client/provider.rb', line 68
def account_search(query, limit: 20)
AccountSearchService.new(provider: self).search(query: query, limit: limit)
end
|
#capability_ids ⇒ Object
46
47
48
|
# File 'app/models/fasp_client/provider.rb', line 46
def capability_ids
capabilities.map { |it| it["id"] }.uniq.map(&:to_sym)
end
|
#capability_versions(capability) ⇒ Object
42
43
44
|
# File 'app/models/fasp_client/provider.rb', line 42
def capability_versions(capability)
capabilities.filter_map { |it| it["version"] if it["id"] == capability.to_s }
end
|
#disable(capability, version) ⇒ Object
59
60
61
62
|
# File 'app/models/fasp_client/provider.rb', line 59
def disable(capability, version)
return unless has_capability?(capability, version)
CapabilityActivationService.new(provider: self, capability: capability, version: version).disable!
end
|
#enable(capability, version) ⇒ Object
54
55
56
57
|
# File 'app/models/fasp_client/provider.rb', line 54
def enable(capability, version)
return unless has_capability?(capability, version)
CapabilityActivationService.new(provider: self, capability: capability, version: version).enable!
end
|
#fasp_linzer_key ⇒ Object
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'app/models/fasp_client/provider.rb', line 96
def fasp_linzer_key
asn1 = OpenSSL::ASN1.Sequence(
[
OpenSSL::ASN1.Sequence(
[
OpenSSL::ASN1.ObjectId("ED25519")
]
),
OpenSSL::ASN1.BitString(verify_key.to_bytes)
]
)
pem = " -----BEGIN PUBLIC KEY-----\n \#{Base64.strict_encode64(asn1.to_der)}\n -----END PUBLIC KEY-----\n PEM\n Linzer.new_ed25519_key(pem, uuid)\nend\n"
|
#fetch_provider_info ⇒ Object
50
51
52
|
# File 'app/models/fasp_client/provider.rb', line 50
def fetch_provider_info
assign_attributes(ProviderInfoService.new(provider: self).to_provider_attributes) if approved?
end
|
#fingerprint ⇒ Object
34
35
36
|
# File 'app/models/fasp_client/provider.rb', line 34
def fingerprint
Digest::SHA256.base64digest(verify_key)
end
|
#follow_recommendation(account_uri) ⇒ Object
64
65
66
|
# File 'app/models/fasp_client/provider.rb', line 64
def follow_recommendation(account_uri)
FollowRecommendationService.new(provider: self).for(account_uri: account_uri)
end
|
#has_capability?(capability, version = nil) ⇒ Boolean
38
39
40
|
# File 'app/models/fasp_client/provider.rb', line 38
def has_capability?(capability, version = nil)
version ? capability_versions(capability).include?(version) : capability_versions(capability).any?
end
|
#local_linzer_key ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'app/models/fasp_client/provider.rb', line 76
def local_linzer_key
asn1 = OpenSSL::ASN1.Sequence(
[
OpenSSL::ASN1::Integer(OpenSSL::BN.new(0)),
OpenSSL::ASN1.Sequence(
[
OpenSSL::ASN1.ObjectId("ED25519")
]
),
OpenSSL::ASN1.OctetString(OpenSSL::ASN1.OctetString(ed25519_signing_key.to_bytes).to_der)
]
)
pem = " -----BEGIN PRIVATE KEY-----\n \#{Base64.strict_encode64(asn1.to_der)}\n -----END PRIVATE KEY-----\n PEM\n Linzer.new_ed25519_key(pem, server_id)\nend\n"
|
#valid_request?(request) ⇒ Boolean
72
73
74
|
# File 'app/models/fasp_client/provider.rb', line 72
def valid_request?(request)
HttpRequestService.new(provider: self).verified?(request)
end
|
#verify_key ⇒ Object
30
31
32
|
# File 'app/models/fasp_client/provider.rb', line 30
def verify_key
Ed25519::VerifyKey.new(Base64.strict_decode64(public_key))
end
|