class Virgil::SDK::Client::Requests::SignableRequest
Base class for all cards API requests.
Attributes
relations[R]
signatures[R]
snapshot[R]
validation_token[R]
Public Class Methods
new()
click to toggle source
Constructs new SignableRequest
object
# File lib/virgil/sdk/client/requests/signable_request.rb, line 48 def initialize @signatures = {} end
Public Instance Methods
export()
click to toggle source
Exports request snapshot.
Returns:
base64-encoded json representation of the request model.
# File lib/virgil/sdk/client/requests/signable_request.rb, line 107 def export json_string = self.request_model.to_json Base64.strict_encode64(json_string) end
request_model()
click to toggle source
Request model used for json representation.
# File lib/virgil/sdk/client/requests/signable_request.rb, line 124 def request_model model = { 'content_snapshot': Base64.strict_encode64(snapshot.to_s), 'meta': { 'signs': signatures } } if validation_token model[:meta][:validation] = {'token': validation_token.value} end if relations model[:meta][:relations] = relations end return model end
restore(snapshot, signatures, validation_token = nil, relations = nil)
click to toggle source
Restores request from snapshot.
Args: snapshot: Json-encoded snapshot request will be restored from. signatures: Request signatures. validation_token: validation token gotten from Virgil Identity Service relations: relations
# File lib/virgil/sdk/client/requests/signable_request.rb, line 83 def restore(snapshot, signatures, validation_token = nil, relations = nil) @snapshot = snapshot @signatures = signatures @validation_token = validation_token @relations = relations model = JSON.parse(Crypto::Bytes.new(snapshot).to_s) restore_from_snapshot_model(model) end
restore_from_snapshot_model(snapshot)
click to toggle source
Restores request from snapshot model.
Should be implemented in the derived classes.
Args:
snapshot: snapshot model dict
Raises:
NotImplementedError
# File lib/virgil/sdk/client/requests/signable_request.rb, line 71 def restore_from_snapshot_model(snapshot) raise NotImplementedError.new end
sign_with(fingerprint_id, signature)
click to toggle source
Adds signature to request.“”“
# File lib/virgil/sdk/client/requests/signable_request.rb, line 119 def sign_with(fingerprint_id, signature) @signatures[fingerprint_id] = signature end
snapshot_model()
click to toggle source
Constructs snapshot model for exporting and signing.
Should be implemented in the derived classes.
Raises:
NotImplementedError
# File lib/virgil/sdk/client/requests/signable_request.rb, line 58 def snapshot_model raise NotImplementedError.new end
take_snapshot()
click to toggle source
Takes request data snapshot.
Returns:
Request snapshot bytes.
# File lib/virgil/sdk/client/requests/signable_request.rb, line 97 def take_snapshot json_string = self.snapshot_model.to_json Crypto::Bytes.from_string(json_string) end