Class: InsightsCloud::Api::MachineTelemetriesController
- Inherits:
-
Api::V2::BaseController
- Object
- Api::V2::BaseController
- InsightsCloud::Api::MachineTelemetriesController
- Includes:
- CandlepinCache, ClientAuthentication
- Defined in:
- app/controllers/insights_cloud/api/machine_telemetries_controller.rb
Instance Method Summary collapse
- #assign_header(res, cloud_res, header, transform) ⇒ Object
- #branch_info ⇒ Object
-
#forward_request ⇒ Object
The method that “proxies” requests over to Cloud.
Methods included from CandlepinCache
#candlepin_id_cert, #cp_owner_id, #upstream_owner
Methods included from ClientAuthentication
#authorize, #client_authorized?, #subscribed_host_by_uuid, #valid_machine_user?
Instance Method Details
#assign_header(res, cloud_res, header, transform) ⇒ Object
67 68 69 70 71 72 |
# File 'app/controllers/insights_cloud/api/machine_telemetries_controller.rb', line 67 def assign_header(res, cloud_res, header, transform) header_content = cloud_res.headers[header] return unless header_content new_header = transform ? header.to_s.tr('_', '-') : header.to_s res.headers[new_header] = header_content end |
#branch_info ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'app/controllers/insights_cloud/api/machine_telemetries_controller.rb', line 57 def branch_info payload = nil User.as_anonymous_admin do payload = ForemanRhCloud::BranchInfo.new.generate(@uuid, @host, @branch_id, request.host).to_json end render :json => payload end |
#forward_request ⇒ Object
The method that “proxies” requests over to Cloud
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'app/controllers/insights_cloud/api/machine_telemetries_controller.rb', line 17 def forward_request certs = candlepin_id_cert @organization @cloud_response = ::ForemanRhCloud::CloudRequestForwarder.new.forward_request(request, controller_name, @branch_id, certs) if @cloud_response.code == 401 return render json: { :message => 'Authentication to the Insights Service failed.', :headers => {}, }, status: :bad_gateway end if @cloud_response.code >= 300 return render json: { :message => 'Cloud request failed', :headers => {}, :response => @cloud_response, }, status: @cloud_response.code end # Append redhat-specific headers @cloud_response.headers.each do |key, value| assign_header(response, @cloud_response, key, false) if key.to_s.start_with?('x_rh_') end # Append general headers assign_header(response, @cloud_response, :x_resource_count, true) headers[Rack::ETAG] = @cloud_response.headers[:etag] if @cloud_response.headers[:content_disposition] # If there is a Content-Disposition header, it means we are forwarding binary data, send the raw data with proper # content type send_data @cloud_response, disposition: @cloud_response.headers[:content_disposition], type: @cloud_response.headers[:content_type] elsif @cloud_response.headers[:content_type] =~ /zip/ # if there is no Content-Disposition, but the content type is binary according the content type, # forward the request as binry too send_data @cloud_response, type: @cloud_response.headers[:content_type] else render json: @cloud_response, status: @cloud_response.code end end |