rs4 0.1.4 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dbf0795919c6835f30a843f728b8bfc7cbd3efdd1027d199bbe39c6450963380
4
- data.tar.gz: 18578752a41d6727cf72b560aae3270194dedf3b033395410c0f41b32de3aa73
3
+ metadata.gz: 4064ed9919a67b9d7b02c1b00452f2ba0ff1323ba8953a4a9826cfd000714dcc
4
+ data.tar.gz: 6907a7d5bad42fac43c1d9b372936cfe44c6d1ec8f2257573d3ed159e04908ae
5
5
  SHA512:
6
- metadata.gz: bfa79ca3aabe08ae7432c7224ad806d169bad8305b89f3ce8300fdfa7bce9871da58749becfa3cfc74c72f0248d7a8b00d68a9da8e5123cf93eeb1677511be23
7
- data.tar.gz: 2731bf2ba14e69d77541441e1e064cbc90b8c1589047f6d30ac736e38a405e2e7a3aec89360e31d4e622e0cf6fec00207655720c5b1460472ca0c434e785dbb2
6
+ metadata.gz: 43d0f4b4ee7df70868c5c413967eeeca8047cf992fbebcc8fd286ad2c93f0590dec64df01b561927f4a7e2d7a682ecf515659a89c42cd207ed3f40f3e1c03950
7
+ data.tar.gz: a195784b8fb5f06e368fc8f89339d6b89fc282e95deaee5a126f2e42bca5157661f9e80398a291a301979a3ace429da7ce19d17ccb2e18020518da12b81acb53
data/lib/rs4.rb CHANGED
@@ -8,5 +8,7 @@ require 'rs4/configuration.rb'
8
8
  require 'rs4/request_error.rb'
9
9
  require 'rs4/reusable_template.rb'
10
10
 
11
+ require 'test/mock_request.rb'
12
+
11
13
  module RS4
12
14
  end
@@ -11,6 +11,7 @@ module RS4
11
11
  end
12
12
 
13
13
  class Configuration
14
+ attr_accessor :request_handler
14
15
  attr_accessor :private_api_key
15
16
  attr_accessor :api_host
16
17
  end
@@ -9,6 +9,7 @@ module RS4
9
9
  EXECUTED_STATE = :executed
10
10
 
11
11
  attr_accessor :id
12
+ attr_accessor :original_guid
12
13
  attr_accessor :current_signer_id
13
14
  attr_accessor :name
14
15
  attr_accessor :filename
@@ -82,47 +83,49 @@ module RS4
82
83
  end
83
84
 
84
85
  class << self
86
+ def get_archive_document(document_guid)
87
+ return unless document_guid.present?
88
+
89
+ path = "archived_documents_by_original_guid/#{document_guid}"
90
+
91
+ response = RS4.configuration.request_handler.execute(path, :get)
92
+
93
+ unless response.class == RS4::RequestError || response.nil?
94
+ archived_document = response.dig(:archived_document)
95
+
96
+ Document.new(archived_document) if archived_document
97
+ end
98
+ end
99
+
85
100
  def get_document(document_guid)
86
- return unless document_guid
101
+ return unless document_guid.present?
87
102
 
88
103
  path = "documents/#{document_guid}"
89
104
 
90
- response = RS4Api::Request.execute(path, :get)
105
+ response = RS4.configuration.request_handler.execute(path, :get)
91
106
 
92
- if response.class == Net::HTTPOK
93
- raw_document = JSON.parse(response.body, symbolize_names: true)
107
+ unless response.class == RS4::RequestError || response.nil? # .class == Net::HTTPOK
108
+ raw_document = response.dig(:document) # JSON.parse(response.body, symbolize_names: true)
94
109
 
95
- Document.new(raw_document[:document])
96
- else
97
- Rails.logger.error("Unable to get document #{document_guid}")
98
- RS4Api::RequestError.new(
99
- response.code,
100
- response.class,
101
- JSON.parse(response.read_body)
102
- )
110
+ # Document.new(raw_document[:document])
111
+ Document.new(raw_document) if raw_document
103
112
  end
104
113
  end
105
114
 
106
115
  def get_documents
107
116
  path = 'documents'
108
- response = RS4Api::Request.execute(path, :get)
117
+ response = RS4.configuration.request_handler.execute(path, :get)
109
118
 
110
- if response.class == Net::HTTPOK
119
+ unless response.class == RS4::RequestError || response.nil?
111
120
  documents = []
112
121
 
113
- raw_documents = JSON.parse(response.body, symbolize_names: true)
114
-
115
- raw_documents.each do |raw_document|
116
- documents << Document.new(raw_document[:document])
122
+ response.dig(:documents).each do |document_hash|
123
+ # document_hash = raw_document.pluck(:document)
124
+ documents << Document.new(document_hash)
117
125
  end
118
- else
119
- Rails.logger.error('Unable to get documents')
120
- RS4Api::RequestError.new(
121
- response.code,
122
- response.class,
123
- JSON.parse(response.read_body)
124
- )
125
126
  end
127
+
128
+ documents
126
129
  end
127
130
  end
128
131
  end
@@ -30,7 +30,19 @@ module RS4
30
30
  # https://stackoverflow.com/questions/5370697/what-s-the-best-way-to-handle-exceptions-from-nethttp#answer-11802674
31
31
  begin
32
32
  retries ||= 0
33
- http.request(request)
33
+ response = http.request(request)
34
+
35
+ result = if response.class == Net::HTTPOK
36
+ JSON.parse(response.body, symbolize_names: true)
37
+ else
38
+ RS4::RequestError.new(
39
+ response.code,
40
+ response.class,
41
+ JSON.parse(response.read_body)
42
+ )
43
+ end
44
+
45
+ result
34
46
  rescue StandardError => e
35
47
  Rails.logger.error(e)
36
48
  retry if (retries += 1) < MAX_RETRIES
@@ -42,62 +42,51 @@ module RS4
42
42
  @page_image_urls = options[:page_image_urls]
43
43
  end
44
44
 
45
- def get_reusable_template(template_guid)
46
- return unless template_guid
45
+ class << self
46
+ def get_reusable_template(template_guid)
47
+ return unless template_guid
47
48
 
48
- path = "reusable_templates/#{template_guid}"
49
+ path = "reusable_templates/#{template_guid}"
49
50
 
50
- response = RS4::Request.execute(path, :get)
51
+ response = RS4.configuration.request_handler.execute(path, :get)
51
52
 
52
- if response.class == Net::HTTPOK
53
- parsed_response = JSON.parse(response.read_body, symbolize_names: true)
53
+ unless response.class == RS4::RequestError || response.nil?
54
+ # parsed_response = JSON.parse(response.read_body, symbolize_names: true)
54
55
 
55
- template_hash = parsed_response[:reusable_template]
56
+ template_hash = response.dig(:reusable_template)
56
57
 
57
- RS4Api::ReusableTemplate.new(template_hash)
58
- else
59
- RS4Api::RequestError.new(
60
- response.code,
61
- response.class,
62
- JSON.parse(response.read_body)
63
- )
58
+ RS4::ReusableTemplate.new(template_hash)
59
+ end
64
60
  end
65
- end
66
-
67
- def get_reusable_templates(options = {})
68
- base_path = 'reusable_templates'
69
61
 
70
- query = CGI.unescape(options.to_query)
62
+ def get_reusable_templates(options = {})
63
+ base_path = 'reusable_templates'
71
64
 
72
- path = query.empty? ? base_path : "#{base_path}?#{query}"
65
+ query = CGI.unescape(options.to_query)
73
66
 
74
- RS4::Request.execute(path, :get)
75
- end
67
+ path = query.empty? ? base_path : "#{base_path}?#{query}"
76
68
 
77
- def send_document(template_guid, options = {})
78
- path = "reusable_templates/#{template_guid}/send_document"
69
+ RS4.configuration.request_handler.execute(path, :get)
70
+ end
79
71
 
80
- body = options
72
+ def send_document(template_guid, options = {})
73
+ path = "reusable_templates/#{template_guid}/send_document"
81
74
 
82
- body[:in_person] = true
75
+ body = options
83
76
 
84
- response = RS4::Request.execute(path, :post, body)
77
+ body[:in_person] = true
85
78
 
86
- Rails.logger.info("RS4::ReusableTemplate::send_document:: #{response.inspect}")
79
+ response = RS4.configuration.request_handler.execute(path, :post, body)
87
80
 
88
- if response.class == Net::HTTPOK
89
- parsed_response = JSON.parse(response.read_body, symbolize_names: true)
81
+ Rails.logger.info("RS4::ReusableTemplate::send_document:: #{response.inspect}")
90
82
 
91
- document_hash = parsed_response[:document]
83
+ unless response.class == RS4::RequestError || response.nil?
84
+ # parsed_response = JSON.parse(response.read_body, symbolize_names: true)
92
85
 
93
- return RS4Api::Document.new(document_hash)
86
+ document_hash = response.dig(:document)
94
87
 
95
- else
96
- return RS4Api::RequestError.new(
97
- response.code,
98
- response.class,
99
- JSON.parse(response.read_body)
100
- )
88
+ return RS4::Document.new(document_hash)
89
+ end
101
90
  end
102
91
  end
103
92
  end
@@ -1,3 +1,3 @@
1
1
  module RS4
2
- VERSION = "0.1.4"
2
+ VERSION = '0.2.3'.freeze
3
3
  end
@@ -0,0 +1,114 @@
1
+ module RS4
2
+ class MockRequest
3
+ class << self
4
+ def execute(path, method = :get, _body = {})
5
+ mockument = {
6
+ id: SecureRandom.uuid,
7
+ current_signer_id: 0,
8
+ name: 'noname',
9
+ filename: 'noname.pdf',
10
+ executed_at: Date.today,
11
+ expired_at: Date.today + 1.day,
12
+ sent_at: Date.today,
13
+ state: 'draft',
14
+ thumbnail_url: 'google.com',
15
+ sender: 'sender',
16
+ recipients: [
17
+ {
18
+ role_name: 'Investor',
19
+ sign_url: 'www.google.com'
20
+ }
21
+ ],
22
+ audits: nil,
23
+ page_image_urls: 'google.com',
24
+ signed_pdf_url: 'google.com/pdf.pdf',
25
+ tags: nil,
26
+ merge_field_values: nil,
27
+ embed_codes: nil,
28
+ in_person: true,
29
+ shared_with: nil,
30
+ identity_method: nil,
31
+ passcode_pin_enabled: false,
32
+ original_file_url: 'google.com'
33
+ }
34
+
35
+ if _body&.dig(:roles)&.any?
36
+
37
+ mockument[:recipients] = []
38
+
39
+ _body[:roles].each do |role|
40
+ mockument[:recipients] << {
41
+ role_name: role[:name],
42
+ sign_url: 'www.google.com'
43
+ }
44
+ end
45
+ end
46
+
47
+ mockplate = {
48
+ id: SecureRandom.uuid,
49
+ name: 'template',
50
+ creator: 'creator',
51
+ expires_in: Date.today + 1.day,
52
+ signer_sequencing: false,
53
+ shared_with: nil,
54
+ distribution_method: nil,
55
+ identity_method: nil,
56
+ kba: nil,
57
+ passcode: nil,
58
+ filename: 'template.pdf',
59
+ tags: nil,
60
+ user_id: 1,
61
+ roles: [],
62
+ merge_field_components: [],
63
+ created_at: Date.today,
64
+ updated_at: Date.today,
65
+ thumbnail_url: 'google.com/pdf.pdf',
66
+ page_image_urls: 'google.com/image'
67
+ }
68
+
69
+ case path
70
+ when %r{reusable_templates/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/send_document}
71
+ return {
72
+ document: mockument
73
+ }
74
+ when %r{reusable_templates/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}}
75
+ return {
76
+ reusable_template: mockplate
77
+ }
78
+ when /reusable_templates/
79
+ results = {
80
+ reusable_templates: []
81
+ }
82
+
83
+ i = 0
84
+ while i < 3
85
+ mockplate[:id] = SecureRandom.uuid
86
+ results[:reusable_templates] << mockplate
87
+ i += 1
88
+ end
89
+
90
+ return results
91
+ when %r{documents/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}}
92
+ return {
93
+ document: mockument
94
+ }
95
+
96
+ when /documents/
97
+ Rails.logger.info("#{method} documents")
98
+
99
+ results = {
100
+ documents: []
101
+ }
102
+ i = 0
103
+ while i < 3
104
+ results[:documents] << mockument
105
+ i += 1
106
+ end
107
+
108
+ return results
109
+
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rs4
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - donny
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-20 00:00:00.000000000 Z
11
+ date: 2020-06-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Provides ruby access to CRUD operations for RightSignature documents
14
14
  and reusable templates
@@ -34,6 +34,7 @@ files:
34
34
  - lib/rs4/request_error.rb
35
35
  - lib/rs4/reusable_template.rb
36
36
  - lib/rs4/version.rb
37
+ - lib/test/mock_request.rb
37
38
  - license.txt
38
39
  - rs4.gemspec
39
40
  homepage: https://github.com/equitymultiple/rs4