Sha256: b7fb2f86e6183b47b25f6ab1ac778cd8244ead54b23bff00d7aba7625d2a06b4
Contents?: true
Size: 1.79 KB
Versions: 1
Compression:
Stored size: 1.79 KB
Contents
# frozen_string_literal: true # This module holds all utilities related to the /hooks endpoint. module Sms77::Hooks module Action READ = 'read' SUBSCRIBE = 'subscribe' UNSUBSCRIBE = 'unsubscribe' end module EventType ALL = 'all' NEW_INBOUND_SMS = 'sms_mo' SMS_STATUS_UPDATE = 'dlr' TRACKING = 'tracking' VOICE_CALL = 'voice_call' VOICE_STATUS_UPDATE = 'voice_status' end module RequestMethod GET = 'GET' JSON = 'JSON' POST = 'POST' end module Validator def self.validate(params) action = params[:action] raise "Unknown action #{action}" unless Sms77::Hooks::Validator::is_action?(action) if Sms77::Hooks::Action::SUBSCRIBE == action raise 'Parameter validation failed' unless Sms77::Hooks::Validator::subscribe(params) elsif Sms77::Hooks::Action::UNSUBSCRIBE == action raise 'ID must be a positive integer' unless Sms77::Hooks::Validator::unsubscribe(params) end end def self.subscribe(params) { :request_method => Sms77::Hooks::RequestMethod::POST }.merge!(params) self.event_type?(params[:event_type]) && self.request_method?(params[:request_method]) && self.target_url?(params[:target_url]) end def self.unsubscribe(params) Sms77::Util::is_positive_integer?(params[:id]) end def self.is_action?(str) Sms77::Util::in_module_constants?(str, Sms77::Hooks::Action) end def self.event_type?(str) Sms77::Util::in_module_constants?(str, Sms77::Hooks::EventType) end def self.request_method?(str) Sms77::Util::in_module_constants?(str, Sms77::Hooks::RequestMethod) end def self.target_url?(str) Sms77::Util::is_valid_url?(str) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sms77-0.5.0 | lib/sms77/hooks.rb |