diff --git a/Gemfile.lock b/Gemfile.lock index fcf8f30..473866d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - clicksign-api (1.1.1) + clicksign-api (1.1.3.alpha) faraday GEM @@ -56,7 +56,7 @@ GEM rspec-mocks (3.10.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.10.0) - rspec-support (3.10.2) + rspec-support (3.10.3) ruby2_keywords (0.0.5) simplecov (0.21.2) docile (~> 1.1) @@ -71,7 +71,6 @@ GEM hashdiff (>= 0.4.0, < 2.0.0) PLATFORMS - x86_64-darwin-20 x86_64-linux DEPENDENCIES diff --git a/README.md b/README.md index 62c71b9..41735c6 100644 --- a/README.md +++ b/README.md @@ -54,52 +54,32 @@ To see all available parameters, please, check the [API docs](https://developers ```ruby file = File.open('/path/to/file/local/file.pdf', 'r') -document = Clicksign::API::Document.create( params: { path: '/path/to/file/on/clicksign.pdf', file: file }, token: 'valid_token') -# => # +document = Clicksign::API::Document.create( params: { path: '/path/to/file/on/clicksign.pdf', file: file }, token: "key.sandbox") +# => {"document"=> {"key"=>"00000000-0000-0000-0000-000000000000"} -document.success? -# => true # false - -response_document = JSON.parse(document.body) -# => {:document=> {:key=> '...', :path=> '...', :status => '...', ... } ``` #### View documents ```ruby -find_document = Clicksign::API::Document.find(params: { key: response_document['document']['key'] }, token: 'valid_token') -# => # - -find_document.success? -# => true # false +find_document = Clicksign::API::Document.find(params: { key: response_document['document']['key'] }, token: "key.sandbox") +# => {"document"=> {"key"=>"00000000-0000-0000-0000-000000000000"} -JSON.parse(find_document.body) -# => {:document=> {:key=> '...', :path=> '...', :status => '...', ... } ``` #### Create Signers ```ruby -signer = Clicksign::API::Signer.create(params: { email: 'mail@email.com', auths: ['email'], delivery: 'email' }, token: 'valid_token') -# => # - -signer.success? -# => true # false +signer = Clicksign::API::Signer.create(params: { email: 'mail@email.com', auths: ['email'], delivery: 'email' }, token: "key.sandbox") +# => {"signer"=> {"key"=>"00000000-0000-0000-0000-000000000000"} -response_signer = JSON.parse(signer.body) -# => {:signer=> {:key=> '...', :email=> '...', ... } ``` #### Add Signers to Document ```ruby -signer_document = Clicksign::API::DocumentsSigners.create(params: { document_key: response_document['document']['key'], signer_key: response_signer['key'], sign_as: 'sign_as' }, token: 'valid_token') -# => # +signer_document = Clicksign::API::DocumentsSigners.create(params: { document_key: response_document['document']['key'], signer_key: response_signer['key'], sign_as: 'sign_as' }, token: "key.sandbox") +# => {"list"=>{"key"=>"00000000-0000-0000-0000-000000000000"} -signer_document.success? -# => true # false - -response_signer_document = JSON.parse(signer_document.body) -# => {:list=> {:key=> '...', ... } ``` ##### Creating Documents in Batches @@ -111,37 +91,25 @@ batch = Clicksign::API::Batch.create( signer_key: response_signer['key'], summary: true }, - token: 'valid_token' + token: "key.sandbox" ) -# => # -batch.success? -# => true # false +# => {"batch"=>{"key"=>"00000000-0000-0000-0000-000000000000"} -rseponse_batch = JSON.parse(batch.body) -# => #{"batch"=> {"key"=>"..." ``` #### Notifying Signer by e-mail ```ruby -notify = Clicksign::API::Notifier.notify(params: { request_signature_key: 'request_signature_key' }, token: 'valid_token') -# => # - -notify.success? -# => true # false +notify = Clicksign::API::Notifier.notify(params: { request_signature_key: 'request_signature_key' }, token: "key.sandbox") +# => {:status=>202} -JSON.parse(notify.body) -# => ## # - -notify.success? -# => true # false +notify = Clicksign::API::Notifier.notify(params: { request_signature_key: 'request_signature_key' }, token: "key.sandbox") +# => {:status=>202} ## Development diff --git a/lib/clicksign/api/documents_signers.rb b/lib/clicksign/api/documents_signers.rb index ee8be04..0fb24e3 100644 --- a/lib/clicksign/api/documents_signers.rb +++ b/lib/clicksign/api/documents_signers.rb @@ -17,9 +17,11 @@ def create(token:, params: {}) ) end - def batch_create(token:, batch:) - batch.map do |params| - create(token: token, params: params) + def batch_create(token:, params:) + params = params.transform_keys(&:to_sym) + + params[:batch].map do |single_params| + create(token: token, params: single_params) end end diff --git a/lib/clicksign/api/requests.rb b/lib/clicksign/api/requests.rb index abfabf7..2e3804f 100644 --- a/lib/clicksign/api/requests.rb +++ b/lib/clicksign/api/requests.rb @@ -2,23 +2,37 @@ module Clicksign module API module Requests def post(request_path, body, token) - conn.post do |req| + response = conn.post do |req| req.url request_path, { access_token: Clicksign::API.credentials[token] } req.headers['Content-Type'] = 'application/json' req.body = body.to_json end + + parse(response) end def get(request_path, token) - conn.get do |req| + response = conn.get do |req| req.url request_path, { access_token: Clicksign::API.credentials[token] } req.headers['Content-Type'] = 'application/json' end + + parse(response) end + + private def conn @conn ||= Faraday.new(url: Clicksign::API.url) end + + def parse(response) + if !response.body.empty? + JSON.parse(response.body, symbolize_keys: true).merge(status: response.status) + else + { status: response.status } + end + end end end -end +end \ No newline at end of file diff --git a/lib/clicksign/api/version.rb b/lib/clicksign/api/version.rb index f8fc8df..fd5ae11 100644 --- a/lib/clicksign/api/version.rb +++ b/lib/clicksign/api/version.rb @@ -1,5 +1,5 @@ module Clicksign module API - VERSION = "1.1.1" + VERSION = "1.1.3.alpha" end end diff --git a/spec/clicksign/api/batch_spec.rb b/spec/clicksign/api/batch_spec.rb index ef1b100..abd832e 100644 --- a/spec/clicksign/api/batch_spec.rb +++ b/spec/clicksign/api/batch_spec.rb @@ -58,7 +58,7 @@ end end - it { expect(json[:batch][:key]).to eq('d98c9561-3750-4dab-a7a2-46676a148afd') } + it { expect(response['batch']['key']).to eq('d98c9561-3750-4dab-a7a2-46676a148afd') } end end end diff --git a/spec/clicksign/api/document_spec.rb b/spec/clicksign/api/document_spec.rb index d7eec76..1c682ac 100644 --- a/spec/clicksign/api/document_spec.rb +++ b/spec/clicksign/api/document_spec.rb @@ -18,7 +18,7 @@ end end - it { expect(json[:document][:key]).to eq('ae7618d4-3958-4d7d-ade3-59def0d1288d') } + it { expect(response['document']['key']).to eq('ae7618d4-3958-4d7d-ade3-59def0d1288d') } end context 'with all available parameters' do @@ -37,7 +37,7 @@ end end - it { expect(json[:document][:key]).to eq('28343efd-dccb-4e7a-9989-49e792b3c266') } + it { expect(response['document']['key']).to eq('28343efd-dccb-4e7a-9989-49e792b3c266') } end end @@ -55,7 +55,7 @@ end end - it { expect(json[:errors]).to eq(['Nome do arquivo não contém mimetype válido']) } + it { expect(response['errors']).to eq(['Nome do arquivo não contém mimetype válido']) } end end @@ -72,7 +72,7 @@ end end - it { expect(json[:errors]).to eq(['Access Token inválido']) } + it { expect(response['errors']).to eq(['Access Token inválido']) } end end @@ -89,7 +89,7 @@ end end - it { expect(json[:document][:key]).to eq('28343efd-dccb-4e7a-9989-49e792b3c266') } + it { expect(response['document']['key']).to eq('28343efd-dccb-4e7a-9989-49e792b3c266') } end context 'invalid key' do @@ -104,7 +104,7 @@ end end - it { expect(json[:errors]).to eq(['Documento não encontrado']) } + it { expect(response['errors']).to eq(['Documento não encontrado']) } end end end diff --git a/spec/clicksign/api/documents_signers_spec.rb b/spec/clicksign/api/documents_signers_spec.rb index 6476339..05f6251 100644 --- a/spec/clicksign/api/documents_signers_spec.rb +++ b/spec/clicksign/api/documents_signers_spec.rb @@ -55,7 +55,7 @@ end end - it { expect(json[:list][:key]).to eq('721ff97f-83d7-44c8-92a0-7c7f287f73f6') } + it { expect(response['list']['key']).to eq('721ff97f-83d7-44c8-92a0-7c7f287f73f6') } end end end @@ -67,32 +67,34 @@ VCR.use_cassette('Clicksign::API::DocumentsSigners.create/batch-request') do described_class.batch_create( token: 'valid_token', - batch: - [ - { - document_key: '28343efd-dccb-4e7a-9989-49e792b3c266', - signer_key: '6fa5fc10-dcbe-4bae-a361-0350ea44fb5d', - sign_as: 'transferor' - }, - { - document_key: '28343efd-dccb-4e7a-9989-49e792b3c266', - signer_key: '6fa5fc10-dcbe-4bae-a361-0350ea44fb5d', - sign_as: 'transferee' - }, - { - document_key: '28343efd-dccb-4e7a-9989-49e792b3c266', - signer_key: '6fa5fc10-dcbe-4bae-a361-0350ea44fb5d', - sign_as: 'contractee' - } - ] + params: { + batch: + [ + { + document_key: '28343efd-dccb-4e7a-9989-49e792b3c266', + signer_key: '6fa5fc10-dcbe-4bae-a361-0350ea44fb5d', + sign_as: 'transferor' + }, + { + document_key: '28343efd-dccb-4e7a-9989-49e792b3c266', + signer_key: '6fa5fc10-dcbe-4bae-a361-0350ea44fb5d', + sign_as: 'transferee' + }, + { + document_key: '28343efd-dccb-4e7a-9989-49e792b3c266', + signer_key: '6fa5fc10-dcbe-4bae-a361-0350ea44fb5d', + sign_as: 'contractee' + } + ] + } ) end end it do - expect(JSON.parse(response[0].body)["list"]["key"]).to eq('8c5cf01d-09d2-474c-b9a1-b4ef6bc1b603') - expect(JSON.parse(response[1].body)["list"]["key"]).to eq('4add9d39-54cb-44f3-88be-fb67ab45b0be') - expect(JSON.parse(response[2].body)["list"]["key"]).to eq('bb1a4b55-cd16-4778-b2dc-9184160026b8') + expect((response[0])['list']['key']).to eq('8c5cf01d-09d2-474c-b9a1-b4ef6bc1b603') + expect((response[1])['list']['key']).to eq('4add9d39-54cb-44f3-88be-fb67ab45b0be') + expect((response[2])['list']['key']).to eq('bb1a4b55-cd16-4778-b2dc-9184160026b8') end end end diff --git a/spec/clicksign/api/notifier_spec.rb b/spec/clicksign/api/notifier_spec.rb index c117737..b76ada5 100644 --- a/spec/clicksign/api/notifier_spec.rb +++ b/spec/clicksign/api/notifier_spec.rb @@ -49,7 +49,7 @@ end end - it { expect(response.status).to eq(202) } + it { expect(response[:status]).to eq(202) } end end end diff --git a/spec/clicksign/api/signer_spec.rb b/spec/clicksign/api/signer_spec.rb index a71e2cc..907d883 100644 --- a/spec/clicksign/api/signer_spec.rb +++ b/spec/clicksign/api/signer_spec.rb @@ -57,7 +57,7 @@ end end - it { expect(json[:signer][:key]).to eq('6fa5fc10-dcbe-4bae-a361-0350ea44fb5d') } + it { expect(response['signer']['key']).to eq('6fa5fc10-dcbe-4bae-a361-0350ea44fb5d') } end end end diff --git a/spec/clicksign/api/whatsapp_notifier_spec.rb b/spec/clicksign/api/whatsapp_notifier_spec.rb index 819019b..02b4adf 100644 --- a/spec/clicksign/api/whatsapp_notifier_spec.rb +++ b/spec/clicksign/api/whatsapp_notifier_spec.rb @@ -47,7 +47,7 @@ end end - it { expect(response.status).to eq(202) } + it { expect(response[:status]).to eq(202) } end end end diff --git a/spec/clicksign/api_spec.rb b/spec/clicksign/api_spec.rb index 9f7ab23..516a347 100644 --- a/spec/clicksign/api_spec.rb +++ b/spec/clicksign/api_spec.rb @@ -1,6 +1,6 @@ RSpec.describe Clicksign::API do it 'has a version number' do - expect(Clicksign::API::VERSION).to eq('1.1.0.alpha2') + expect(Clicksign::API::VERSION).to eq('1.1.3.alpha') end describe '.configure' do