Class: EtCcdClient::Client
- Inherits:
-
Object
- Object
- EtCcdClient::Client
- Extended by:
- Forwardable
- Includes:
- CommonRestClient, CommonRestClientWithLogin
- Defined in:
- lib/et_ccd_client/client.rb
Overview
A client to interact with the CCD API (backend)
Class Method Summary collapse
Instance Method Summary collapse
-
#caseworker_case(case_id, case_type_id:, extra_headers: {}) ⇒ Array<Hash>
Find a case by its id.
-
#caseworker_case_create(data, case_type_id:, extra_headers: {}) ⇒ Hash
The json response.
- #caseworker_cases_pagination_metadata(case_type_id:, query: {}, extra_headers: {}) ⇒ Object
-
#caseworker_search_by_ethos_case_reference(reference, case_type_id:, page: 1, sort_direction: 'desc', extra_headers: {}) ⇒ Array<Hash>
Search for cases by ethos case reference - useful for testing.
-
#caseworker_search_by_multiple_reference(reference, case_type_id:, page: 1, sort_direction: 'desc', extra_headers: {}) ⇒ Array<Hash>
Search for cases by multiple reference - useful for testing.
-
#caseworker_search_by_reference(reference, case_type_id:, page: 1, sort_direction: 'desc', extra_headers: {}) ⇒ Array<Hash>
Search for cases by reference - useful for testing.
-
#caseworker_search_latest_by_ethos_case_reference(reference, case_type_id:, extra_headers: {}) ⇒ Hash
Search for the latest case matching the ethos case reference.
-
#caseworker_search_latest_by_multiple_reference(reference, case_type_id:, extra_headers: {}) ⇒ Hash
Search for the latest case matching the multiples reference.
-
#caseworker_search_latest_by_reference(reference, case_type_id:, extra_headers: {}) ⇒ Hash
Search for the latest case matching the reference.
-
#caseworker_start_bulk_creation(case_type_id:, extra_headers: {}) ⇒ Hash
Initiate a bulk action case ready for creation.
-
#caseworker_start_case_creation(case_type_id:, extra_headers: {}) ⇒ Hash
Initiate the case ready for creation.
-
#caseworker_start_upload_document(ctid:, cid:, extra_headers: {}) ⇒ Hash
Initiate a document upload.
- #caseworker_update_case_documents(event_token:, files:, case_id:, case_type_id:, extra_headers: {}) ⇒ Object
-
#initialize(idam_client: nil, config: ::EtCcdClient.config) ⇒ Client
constructor
A new instance of Client.
-
#start_multiple(case_type_id:, quantity:, extra_headers: {}) ⇒ Hash
The json response from the server.
-
#upload_file_from_filename(filename, content_type:) ⇒ Hash
The object returned by the server.
-
#upload_file_from_url(url, content_type:, original_filename: File.basename(url)) ⇒ Hash
The object returned by the server.
Methods included from CommonRestClient
Constructor Details
#initialize(idam_client: nil, config: ::EtCcdClient.config) ⇒ Client
Returns a new instance of Client.
19 20 21 22 23 |
# File 'lib/et_ccd_client/client.rb', line 19 def initialize(idam_client: nil, config: ::EtCcdClient.config) self.idam_client = idam_client || (config.use_sidam ? IdamClient.new : TidamClient.new) self.config = config self.logger = config.logger end |
Class Method Details
.connection_pool(config: ::EtCcdClient.config) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/et_ccd_client/client.rb', line 29 def self.connection_pool(config: ::EtCcdClient.config) @connection_pool ||= ConnectionPool.new(size: config.pool_size, timeout: config.pool_timeout) do new.tap do |client| client.login end end end |
.use(&block) ⇒ Object
25 26 27 |
# File 'lib/et_ccd_client/client.rb', line 25 def self.use(&block) connection_pool.with(&block) end |
Instance Method Details
#caseworker_case(case_id, case_type_id:, extra_headers: {}) ⇒ Array<Hash>
Find a case by its id
103 104 105 106 107 108 109 |
# File 'lib/et_ccd_client/client.rb', line 103 def caseworker_case(case_id, case_type_id:, extra_headers: {}) logger.tagged('EtCcdClient::Client') do tpl = Addressable::Template.new(config.case_url) url = tpl.(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id, case_id: case_id).to_s get_request_with_login(url, log_subject: 'Caseworker get by id', extra_headers: extra_headers.merge(headers_from_idam_client)) end end |
#caseworker_case_create(data, case_type_id:, extra_headers: {}) ⇒ Hash
Returns The json response.
75 76 77 78 79 80 81 |
# File 'lib/et_ccd_client/client.rb', line 75 def caseworker_case_create(data, case_type_id:, extra_headers: {}) logger.tagged('EtCcdClient::Client') do tpl = Addressable::Template.new(config.create_case_url) url = tpl.(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id).to_s post_request_with_login(url, data, log_subject: 'Case worker create case', extra_headers: extra_headers.merge(headers_from_idam_client)) end end |
#caseworker_cases_pagination_metadata(case_type_id:, query: {}, extra_headers: {}) ⇒ Object
191 192 193 194 195 196 197 |
# File 'lib/et_ccd_client/client.rb', line 191 def (case_type_id:, query: {}, extra_headers: {}) logger.tagged('EtCcdClient::Client') do tpl = Addressable::Template.new(config.) url = tpl.(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id, query: query).to_s get_request_with_login(url, log_subject: 'Caseworker cases pagination metadata', extra_headers: extra_headers.merge(headers_from_idam_client)) end end |
#caseworker_search_by_ethos_case_reference(reference, case_type_id:, page: 1, sort_direction: 'desc', extra_headers: {}) ⇒ Array<Hash>
Search for cases by ethos case reference - useful for testing
169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/et_ccd_client/client.rb', line 169 def caseworker_search_by_ethos_case_reference(reference, case_type_id:, page: 1, sort_direction: 'desc', extra_headers: {}) logger.tagged('EtCcdClient::Client') do tpl = Addressable::Template.new(config.cases_url) url = tpl.(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id, query: { 'case.ethosCaseReference' => reference, page: page, 'sortDirection' => sort_direction }).to_s resp = get_request_with_login(url, log_subject: 'Caseworker search by ethos case reference', extra_headers: extra_headers.merge(headers_from_idam_client)) unless config.document_store_url_rewrite == false resp = reverse_rewrite_document_store_urls(resp) end resp end end |
#caseworker_search_by_multiple_reference(reference, case_type_id:, page: 1, sort_direction: 'desc', extra_headers: {}) ⇒ Array<Hash>
Search for cases by multiple reference - useful for testing
127 128 129 130 131 132 133 |
# File 'lib/et_ccd_client/client.rb', line 127 def caseworker_search_by_multiple_reference(reference, case_type_id:, page: 1, sort_direction: 'desc', extra_headers: {}) logger.tagged('EtCcdClient::Client') do tpl = Addressable::Template.new(config.cases_url) url = tpl.(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id, query: { 'case.multipleReference' => reference, page: page, 'sortDirection' => sort_direction }).to_s get_request_with_login(url, log_subject: 'Caseworker search by multiple reference', extra_headers: extra_headers.merge(headers_from_idam_client)) end end |
#caseworker_search_by_reference(reference, case_type_id:, page: 1, sort_direction: 'desc', extra_headers: {}) ⇒ Array<Hash>
Search for cases by reference - useful for testing
90 91 92 93 94 95 96 |
# File 'lib/et_ccd_client/client.rb', line 90 def caseworker_search_by_reference(reference, case_type_id:, page: 1, sort_direction: 'desc', extra_headers: {}) logger.tagged('EtCcdClient::Client') do tpl = Addressable::Template.new(config.cases_url) url = tpl.(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id, query: { 'case.feeGroupReference' => reference, page: page, 'sortDirection' => sort_direction }).to_s get_request_with_login(url, log_subject: 'Caseworker search by reference', extra_headers: extra_headers.merge(headers_from_idam_client)) end end |
#caseworker_search_latest_by_ethos_case_reference(reference, case_type_id:, extra_headers: {}) ⇒ Hash
Search for the latest case matching the ethos case reference. Useful for testing
185 186 187 188 |
# File 'lib/et_ccd_client/client.rb', line 185 def caseworker_search_latest_by_ethos_case_reference(reference, case_type_id:, extra_headers: {}) results = caseworker_search_by_ethos_case_reference(reference, case_type_id: case_type_id, page: 1, sort_direction: 'desc', extra_headers: extra_headers) results.first end |
#caseworker_search_latest_by_multiple_reference(reference, case_type_id:, extra_headers: {}) ⇒ Hash
Search for the latest case matching the multiples reference. Useful for testing
139 140 141 142 |
# File 'lib/et_ccd_client/client.rb', line 139 def caseworker_search_latest_by_multiple_reference(reference, case_type_id:, extra_headers: {}) results = caseworker_search_by_multiple_reference(reference, case_type_id: case_type_id, page: 1, sort_direction: 'desc', extra_headers: extra_headers) results.first end |
#caseworker_search_latest_by_reference(reference, case_type_id:, extra_headers: {}) ⇒ Hash
Search for the latest case matching the reference. Useful for testing
115 116 117 118 |
# File 'lib/et_ccd_client/client.rb', line 115 def caseworker_search_latest_by_reference(reference, case_type_id:, extra_headers: {}) results = caseworker_search_by_reference(reference, case_type_id: case_type_id, page: 1, sort_direction: 'desc', extra_headers: extra_headers) results.first end |
#caseworker_start_bulk_creation(case_type_id:, extra_headers: {}) ⇒ Hash
Initiate a bulk action case ready for creation
54 55 56 57 58 59 |
# File 'lib/et_ccd_client/client.rb', line 54 def caseworker_start_bulk_creation(case_type_id:, extra_headers: {}) logger.tagged('EtCcdClient::Client') do url = initiate_case_url(case_type_id, config.initiate_bulk_event_id) get_request_with_login(url, log_subject: 'Start bulk creation', extra_headers: extra_headers.merge(headers_from_idam_client)) end end |
#caseworker_start_case_creation(case_type_id:, extra_headers: {}) ⇒ Hash
Initiate the case ready for creation
43 44 45 46 47 48 |
# File 'lib/et_ccd_client/client.rb', line 43 def caseworker_start_case_creation(case_type_id:, extra_headers: {}) logger.tagged('EtCcdClient::Client') do url = initiate_case_url(case_type_id, config.initiate_claim_event_id) get_request_with_login(url, log_subject: 'Start case creation', extra_headers: extra_headers.merge(headers_from_idam_client)) end end |
#caseworker_start_upload_document(ctid:, cid:, extra_headers: {}) ⇒ Hash
Initiate a document upload
66 67 68 69 |
# File 'lib/et_ccd_client/client.rb', line 66 def caseworker_start_upload_document(ctid:, cid:, extra_headers: {}) url = initiate_document_upload_url(ctid, cid) get_request_with_login(url, log_subject: 'Start upload document', extra_headers: extra_headers.merge(headers_from_idam_client)) end |
#caseworker_update_case_documents(event_token:, files:, case_id:, case_type_id:, extra_headers: {}) ⇒ Object
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
# File 'lib/et_ccd_client/client.rb', line 199 def caseworker_update_case_documents(event_token:, files:, case_id:, case_type_id:, extra_headers: {}) tpl = Addressable::Template.new(config.case_events_url) url = tpl.(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id, cid: case_id).to_s logger.tagged('EtCcdClient::Client') do payload = { data: { documentCollection: files }, event: { id: 'uploadDocument', summary: '', description: '' }, event_token: event_token, ignore_warning: false }.to_json post_request_with_login(url, payload, log_subject: 'Caseworker update documents', extra_headers: extra_headers.merge(headers_from_idam_client)) end end |
#start_multiple(case_type_id:, quantity:, extra_headers: {}) ⇒ Hash
Returns The json response from the server.
147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/et_ccd_client/client.rb', line 147 def start_multiple(case_type_id:, quantity:, extra_headers: {}) logger.tagged('EtCcdClient::Client') do url = config.start_multiple_url payload = { case_details: { case_data: { caseRefNumberCount: quantity.to_s }, case_type_id: case_type_id } } post_request_with_login(url, payload.to_json, log_subject: 'Start multiple', extra_headers: extra_headers.merge(headers_from_idam_client)) end end |
#upload_file_from_filename(filename, content_type:) ⇒ Hash
Returns The object returned by the server.
221 222 223 224 225 |
# File 'lib/et_ccd_client/client.rb', line 221 def upload_file_from_filename(filename, content_type:) login_on_denial do upload_file_from_source(filename, content_type: content_type, source_name: :filename, source: filename) end end |
#upload_file_from_url(url, content_type:, original_filename: File.basename(url)) ⇒ Hash
Returns The object returned by the server.
229 230 231 232 233 234 |
# File 'lib/et_ccd_client/client.rb', line 229 def upload_file_from_url(url, content_type:, original_filename: File.basename(url)) resp = download_from_remote_source(url) login_on_denial do upload_file_from_source(resp.file.path, content_type: content_type, source_name: :url, source: url, original_filename: original_filename) end end |