class Phaxio::Resources::Callback
Provides utilities for working with callbacks. @see www.phaxio.com/docs/api/v2/faxes/send_callback @see www.phaxio.com/docs/api/v2/faxes/receive_callback
Constants
- DIGEST
Public Class Methods
valid_signature?(signature, url, params, files = [])
click to toggle source
Determines whether or not the passed signature is valid for the given url, params, and files. @param signature [String]
The signature received from Phaxio.
@param url [String]
The callback URL used in this request.
@param params [Hash]
The parameters received with the callback, excluding files.
@param files [Array<File>]
The files received with the callback, if any.
@return [true, false] @raise [Phaxio::Error::PhaxioError] @see www.phaxio.com/docs/security/callbacks
# File lib/phaxio/resources/callback.rb, line 24 def valid_signature? signature, url, params, files = [] check_signature = generate_check_signature url, params, files check_signature == signature end
Private Class Methods
callback_token()
click to toggle source
# File lib/phaxio/resources/callback.rb, line 38 def callback_token Phaxio.callback_token or raise(Error::PhaxioError, 'No callback token has been set') end
files_to_array(files)
click to toggle source
# File lib/phaxio/resources/callback.rb, line 55 def files_to_array(files) files.is_a?(Array) ? files : [files] end
generate_check_signature(url, params, files = [])
click to toggle source
# File lib/phaxio/resources/callback.rb, line 31 def generate_check_signature url, params, files = [] params_string = generate_params_string(params) files_string = generate_files_string(files) callback_data = "#{url}#{params_string}#{files_string}" OpenSSL::HMAC.hexdigest(DIGEST, callback_token, callback_data) end
generate_file_string(file)
click to toggle source
# File lib/phaxio/resources/callback.rb, line 59 def generate_file_string(file) file[:name] + DIGEST.hexdigest(file[:tempfile].read) end
generate_files_string(files)
click to toggle source
# File lib/phaxio/resources/callback.rb, line 48 def generate_files_string(files) files_array = files_to_array(files).reject(&:nil?) sorted_files = files_array.sort_by { |file| file[:name] } files_strings = sorted_files.map { |file| generate_file_string(file) } files_strings.join end
generate_params_string(params)
click to toggle source
# File lib/phaxio/resources/callback.rb, line 42 def generate_params_string(params) sorted_params = params.sort_by { |key, _value| key } params_strings = sorted_params.map { |key, value| "#{key}#{value}" } params_strings.join end