Sha256: e52937baf5ac5aac39821355b7693044cd729fc8fe71a45632e18a39f17e96bb

Contents?: true

Size: 1006 Bytes

Versions: 1

Compression:

Stored size: 1006 Bytes

Contents

require 'uri'
require 'net/http'
require_relative 'response'

module TochkaCyclopsApi
  module Request
    def self.send(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

      TochkaCyclopsApi::Response.new(http.request(request))
    end

    private

    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
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tochka_cyclops_api-0.1.0 lib/tochka_cyclops_api/request.rb