Class: Square::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/square/configuration.rb

Overview

All configuration including auth info and base URI for the API access are configured in this class.

Constant Summary collapse

ENVIRONMENTS =

All the environments the SDK can run in.

{
  'production' => {
    'default' => 'https://connect.squareup.com'
  },
  'sandbox' => {
    'default' => 'https://connect.squareupsandbox.com'
  },
  'custom' => {
    'default' => '{custom_url}'
  }
}.freeze

Class Attribute Summary collapse

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection: nil, adapter: :net_http_persistent, timeout: 60, max_retries: 0, retry_interval: 1, backoff_factor: 2, retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524], retry_methods: %i[get put], environment: 'production', custom_url: 'https://connect.squareup.com', square_version: '2022-09-21', access_token: '', user_agent_detail: '', additional_headers: {}) ⇒ Configuration

Returns a new instance of Configuration.



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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/square/configuration.rb', line 18

def initialize(connection: nil, adapter: :net_http_persistent, timeout: 60,
               max_retries: 0, retry_interval: 1, backoff_factor: 2,
               retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
               retry_methods: %i[get put], environment: 'production',
               custom_url: 'https://connect.squareup.com',
               square_version: '2022-09-21', access_token: '',
               user_agent_detail: '', additional_headers: {})
  # The Faraday connection object passed by the SDK user for making requests
  @connection = connection

  # The Faraday adapter object passed by the SDK user for performing http requests
  @adapter = adapter

  # The value to use for connection timeout
  @timeout = timeout

  # The number of times to retry an endpoint call if it fails
  @max_retries = max_retries

  # Pause in seconds between retries
  @retry_interval = retry_interval

  # The amount to multiply each successive retry's interval amount
  # by in order to provide backoff
  @backoff_factor = backoff_factor

  # A list of HTTP statuses to retry
  @retry_statuses = retry_statuses

  # A list of HTTP methods to retry
  @retry_methods = retry_methods

  # Current API environment
  @environment = String(environment)

  # Sets the base URL requests are made to. Defaults to `https://connect.squareup.com`
  @custom_url = custom_url

  # Square Connect API versions
  @square_version = square_version

  # The OAuth 2.0 Access Token to use for API requests.
  @access_token = access_token

  # Additional headers to add to each API request
  @additional_headers = additional_headers.clone

  # The Http Client to use for making requests.
  @http_client = create_http_client

  # User agent detail, to be appended with user-agent header.
  @user_agent_detail = get_user_agent(user_agent_detail)
end

Class Attribute Details

.environmentsObject (readonly)

Returns the value of attribute environments.



15
16
17
# File 'lib/square/configuration.rb', line 15

def environments
  @environments
end

Instance Attribute Details

#access_tokenObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def access_token
  @access_token
end

#adapterObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def adapter
  @adapter
end

#backoff_factorObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def backoff_factor
  @backoff_factor
end

#connectionObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def connection
  @connection
end

#custom_urlObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def custom_url
  @custom_url
end

#environmentObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def environment
  @environment
end

#http_clientObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def http_client
  @http_client
end

#max_retriesObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def max_retries
  @max_retries
end

#retry_intervalObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def retry_interval
  @retry_interval
end

#retry_methodsObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def retry_methods
  @retry_methods
end

#retry_statusesObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def retry_statuses
  @retry_statuses
end

#square_versionObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def square_version
  @square_version
end

#timeoutObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def timeout
  @timeout
end

#user_agent_detailObject (readonly)

The attribute readers for properties.



6
7
8
# File 'lib/square/configuration.rb', line 6

def user_agent_detail
  @user_agent_detail
end

Instance Method Details

#additional_headersObject



10
11
12
# File 'lib/square/configuration.rb', line 10

def additional_headers
  @additional_headers.clone
end

#clone_with(connection: nil, adapter: nil, timeout: nil, max_retries: nil, retry_interval: nil, backoff_factor: nil, retry_statuses: nil, retry_methods: nil, environment: nil, custom_url: nil, square_version: nil, access_token: nil, user_agent_detail: nil, additional_headers: nil) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/square/configuration.rb', line 72

def clone_with(connection: nil, adapter: nil, timeout: nil,
               max_retries: nil, retry_interval: nil, backoff_factor: nil,
               retry_statuses: nil, retry_methods: nil, environment: nil,
               custom_url: nil, square_version: nil, access_token: nil,
               user_agent_detail: nil, additional_headers: nil)
  connection ||= self.connection
  adapter ||= self.adapter
  timeout ||= self.timeout
  max_retries ||= self.max_retries
  retry_interval ||= self.retry_interval
  backoff_factor ||= self.backoff_factor
  retry_statuses ||= self.retry_statuses
  retry_methods ||= self.retry_methods
  environment ||= self.environment
  custom_url ||= self.custom_url
  square_version ||= self.square_version
  access_token ||= self.access_token
  user_agent_detail ||= self.user_agent_detail
  additional_headers ||= self.additional_headers

  Configuration.new(connection: connection, adapter: adapter,
                    timeout: timeout, max_retries: max_retries,
                    retry_interval: retry_interval,
                    backoff_factor: backoff_factor,
                    retry_statuses: retry_statuses,
                    retry_methods: retry_methods, environment: environment,
                    custom_url: custom_url, square_version: square_version,
                    access_token: access_token,
                    user_agent_detail: user_agent_detail,
                    additional_headers: additional_headers)
end

#create_http_clientObject



104
105
106
107
108
109
110
111
# File 'lib/square/configuration.rb', line 104

def create_http_client
  FaradayClient.new(timeout: timeout, max_retries: max_retries,
                    retry_interval: retry_interval,
                    backoff_factor: backoff_factor,
                    retry_statuses: retry_statuses,
                    retry_methods: retry_methods, connection: connection,
                    adapter: adapter)
end

#get_base_uri(server = 'default') ⇒ String

Generates the appropriate base URI for the environment and the server. required.

Parameters:

  • The (Configuration::Server)

    server enum for which the base URI is

Returns:

  • (String)

    The base URI.



136
137
138
139
140
141
142
143
# File 'lib/square/configuration.rb', line 136

def get_base_uri(server = 'default')
  parameters = {
    'custom_url' => { 'value' => custom_url, 'encode' => false }
  }
  APIHelper.append_url_with_template_parameters(
    ENVIRONMENTS[environment][server], parameters
  )
end

#get_user_agent(user_agent_detail) ⇒ Object

Raises:

  • (ArgumentError)


113
114
115
116
117
# File 'lib/square/configuration.rb', line 113

def get_user_agent(user_agent_detail)
  raise ArgumentError, 'The length of user-agent detail should not exceed 128 characters.' unless user_agent_detail.length < 128

  user_agent_detail
end