Sha256: 20e7df5d020378554cdbd3e5f54f1cc86d688aa52d2ac1e47df6ac28c5c49807

Contents?: true

Size: 1.02 KB

Versions: 89

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module Motor
  module ApiConfigs
    METHODS = %w[get post put delete].freeze

    DEFAULT_HEADERS = { 'Content-Type' => 'application/json' }.freeze

    InvalidHttpMethod = Class.new(StandardError)

    module_function

    def run(api_config, method: nil, path: nil, body: nil, params: {}, headers: {})
      method ||= 'get'

      raise InvalidHttpMethod unless METHODS.include?(method.downcase)

      Motor::NetHttpUtils.public_send(
        method.downcase.to_sym,
        api_config.url.to_s.sub(%r{/?\z}, '/') + path.delete_prefix('/'),
        params,
        DEFAULT_HEADERS.merge(headers).merge(api_config.headers),
        body&.to_json
      )
    end

    def run_grapql(api_config, query:, variables: {}, headers: {})
      body = {
        query: query,
        variables: variables.merge(form_data: variables)
      }

      Motor::NetHttpUtils.post(
        api_config.url,
        {},
        DEFAULT_HEADERS.merge(headers).merge(api_config.headers),
        body.to_json
      )
    end
  end
end

Version data entries

89 entries across 89 versions & 7 rubygems

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