2024-04-29 00:17:15 +02:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2019-06-06 10:47:51 +02:00
|
|
|
class Universign::API
|
|
|
|
## Universign Timestamp POST API
|
|
|
|
# Official documentation is at https://help.universign.com/hc/fr/articles/360000898965-Guide-d-intégration-horodatage
|
|
|
|
|
|
|
|
def self.ensure_properly_configured!
|
|
|
|
if userpwd.blank?
|
|
|
|
raise StandardError, 'Universign API is not properly configured'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.timestamp(data)
|
|
|
|
ensure_properly_configured!
|
|
|
|
|
|
|
|
response = Typhoeus.post(
|
|
|
|
UNIVERSIGN_API_URL,
|
|
|
|
userpwd: userpwd,
|
|
|
|
body: body(data)
|
|
|
|
)
|
|
|
|
|
|
|
|
if response.success?
|
|
|
|
response.body
|
|
|
|
else
|
|
|
|
raise StandardError, "Universign timestamp query failed: #{response.status_message}"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def self.body(data)
|
|
|
|
{
|
|
|
|
'hashAlgo': 'SHA256',
|
|
|
|
'withCert': 'true',
|
|
|
|
'hashValue': data
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.userpwd
|
|
|
|
Rails.application.secrets.universign[:userpwd]
|
|
|
|
end
|
|
|
|
end
|