Class: V0::HealthRecordContentsController

Inherits:
BBController show all
Includes:
ActionController::Live
Defined in:
app/controllers/v0/health_record_contents_controller.rb

Constant Summary collapse

REPORT_HEADERS =
%w[Content-Type Content-Disposition].freeze

Constants inherited from ApplicationController

ApplicationController::VERSION_STATUS

Constants included from SignIn::Authentication

SignIn::Authentication::BEARER_PATTERN

Constants included from ExceptionHandling

ExceptionHandling::SKIP_SENTRY_EXCEPTION_TYPES

Instance Method Summary collapse

Methods inherited from BBController

#authorize, #client, #raise_access_denied

Methods included from MHVControllerConcerns

#authenticate_client

Methods inherited from ApplicationController

#clear_saved_form, #cors_preflight, #routing_error

Methods included from Traceable

#set_trace_tags

Methods included from SentryLogging

#log_exception_to_sentry, #log_message_to_sentry, #non_nil_hash?, #normalize_level, #rails_logger

Methods included from SignIn::Authentication

#authenticate, #authenticate_service_account, #load_user

Methods included from Headers

#block_unknown_hosts, #set_app_info_headers

Methods included from AuthenticationAndSSOConcerns

#authenticate, #clear_session, #extend_session!, #load_user, #log_sso_info, #render_unauthorized, #reset_session, #set_api_cookie!, #set_session_expiration_header, #sso_logging_info, #validate_inbound_login_params, #validate_session

Instance Method Details

#showObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/controllers/v0/health_record_contents_controller.rb', line 9

def show
  # doc_type will default to 'pdf' if any value, including nil is provided.
  doc_type = params[:doc_type] == 'txt' ? 'txt' : 'pdf'
  header_callback = lambda do |headers|
    headers.each { |k, v| response[k] = v if REPORT_HEADERS.include? k }
  end
  begin
    chunk_stream = Enumerator.new do |stream|
      client.get_download_report(doc_type, header_callback, stream)
    end
    chunk_stream.each { |c| response.stream.write c }
  ensure
    response.stream.close if response.committed?
  end
end