Sha256: 2328edfb25aeb918d3d28162c2fa7eb4326949eab8890a047bfeed88a1ea87d3
Contents?: true
Size: 1.63 KB
Versions: 2
Compression:
Stored size: 1.63 KB
Contents
# frozen_string_literal: true require 'uri' require 'net/http' require_relative 'response' module TochkaCyclopsApi # Module for sending requests to the bank's api module Request def self.send(body, method) @method = method initialize_request(body) uri = URI('https://pre.tochka.com/api/v1/cyclops/v2/jsonrpc') http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri, { 'sign-data' => signature(body), 'sign-thumbprint' => TochkaCyclopsApi.configuration.sign_thumbprint, 'sign-system' => TochkaCyclopsApi.configuration.sign_system, 'Content-Type' => 'application/pdf' }) request.body = body response = http.request(request) case response.code.to_i when (200..299) @request.update(status: 'finished') TochkaCyclopsApi::Response.create(@request, response, method) when (400..499) -> { 'Our server error' }[] else @request.update(status: 'failed') -> { 'Their server error' }[] end end def self.signature(body) digest = OpenSSL::Digest.new('sha256') private_key = OpenSSL::PKey::RSA.new(TochkaCyclopsApi.configuration.private_key) signature_key = private_key.sign(digest, body) base64_signature = Base64.strict_encode64(signature_key) base64_signature.gsub("\n", '') end def self.initialize_request(body) @request = TochkaCyclopsRequest.create( method: @method, body: body, request_identifier: @id, # idempotency_key: status: 'initialized' ) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
tochka_cyclops_api-0.3.0 | lib/tochka_cyclops_api/request.rb |
tochka_cyclops_api-0.2.0 | lib/tochka_cyclops_api/request.rb |