class AssinaMe::SDK
Attributes
base_url[R]
Public Class Methods
new(apikey, base_url = nil)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 9 def initialize(apikey, base_url = nil) @apikey = apikey @base_url = 'https://api.assina.me/v1' @base_url = base_url unless base_url.nil? end
Public Instance Methods
base_url=(base_url)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 17 def base_url=(base_url) base_url[-1, base_url.length - 1] if base_url[-1, 1] == '/' @base_url = base_url end
pdf_create(setup, original_file_path)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 49 def pdf_create(setup, original_file_path) document_token = pdf_setup(setup) pdf_upload(document_token, original_file_path) document_token end
pdf_download(document_token, signed_file_path)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 64 def pdf_download(document_token, signed_file_path) response = send_get( "/pdf/#{document_token}/file", nil, { 'Accept': 'application/pdf' } ) raise(AssinaMe::SDKException, 'Invalid API response') if response.empty? open(signed_file_path, 'w:ASCII-8BIT') do |file| file.puts(response) end end
pdf_setup(setup)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 23 def pdf_setup(setup) response = send_post( '/pdf', nil, setup ) raise(AssinaMe::SDKException, 'Invalid API response format') if !response.is_a?(Hash) raise(AssinaMe::SDKException, 'API response does not contain "document_token"') if response['document_token'].to_s.empty? response['document_token'] end
pdf_status(document_token)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 56 def pdf_status(document_token) response = send_get('/pdf/' + document_token) raise(AssinaMe::SDKException, 'Invalid API response format') if !response.is_a?(Hash) response end
pdf_upload(document_token, original_file_path)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 37 def pdf_upload(document_token, original_file_path) file = open(original_file_path, 'rb') response = send_put( "/pdf/#{document_token}/file", nil, file, { 'Content-Type': 'application/pdf' } ) raise(AssinaMe::SDKException, 'Invalid API response format') if !response.is_a?(Hash) end
Private Instance Methods
send_get(uri, query = nil, headers = nil)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 80 def send_get(uri, query = nil, headers = nil) uri = '/' + uri if uri[0, 1] != '/' send_request( 'GET', uri, query, nil, headers ) end
send_post(uri, query = nil, body = nil, headers = nil)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 92 def send_post(uri, query = nil, body = nil, headers = nil) send_request( 'POST', uri, query, body, headers ) end
send_put(uri, query = nil, body = nil, headers = nil)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 102 def send_put(uri, query = nil, body = nil, headers = nil) send_request( 'PUT', uri, query, body, headers ) end
send_request(method, uri, query, body, headers)
click to toggle source
# File lib/AssinaMe/sdk.rb, line 112 def send_request(method, uri, query, body, headers) default_headers = { 'Content-Type': 'application/json; charset=utf-8', Authorization: "Bearer #{@apikey}" } body = MultiJson.dump(body) if !body.nil? && body.is_a?(Hash) default_headers.merge!(headers) if !headers.nil? && headers.is_a?(Object) begin response = RestClient::Request.execute( method: method, url: @base_url + uri, payload: body, open_timeout: 30, timeout: 90, headers: default_headers ) rescue RestClient::Exception => exception raise(AssinaMe::SDKError, exception.message) end if response.headers.key?(:content_type) content_type = response.headers[:content_type] if content_type[%r{^application\/json}] begin json = MultiJson.load(response.body) rescue MultiJson::DecodeError raise(AssinaMe::SDKException, 'Invalid API response format') end if json['status'].to_s.empty? || json['status'].to_s == 'false' raise(AssinaMe::SDKException, json['reason']) if !json['reason'].to_s.empty? raise(AssinaMe::SDKException, json['message']) if !json['message'].to_s.empty? raise(AssinaMe::SDKException, 'Unknown SDK exception') if json['exception'].to_s.empty? raise(AssinaMe::SDKException, json['exception']) end return json end end response.body end