class Braintree::Configuration

Constants

API_VERSION
DEFAULT_ENDPOINT
GRAPHQL_API_VERSION

NEXT_MAJOR_VERSION update to the latest version of GraphQL API

NON_REQUIRED_READABLE_ATTRIBUTES
READABLE_ATTRIBUTES
WRITABLE_ATTRIBUTES

Public Class Methods

_default_logger() click to toggle source
# File lib/braintree/configuration.rb, line 288
def self._default_logger
  logger = Logger.new(STDOUT)
  logger.level = Logger::INFO
  logger
end
environment=(env) click to toggle source
# File lib/braintree/configuration.rb, line 62
def self.environment=(env)
  env = env.to_sym
  unless [:development, :qa, :sandbox, :production].include?(env)
    raise ArgumentError, "#{env.inspect} is not a valid environment"
  end
  @environment = env
end
expectant_reader(*attributes) click to toggle source
# File lib/braintree/configuration.rb, line 51
def self.expectant_reader(*attributes)
  attributes.each do |attribute|
    (class << self; self; end).send(:define_method, attribute) do
      attribute_value = instance_variable_get("@#{attribute}")
      raise ConfigurationError.new("Braintree::Configuration.#{attribute} needs to be set") if attribute_value.nil? || attribute_value.to_s.empty?
      attribute_value
    end
  end
end
gateway() click to toggle source
# File lib/braintree/configuration.rb, line 70
def self.gateway
  Braintree::Gateway.new(instantiate)
end
http_open_timeout() click to toggle source
# File lib/braintree/configuration.rb, line 93
def self.http_open_timeout
  @http_open_timeout ||= 60
end
http_read_timeout() click to toggle source
# File lib/braintree/configuration.rb, line 97
def self.http_read_timeout
  @http_read_timeout ||= 60
end
instantiate() click to toggle source
# File lib/braintree/configuration.rb, line 74
def self.instantiate
  new(
    :custom_user_agent => @custom_user_agent,
    :endpoint => @endpoint,
    :environment => environment,
    :http_open_timeout => http_open_timeout,
    :http_read_timeout => http_read_timeout,
    :logger => logger,
    :merchant_id => merchant_id,
    :private_key => private_key,
    :public_key => public_key,
    :proxy_address => proxy_address,
    :proxy_port => proxy_port,
    :proxy_user => proxy_user,
    :proxy_pass => proxy_pass,
    :ssl_version => ssl_version,
  )
end
logger() click to toggle source
# File lib/braintree/configuration.rb, line 101
def self.logger
  @logger ||= _default_logger
end
new(options = {}) click to toggle source
# File lib/braintree/configuration.rb, line 113
def initialize(options = {})
  WRITABLE_ATTRIBUTES.each do |attr|
    instance_variable_set "@#{attr}", options[attr]
  end

  @environment = @environment.to_sym if @environment

  _check_for_mixed_credentials(options)

  parser = Braintree::CredentialsParser.new
  if options[:client_id] || options[:client_secret]
    parser.parse_client_credentials(options[:client_id], options[:client_secret])
    @client_id = parser.client_id
    @client_secret = parser.client_secret
    @environment = parser.environment
  elsif options[:access_token]
    parser.parse_access_token(options[:access_token])

    _check_for_mixed_environment(options[:environment], parser.environment)

    @access_token = parser.access_token
    @environment = parser.environment
    @merchant_id = parser.merchant_id
  else
    @merchant_id = options[:merchant_id] || options[:partner_id]
  end
end
sha256_signature_service() click to toggle source
# File lib/braintree/configuration.rb, line 109
def self.sha256_signature_service
  instantiate.sha256_signature_service
end
signature_service() click to toggle source
# File lib/braintree/configuration.rb, line 105
def self.signature_service
  instantiate.signature_service
end

Public Instance Methods

_check_for_mixed_credentials(options) click to toggle source
# File lib/braintree/configuration.rb, line 141
def _check_for_mixed_credentials(options)
  if (options[:client_id] || options[:client_secret]) && (options[:public_key] || options[:private_key])
    raise ConfigurationError.new("Braintree::Gateway cannot be initialized with mixed credential types: client_id and client_secret mixed with public_key and private_key.")
  end

  if (options[:client_id] || options[:client_secret]) && (options[:access_token])
    raise ConfigurationError.new("Braintree::Gateway cannot be initialized with mixed credential types: client_id and client_secret mixed with access_token.")
  end

  if (options[:public_key] || options[:private_key]) && (options[:access_token])
    raise ConfigurationError.new("Braintree::Gateway cannot be initialized with mixed credential types: public_key and private_key mixed with access_token.")
  end
end
_check_for_mixed_environment(options_environment, token_environment) click to toggle source
# File lib/braintree/configuration.rb, line 155
def _check_for_mixed_environment(options_environment, token_environment)
  if options_environment && options_environment.to_sym != token_environment.to_sym
    warn "Braintree::Gateway should not be initialized with mixed environments: environment parameter and access_token do not match, environment from access_token is used."
  end
end
api_version() click to toggle source
# File lib/braintree/configuration.rb, line 161
def api_version
  API_VERSION
end
assert_has_access_token_or_keys() click to toggle source
# File lib/braintree/configuration.rb, line 308
def assert_has_access_token_or_keys
  if (public_key.nil? || private_key.nil?) && access_token.nil?
    raise ConfigurationError.new("Braintree::Gateway access_token or public_key and private_key are required.")
  end
end
assert_has_client_credentials() click to toggle source
# File lib/braintree/configuration.rb, line 302
def assert_has_client_credentials
  if client_id.nil? || client_secret.nil?
    raise ConfigurationError.new("Braintree::Gateway client_id and client_secret are required.")
  end
end
auth_url() click to toggle source
# File lib/braintree/configuration.rb, line 261
def auth_url
  case @environment
  when :development, :integration
    "http://auth.venmo.dev:9292"
  when :production
    "https://auth.venmo.com"
  when :qa
    "https://auth.venmo.qa2.braintreegateway.com"
  when :sandbox
    "https://auth.venmo.sandbox.braintreegateway.com"
  end
end
base_merchant_path() click to toggle source
# File lib/braintree/configuration.rb, line 169
def base_merchant_path
  "/merchants/#{merchant_id}"
end
base_merchant_url() click to toggle source
# File lib/braintree/configuration.rb, line 181
def base_merchant_url
  "#{base_url}#{base_merchant_path}"
end
base_url() click to toggle source
# File lib/braintree/configuration.rb, line 173
def base_url
  "#{protocol}://#{server}:#{port}"
end
ca_file() click to toggle source
# File lib/braintree/configuration.rb, line 185
def ca_file
  File.expand_path(File.join(File.dirname(__FILE__), "..", "ssl", "api_braintreegateway_com.ca.crt"))
end
client_credentials?() click to toggle source
# File lib/braintree/configuration.rb, line 298
def client_credentials?
  !client_id.nil?
end
endpoint() click to toggle source
# File lib/braintree/configuration.rb, line 189
def endpoint
  @endpoint || DEFAULT_ENDPOINT
end
graphql_api_version() click to toggle source
# File lib/braintree/configuration.rb, line 165
def graphql_api_version
  GRAPHQL_API_VERSION
end
graphql_base_url() click to toggle source
# File lib/braintree/configuration.rb, line 177
def graphql_base_url
  "#{protocol}://#{graphql_server}:#{graphql_port}/graphql"
end
graphql_client() click to toggle source
# File lib/braintree/configuration.rb, line 197
def graphql_client
  GraphQLClient.new(self)
end
graphql_port() click to toggle source
# File lib/braintree/configuration.rb, line 214
def graphql_port
  case @environment
  when :development, :integration
    ENV["GRAPHQL_PORT"] || 8080
  when :production, :qa, :sandbox
    443
  end
end
graphql_server() click to toggle source
# File lib/braintree/configuration.rb, line 248
def graphql_server
  case @environment
  when :development, :integration
    ENV["GRAPHQL_HOST"] || "graphql.bt.local"
  when :production
    "payments.braintree-api.com"
  when :qa
    "payments-qa.dev.braintree-api.com"
  when :sandbox
    "payments.sandbox.braintree-api.com"
  end
end
http() click to toggle source
# File lib/braintree/configuration.rb, line 193
def http
  Http.new(self)
end
http_open_timeout() click to toggle source
# File lib/braintree/configuration.rb, line 227
def http_open_timeout
  @http_open_timeout
end
http_read_timeout() click to toggle source
# File lib/braintree/configuration.rb, line 231
def http_read_timeout
  @http_read_timeout
end
inspect() click to toggle source
Calls superclass method
# File lib/braintree/configuration.rb, line 294
def inspect
  super.gsub(/@private_key=\".*\"/, '@private_key="[FILTERED]"')
end
logger() click to toggle source
# File lib/braintree/configuration.rb, line 201
def logger
  @logger ||= self.class._default_logger
end
port() click to toggle source
# File lib/braintree/configuration.rb, line 205
def port
  case @environment
  when :development, :integration
    ENV["GATEWAY_PORT"] || 3000
  when :production, :qa, :sandbox
    443
  end
end
protocol() click to toggle source
# File lib/braintree/configuration.rb, line 223
def protocol
  ssl? ? "https" : "http"
end
server() click to toggle source
# File lib/braintree/configuration.rb, line 235
def server
  case @environment
  when :development, :integration
    ENV["GATEWAY_HOST"] || "localhost"
  when :production
    "#{endpoint}.braintreegateway.com"
  when :qa
    "gateway.qa.braintreepayments.com"
  when :sandbox
    "api.sandbox.braintreegateway.com"
  end
end
sha256_signature_service() click to toggle source
# File lib/braintree/configuration.rb, line 318
def sha256_signature_service
  @sha256_signature_service ||= SignatureService.new(@private_key, SHA256Digest)
end
signature_service() click to toggle source
# File lib/braintree/configuration.rb, line 314
def signature_service
  @signature_service ||= SignatureService.new(@private_key)
end
ssl?() click to toggle source
# File lib/braintree/configuration.rb, line 274
def ssl?
  case @environment
  when :development, :integration
    false
  when :production, :qa, :sandbox
    true
  end
end
user_agent() click to toggle source
# File lib/braintree/configuration.rb, line 283
def user_agent
  base_user_agent = "Braintree Ruby Gem #{Braintree::Version::String}"
  @custom_user_agent ? "#{base_user_agent} (#{@custom_user_agent})" : base_user_agent
end