Class: Ovh::Http2sms::Configuration

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

Overview

Configuration class for OVH HTTP2SMS gem

Examples:

Block configuration

Ovh::Http2sms.configure do |config|
  config. = "sms-xx11111-1"
  config. = "user"
  config.password = "secret"
end

Environment variables

# Set OVH_SMS_ACCOUNT, OVH_SMS_LOGIN, OVH_SMS_PASSWORD
Ovh::Http2sms.deliver(to: "33601020304", message: "Hello!")

Constant Summary collapse

ENV_PREFIX =

Environment variable prefix

"OVH_SMS_"
DEFAULTS =

Default values

{
  default_content_type: "application/json",
  timeout: 15,
  default_country_code: "33",
  raise_on_length_error: true,
  api_endpoint: "https://www.ovh.com/cgi-bin/sms/http2sms.cgi"
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



73
74
75
# File 'lib/ovh/http2sms/configuration.rb', line 73

def initialize
  reset!
end

Instance Attribute Details

#accountString?

Returns SMS account identifier (ex: sms-xx11111-1).

Returns:

  • (String, nil)

    SMS account identifier (ex: sms-xx11111-1)



20
21
22
# File 'lib/ovh/http2sms/configuration.rb', line 20

def 
  @account
end

#after_request_callbacksArray<Proc> (readonly)

Returns Callbacks executed after each request.

Returns:

  • (Array<Proc>)

    Callbacks executed after each request



53
54
55
# File 'lib/ovh/http2sms/configuration.rb', line 53

def after_request_callbacks
  @after_request_callbacks
end

#api_endpointString

Returns API endpoint URL.

Returns:

  • (String)

    API endpoint URL



47
48
49
# File 'lib/ovh/http2sms/configuration.rb', line 47

def api_endpoint
  @api_endpoint
end

#before_request_callbacksArray<Proc> (readonly)

Returns Callbacks executed before each request.

Returns:

  • (Array<Proc>)

    Callbacks executed before each request



50
51
52
# File 'lib/ovh/http2sms/configuration.rb', line 50

def before_request_callbacks
  @before_request_callbacks
end

#default_content_typeString

Returns Default response content type.

Returns:

  • (String)

    Default response content type



32
33
34
# File 'lib/ovh/http2sms/configuration.rb', line 32

def default_content_type
  @default_content_type
end

#default_country_codeString

Returns Default country code for phone number formatting.

Returns:

  • (String)

    Default country code for phone number formatting



41
42
43
# File 'lib/ovh/http2sms/configuration.rb', line 41

def default_country_code
  @default_country_code
end

#default_senderString?

Returns Default sender name.

Returns:

  • (String, nil)

    Default sender name



29
30
31
# File 'lib/ovh/http2sms/configuration.rb', line 29

def default_sender
  @default_sender
end

#loggerLogger?

Returns Optional logger for debugging.

Returns:

  • (Logger, nil)

    Optional logger for debugging



38
39
40
# File 'lib/ovh/http2sms/configuration.rb', line 38

def logger
  @logger
end

#loginString?

Returns SMS user login.

Returns:

  • (String, nil)

    SMS user login



23
24
25
# File 'lib/ovh/http2sms/configuration.rb', line 23

def 
  @login
end

#on_failure_callbacksArray<Proc> (readonly)

Returns Callbacks executed on failed delivery.

Returns:

  • (Array<Proc>)

    Callbacks executed on failed delivery



59
60
61
# File 'lib/ovh/http2sms/configuration.rb', line 59

def on_failure_callbacks
  @on_failure_callbacks
end

#on_success_callbacksArray<Proc> (readonly)

Returns Callbacks executed on successful delivery.

Returns:

  • (Array<Proc>)

    Callbacks executed on successful delivery



56
57
58
# File 'lib/ovh/http2sms/configuration.rb', line 56

def on_success_callbacks
  @on_success_callbacks
end

#passwordString?

Returns SMS user password.

Returns:

  • (String, nil)

    SMS user password



26
27
28
# File 'lib/ovh/http2sms/configuration.rb', line 26

def password
  @password
end

#raise_on_length_errorBoolean

Returns Whether to raise errors on message length violations.

Returns:

  • (Boolean)

    Whether to raise errors on message length violations



44
45
46
# File 'lib/ovh/http2sms/configuration.rb', line 44

def raise_on_length_error
  @raise_on_length_error
end

#timeoutInteger

Returns HTTP request timeout in seconds.

Returns:

  • (Integer)

    HTTP request timeout in seconds



35
36
37
# File 'lib/ovh/http2sms/configuration.rb', line 35

def timeout
  @timeout
end

Instance Method Details

#after_request {|Response| ... } ⇒ void

This method returns an undefined value.

Register a callback to be executed after each request

Examples:

Track metrics

config.after_request do |response|
  StatsD.increment("sms.sent", tags: ["status:#{response.status}"])
end

Yields:

  • (Response)

    The parsed response object



134
135
136
# File 'lib/ovh/http2sms/configuration.rb', line 134

def after_request(&block)
  @after_request_callbacks << block if block_given?
end

#before_request {|Hash| ... } ⇒ void

This method returns an undefined value.

Register a callback to be executed before each request

Examples:

Log all requests

config.before_request do |params|
  Rails.logger.info("Sending SMS to #{params[:to]}")
end

Yields:

  • (Hash)

    The request parameters (with password filtered)



121
122
123
# File 'lib/ovh/http2sms/configuration.rb', line 121

def before_request(&block)
  @before_request_callbacks << block if block_given?
end

#blank?(value) ⇒ Boolean

Returns:

  • (Boolean)


193
194
195
# File 'lib/ovh/http2sms/configuration.rb', line 193

def blank?(value)
  value.nil? || value.empty?
end

#build_validation_error_message(missing) ⇒ Object



197
198
199
200
201
# File 'lib/ovh/http2sms/configuration.rb', line 197

def build_validation_error_message(missing)
  env_vars = missing.map { |m| "#{ENV_PREFIX}#{m.upcase}" }.join(", ")
  "Missing required configuration: #{missing.join(", ")}. " \
    "Set via Ovh::Http2sms.configure block or environment variables (#{env_vars})"
end

#find_missing_credentialsObject



185
186
187
188
189
190
191
# File 'lib/ovh/http2sms/configuration.rb', line 185

def find_missing_credentials
  missing = []
  missing << "account" if blank?()
  missing << "login" if blank?()
  missing << "password" if blank?(password)
  missing
end

#initialize_dup(other) ⇒ Object

Ensure callbacks are properly duplicated



78
79
80
81
82
83
84
# File 'lib/ovh/http2sms/configuration.rb', line 78

def initialize_dup(other)
  super
  @before_request_callbacks = other.before_request_callbacks.dup
  @after_request_callbacks = other.after_request_callbacks.dup
  @on_success_callbacks = other.on_success_callbacks.dup
  @on_failure_callbacks = other.on_failure_callbacks.dup
end

#on_failure {|Response| ... } ⇒ void

This method returns an undefined value.

Register a callback to be executed on failed delivery

Examples:

Track failures

config.on_failure do |response|
  StatsD.increment("sms.failure", tags: ["error:#{response.error_type}"])
end

Yields:

  • (Response)

    The failed response object



161
162
163
# File 'lib/ovh/http2sms/configuration.rb', line 161

def on_failure(&block)
  @on_failure_callbacks << block if block_given?
end

#on_success {|Response| ... } ⇒ void

This method returns an undefined value.

Register a callback to be executed on successful delivery

Examples:

Track success

config.on_success do |response|
  StatsD.increment("sms.success")
  StatsD.gauge("sms.credits", response.credits_remaining)
end

Yields:

  • (Response)

    The successful response object



148
149
150
# File 'lib/ovh/http2sms/configuration.rb', line 148

def on_success(&block)
  @on_success_callbacks << block if block_given?
end

#reset!void

This method returns an undefined value.

Reset configuration to defaults and environment variables



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/ovh/http2sms/configuration.rb', line 89

def reset!
  # Set defaults
  DEFAULTS.each do |key, value|
    send("#{key}=", value)
  end

  # Clear credentials
  self. = nil
  self. = nil
  self.password = nil
  self.default_sender = nil
  self.logger = nil

  # Reset callbacks
  @before_request_callbacks = []
  @after_request_callbacks = []
  @on_success_callbacks = []
  @on_failure_callbacks = []

  # Load from environment variables
  load_from_env
end

#valid?Boolean

Check if the configuration is valid for making API requests

Returns:

  • (Boolean)

    true if required fields are present



168
169
170
171
172
# File 'lib/ovh/http2sms/configuration.rb', line 168

def valid?
  !.nil? && !.empty? &&
    !.nil? && !.empty? &&
    !password.nil? && !password.empty?
end

#validate!void

This method returns an undefined value.

Validate configuration and raise error if invalid

Raises:



178
179
180
181
182
183
# File 'lib/ovh/http2sms/configuration.rb', line 178

def validate!
  missing = find_missing_credentials
  return if missing.empty?

  raise ConfigurationError, build_validation_error_message(missing)
end