class SensSms::Client
Attributes
errors[R]
request_time[R]
response[R]
status[R]
timestamp[R]
Public Class Methods
configuration()
click to toggle source
# File lib/sens_sms/client.rb, line 33 def self.configuration @configuration ||= SensSms::Configure.new end
configure() { |configuration| ... }
click to toggle source
# File lib/sens_sms/client.rb, line 26 def self.configure yield configuration @@access_key = @configuration.access_key @@service_id = @configuration.service_id @@secret_key = @configuration.secret_key end
new()
click to toggle source
# File lib/sens_sms/client.rb, line 5 def initialize raise 'Configure is not valid.' unless validate_configure end
Public Instance Methods
deliver(type:, from_number:, to_numbers:, subject: nil, message:)
click to toggle source
# File lib/sens_sms/client.rb, line 9 def deliver(type:, from_number:, to_numbers:, subject: nil, message:) raise "Invalid message type: #{type}" unless %i[sms lms].include? type.to_sym @timestamp = current_timestamp @response = HTTP.headers(ncloud_sens_api_header) .post(ncloud_sens_api_url, json: { type: type.to_sym, contentType: :COMM, countryCode: '82', from: from_number, subject: subject, content: message, messages: parsed_messages(to_numbers) }) @status = response.status parse_response end
Private Instance Methods
current_timestamp()
click to toggle source
# File lib/sens_sms/client.rb, line 56 def current_timestamp (Time.now.to_f.round(3) * 1000).to_i end
ncloud_sens_api_header()
click to toggle source
# File lib/sens_sms/client.rb, line 64 def ncloud_sens_api_header { 'Content-Type': 'application/json; charset=utf-8', 'x-ncp-apigw-timestamp': @timestamp, 'x-ncp-apigw-signature-v2': signature, 'x-ncp-iam-access-key': access_key } end
ncloud_sens_api_url()
click to toggle source
# File lib/sens_sms/client.rb, line 60 def ncloud_sens_api_url @ncloud_sens_api_url ||= "https://sens.apigw.ntruss.com/sms/v2/services/#{service_id}/messages" end
parse_errors()
click to toggle source
# File lib/sens_sms/client.rb, line 51 def parse_errors @errors = response.parse['errors'] if response.parse.key? 'errors' @errors = [response.parse['error']['message']] if response.parse.key? 'error' end
parse_response()
click to toggle source
# File lib/sens_sms/client.rb, line 42 def parse_response if status.success? @request_time = Time.parse(response.parse['requestTime']) else parse_errors end status.success? end
parsed_messages(to_numbers)
click to toggle source
# File lib/sens_sms/client.rb, line 78 def parsed_messages(to_numbers) Array(to_numbers).map { |to_number| { to: to_number } } end
signature()
click to toggle source
# File lib/sens_sms/client.rb, line 71 def signature sms_uri = "/sms/v2/services/#{service_id}/messages".freeze data = "POST #{sms_uri}\n#{@timestamp}\n#{access_key}".freeze Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), secret_key, data)).strip end