Class: SerwerSMS::ClientFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/serwersms/client_factory.rb

Constant Summary collapse

USERNAME_KEY =
'SERWERSMS_USERNAME'
PASSWORD_KEY =
'SERWERSMS_PASSWORD'
TOKEN_KEY =
'SERWERSMS_TOKEN'
API_URL_KEY =
'SERWERSMS_API_URL'
TIMEOUT_KEY =
'SERWERSMS_TIMEOUT'

Class Method Summary collapse

Class Method Details

.build_client(token:, username:, password:, **opts) ⇒ Object



66
67
68
69
70
71
72
73
74
# File 'lib/serwersms/client_factory.rb', line 66

def self.build_client(token:, username:, password:, **opts)
  if !token.to_s.strip.empty?
    ClientToken.new(token: token, **opts)
  elsif !username.to_s.strip.empty? && !password.to_s.strip.empty?
    ClientCredentials.new(username: username, password: password, **opts)
  else
    raise SerwerSMS::Error, 'Wymagany SERWERSMS_TOKEN lub para SERWERSMS_USERNAME + SERWERSMS_PASSWORD'
  end
end

.from_envObject

Tworzy klienta na podstawie zmiennych środowiskowych.

Przykład:

SerwerSMS::ClientFactory.from_env


16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/serwersms/client_factory.rb', line 16

def self.from_env
  opts = {}
  opts[:api_url] = ENV[API_URL_KEY]      if ENV[API_URL_KEY]
  opts[:timeout] = ENV[TIMEOUT_KEY].to_i if ENV[TIMEOUT_KEY]

  build_client(
    token:    ENV[TOKEN_KEY],
    username: ENV[USERNAME_KEY],
    password: ENV[PASSWORD_KEY],
    **opts
  )
end

.from_yaml(yaml_file) ⇒ Object

Tworzy klienta na podstawie pliku YAML.

Przykład pliku config/serwersms.yml:

# Opcja 1 - autentykacja przez token (zalecana)
serwersms_token: 'twoj_token'

# Opcja 2 - autentykacja przez login i hasło
# serwersms_username: 'twoj_login'
# serwersms_password: 'twoje_haslo'

# Opcjonalne
# serwersms_api_url: 'https://api2.serwersms.pl'
# serwersms_timeout: 30

Przykład użycia:

SerwerSMS::ClientFactory.from_yaml('config/serwersms.yml')

Raises:



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/serwersms/client_factory.rb', line 47

def self.from_yaml(yaml_file)
  raise SerwerSMS::Error, "Config file not found: #{yaml_file}" unless File.exist?(yaml_file)

  cfg = YAML.safe_load_file(yaml_file) || {}

  opts = {}
  opts[:api_url] = cfg['serwersms_api_url'] if cfg['serwersms_api_url']
  opts[:timeout] = cfg['serwersms_timeout'] if cfg['serwersms_timeout']

  build_client(
    token:    cfg['serwersms_token'],
    username: cfg['serwersms_username'],
    password: cfg['serwersms_password'],
    **opts
  )
end