Module: USCoreTestKit::Client::ServerProxy
- Included in:
- USCoreClientV311::ReadEndpoint, USCoreClientV311::SearchEndpoint, USCoreClientV400::ReadEndpoint, USCoreClientV400::SearchEndpoint, USCoreClientV501::ReadEndpoint, USCoreClientV501::SearchEndpoint, USCoreClientV610::ReadEndpoint, USCoreClientV610::SearchEndpoint, USCoreClientV700::ReadEndpoint, USCoreClientV700::SearchEndpoint, USCoreClientV800::ReadEndpoint, USCoreClientV800::SearchEndpoint
- Defined in:
- lib/us_core_test_kit/client/server_proxy.rb
Instance Method Summary collapse
- #build_proxied_read_response ⇒ Object
- #build_proxied_search_response ⇒ Object
- #new_link ⇒ Object
- #proxy_client ⇒ Object
- #remove_transfer_encoding_and_content_length_header(headers) ⇒ Object
- #replace_bundle_urls(bundle) ⇒ Object
- #request_headers ⇒ Object
Instance Method Details
#build_proxied_read_response ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/us_core_test_kit/client/server_proxy.rb', line 24 def build_proxied_read_response resource_id = request.params[:resource_id] resource_type = request.params[:resource_type] request_params = request.params.to_h.except(:resource_id, :resource_type).stringify_keys server_response = proxy_client.get("#{resource_type}/#{resource_id}", request_params) response.status = server_response.status response.body = server_response.body response.headers.merge!(server_response.headers) remove_transfer_encoding_and_content_length_header(response.headers) response.headers.delete('content-location') if response.headers['content-location'].present? end |
#build_proxied_search_response ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/us_core_test_kit/client/server_proxy.rb', line 37 def build_proxied_search_response resource_type = request.params[:resource_type] request_params = request.params.to_h.except(:resource_type).stringify_keys server_response = proxy_client.get(resource_type, request_params) response.status = server_response.status response.body = if response.status == 200 replace_bundle_urls(FHIR.from_contents(server_response.body)).to_json else server_response.body end response.headers.merge!(server_response.headers) remove_transfer_encoding_and_content_length_header(response.headers) end |
#new_link ⇒ Object
70 71 72 |
# File 'lib/us_core_test_kit/client/server_proxy.rb', line 70 def new_link "#{Inferno::Application['base_url']}/custom/#{suite_id}/fhir" end |
#proxy_client ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/us_core_test_kit/client/server_proxy.rb', line 6 def proxy_client @proxy_client ||= Faraday.new( url: ENV.fetch('FHIR_REFERENCE_SERVER'), params: {}, headers: request_headers ) do |proxy| proxy.use FaradayMiddleware::Gzip proxy..params_encoder = Faraday::FlatParamsEncoder end end |
#remove_transfer_encoding_and_content_length_header(headers) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/us_core_test_kit/client/server_proxy.rb', line 52 def remove_transfer_encoding_and_content_length_header(headers) headers.delete('transfer-encoding') if headers['transfer-encoding'].present? headers.delete('Content-Length') if headers['Content-Length'].present? nil end |
#replace_bundle_urls(bundle) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/us_core_test_kit/client/server_proxy.rb', line 59 def replace_bundle_urls(bundle) reference_server_base = ENV.fetch('FHIR_REFERENCE_SERVER') bundle&.link&.map! { |link| { relation: link.relation, url: link.url.gsub(reference_server_base, new_link) } } bundle&.entry&.map! do |bundled_resource| { fullUrl: bundled_resource.fullUrl.gsub(reference_server_base, new_link), resource: bundled_resource.resource, search: bundled_resource.search } end bundle end |
#request_headers ⇒ Object
17 18 19 20 21 22 |
# File 'lib/us_core_test_kit/client/server_proxy.rb', line 17 def request_headers { 'Content-Type' => 'application/json', 'Authorization' => 'Bearer SAMPLE_TOKEN', } end |