Class: EtCcdClient::Client

Inherits:
Object
  • Object
show all
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

Methods included from CommonRestClient

#get_request, #post_request

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

Parameters:

  • case_id (String)

    The id to find

  • case_type_id (String)

    The case type ID to set the search scope to

Returns:

  • (Array<Hash>)

    The json response from the server



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.expand(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id, case_id: case_id).to_s
    (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.

Parameters:

  • data (Hash)
  • case_type_id (String)

Returns:

  • (Hash)

    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.expand(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id).to_s
    (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.expand(uid: idam_client.user_details['id'], jid: config.jurisdiction_id, ctid: case_type_id, query: query).to_s
    (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

Parameters:

  • reference (String)

    The ethos case reference number to search for

  • case_type_id (String)

    The case type ID to set the search scope to

  • page (Integer) (defaults to: 1)
    • The page number to fetch

  • sort_direction (String) (defaults to: 'desc')

    (defaults to ‘desc’) - Change to ‘asc’ to do oldest first

Returns:

  • (Array<Hash>)

    The json response from the server



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.expand(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 = (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

Parameters:

  • reference (String)

    The multiples reference number to search for

  • case_type_id (String)

    The case type ID to set the search scope to

  • page (Integer) (defaults to: 1)
    • The page number to fetch

  • sort_direction (String) (defaults to: 'desc')

    (defaults to ‘desc’) - Change to ‘asc’ to do oldest first

Returns:

  • (Array<Hash>)

    The json response from the server



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.expand(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
    (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

Parameters:

  • reference (String)

    The reference number to search for

  • case_type_id (String)

    The case type ID to set the search scope to

  • page (Integer) (defaults to: 1)
    • The page number to fetch

  • sort_direction (String) (defaults to: 'desc')

    (defaults to ‘desc’) - Change to ‘asc’ to do oldest first

Returns:

  • (Array<Hash>)

    The json response from the server



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.expand(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
    (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

Parameters:

  • reference (String)

    The ethos case reference number to search for

  • case_type_id (String)

    The case type ID to set the search scope to

Returns:

  • (Hash)

    The case object returned from the server



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

Parameters:

  • reference (String)

    The multiples reference number to search for

  • case_type_id (String)

    The case type ID to set the search scope to

Returns:

  • (Hash)

    The case object returned from the server



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

Parameters:

  • reference (String)

    The reference number to search for

  • case_type_id (String)

    The case type ID to set the search scope to

Returns:

  • (Hash)

    The case object returned from the server



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

Parameters:

  • case_type_id (String)

Returns:

  • (Hash)

    The json response



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)
    (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

Parameters:

  • case_type_id (String)

Returns:

  • (Hash)

    The json response



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)
    (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

Parameters:

  • ctid (String)
  • cid (String)

Returns:

  • (Hash)

    The json response



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)
  (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.expand(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
    (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.

Parameters:

  • case_type_id (String)
  • quantity (Integer)

Returns:

  • (Hash)

    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
      }
    }
    (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.

Parameters:

  • filename (String)

    The full path to the file to upload

Returns:

  • (Hash)

    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:)
   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.

Parameters:

  • url (String)

    The url of the file to upload

Returns:

  • (Hash)

    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)
   do
    upload_file_from_source(resp.file.path, content_type: content_type, source_name: :url, source: url, original_filename: original_filename)
  end
end