Class: Mercadopago::RequestOptions

Inherits:
Object
  • Object
show all
Defined in:
lib/mercadopago/config/request_options.rb

Overview

Encapsulates per-request configuration: authentication, timeouts, retry policy, and optional MercadoPago partner/platform headers.

An instance is created automatically by SDK#initialize but can also be built manually and passed to individual resource calls via the request_options: keyword to override the SDK defaults.

Examples:

Override timeout for a single call

opts = Mercadopago::RequestOptions.new(access_token: token, connection_timeout: 120.0)
sdk.payment.get(123, request_options: opts)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(access_token: nil, connection_timeout: 60.0, custom_headers: nil, corporation_id: nil, integrator_id: nil, platform_id: nil, max_retries: 3) ⇒ RequestOptions

Builds a new request configuration.

Parameters:

  • access_token (String, nil) (defaults to: nil)

    OAuth access token

  • connection_timeout (Float) (defaults to: 60.0)

    HTTP timeout in seconds

  • custom_headers (Hash, nil) (defaults to: nil)

    additional headers to include

  • corporation_id (String, nil) (defaults to: nil)

    corporation identifier for partner integrations

  • integrator_id (String, nil) (defaults to: nil)

    integrator identifier for certified partners

  • platform_id (String, nil) (defaults to: nil)

    platform identifier for marketplace integrations

  • max_retries (Integer) (defaults to: 3)

    retry limit for transient failures (429, 5xx)

Raises:

  • (TypeError)

    if any parameter is not the expected type



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/mercadopago/config/request_options.rb', line 43

def initialize(access_token: nil,
               connection_timeout: 60.0,
               custom_headers: nil,
               corporation_id: nil,
               integrator_id: nil,
               platform_id: nil,
               max_retries: 3)
  self.access_token = access_token
  self.connection_timeout = connection_timeout
  self.custom_headers = custom_headers
  self.corporation_id = corporation_id
  self.integrator_id = integrator_id
  self.platform_id = platform_id
  self.max_retries = max_retries

  @config = Config.new
end

Instance Attribute Details

#access_tokenString?

Returns OAuth access token used for Bearer authentication.

Returns:

  • (String, nil)

    OAuth access token used for Bearer authentication



30
31
32
# File 'lib/mercadopago/config/request_options.rb', line 30

def access_token
  @access_token
end

#connection_timeoutFloat

Returns HTTP timeout in seconds (default: 60.0).

Returns:

  • (Float)

    HTTP timeout in seconds (default: 60.0)



30
31
# File 'lib/mercadopago/config/request_options.rb', line 30

attr_reader :access_token, :connection_timeout, :custom_headers, :corporation_id, :integrator_id,
:platform_id, :max_retries

#corporation_idString?

Returns MercadoPago corporation identifier (x-corporation-id header).

Returns:

  • (String, nil)

    MercadoPago corporation identifier (x-corporation-id header)



30
31
# File 'lib/mercadopago/config/request_options.rb', line 30

attr_reader :access_token, :connection_timeout, :custom_headers, :corporation_id, :integrator_id,
:platform_id, :max_retries

#custom_headersHash?

Returns extra headers merged into every request.

Returns:

  • (Hash, nil)

    extra headers merged into every request



30
31
# File 'lib/mercadopago/config/request_options.rb', line 30

attr_reader :access_token, :connection_timeout, :custom_headers, :corporation_id, :integrator_id,
:platform_id, :max_retries

#integrator_idString?

Returns MercadoPago integrator identifier (x-integrator-id header).

Returns:

  • (String, nil)

    MercadoPago integrator identifier (x-integrator-id header)



30
31
# File 'lib/mercadopago/config/request_options.rb', line 30

attr_reader :access_token, :connection_timeout, :custom_headers, :corporation_id, :integrator_id,
:platform_id, :max_retries

#max_retriesObject

Returns the value of attribute max_retries.



30
31
# File 'lib/mercadopago/config/request_options.rb', line 30

attr_reader :access_token, :connection_timeout, :custom_headers, :corporation_id, :integrator_id,
:platform_id, :max_retries

#platform_idString?

Returns MercadoPago platform identifier (x-platform-id header).

Returns:

  • (String, nil)

    MercadoPago platform identifier (x-platform-id header)



30
31
# File 'lib/mercadopago/config/request_options.rb', line 30

attr_reader :access_token, :connection_timeout, :custom_headers, :corporation_id, :integrator_id,
:platform_id, :max_retries

Instance Method Details

#get_headersHash

Builds the full HTTP headers hash for a request.

Includes authorization, tracking, idempotency, user-agent, and any optional partner/custom headers. A unique idempotency key (UUID v4) is generated on every call.

Returns:

  • (Hash)

    merged headers ready to be sent with the HTTP request



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/mercadopago/config/request_options.rb', line 68

def get_headers
  headers = { 'Authorization': "Bearer #{@access_token}",
              'x-product-id' => @config.product_id,
              'x-tracking-id' => @config.tracking_id,
              'x-idempotency-key' => SecureRandom.uuid,
              'User-Agent' => @config.user_agent,
              'Accept': @config.mime_json }

  headers['x-corporation-id'] = @corporation_id unless @corporation_id.nil?
  headers['x-integrator-id'] = @integrator_id unless @integrator_id.nil?
  headers['x-platform-id'] = @platform_id unless @platform_id.nil?

  headers.merge!(@custom_headers) unless @custom_headers.nil?

  headers
end