Sha256: 675fb9a5ea17d3f45d1b3f8c1c0abc85b4e16d4d8315d1b2836cf46c768010fc

Contents?: true

Size: 1.55 KB

Versions: 25

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

module Motor
  class RunApiRequestsController < ApiBaseController
    JWT_TTL = 2.hours

    wrap_parameters :data

    def show
      respond_with_result
    end

    def create
      respond_with_result
    end

    private

    # rubocop:disable Metrics/AbcSize
    def respond_with_result
      response = Motor::ApiConfigs.run(find_or_initialize_api_config,
                                       method: request_params[:method],
                                       path: request_params[:path],
                                       body: request_params[:body],
                                       params: request_params[:params],
                                       headers: { 'Authorization' => "Bearer #{current_user_jwt}" })
      response.to_hash.each do |key, (value)|
        next if key.casecmp('transfer-encoding').zero?

        headers[key] = value
      end

      self.response_body = response.body
      self.status = response.code.to_i
    end
    # rubocop:enable Metrics/AbcSize

    def find_or_initialize_api_config
      Motor::ApiConfig.find_by(name: request_params[:api_config_name]) ||
        Motor::ApiConfig.new(url: request_params[:api_config_name])
    end

    def current_user_jwt
      return '' unless defined?(JWT)
      return '' unless current_user

      payload = { uid: current_user.id, email: current_user.email, exp: JWT_TTL.from_now.to_i }

      JWT.encode(payload, Rails.application.credentials.secret_key_base)
    end

    def request_params
      params.require(:data).permit!
    end
  end
end

Version data entries

25 entries across 25 versions & 4 rubygems

Version Path
motor-admin-0.4.36 app/controllers/motor/run_api_requests_controller.rb
motor-admin-0.4.35 app/controllers/motor/run_api_requests_controller.rb
motor-admin-0.4.34 app/controllers/motor/run_api_requests_controller.rb
motor-admin-0.4.33 app/controllers/motor/run_api_requests_controller.rb
motor-admin-0.4.32 app/controllers/motor/run_api_requests_controller.rb
motor-admin-0.4.31 app/controllers/motor/run_api_requests_controller.rb
motor-admin-0.4.30 app/controllers/motor/run_api_requests_controller.rb
motor-admin-0.4.29 app/controllers/motor/run_api_requests_controller.rb
motor-admin-0.4.28 app/controllers/motor/run_api_requests_controller.rb
motor-admin-cstham8-0.4.35 app/controllers/motor/run_api_requests_controller.rb
motor-admin-cstham8-0.4.34 app/controllers/motor/run_api_requests_controller.rb
motor-admin-cstham8-0.4.33 app/controllers/motor/run_api_requests_controller.rb
motor-admin-cstham8-0.4.32 app/controllers/motor/run_api_requests_controller.rb
motor-admin-cstham8-0.4.31 app/controllers/motor/run_api_requests_controller.rb
motor-admin-cstham8-0.4.30 app/controllers/motor/run_api_requests_controller.rb
motor-admin-cstham8-0.4.29 app/controllers/motor/run_api_requests_controller.rb
motor-admin-cstham8-0.4.28 app/controllers/motor/run_api_requests_controller.rb
motor-admin-cstham8-0.4.27 app/controllers/motor/run_api_requests_controller.rb
motor-admin-0.4.27 app/controllers/motor/run_api_requests_controller.rb
motor-admin-unosquare-0.4.28 app/controllers/motor/run_api_requests_controller.rb