Module: SevenApi::Hooks::Validator

Defined in:
lib/seven_api/hooks.rb

Class Method Summary collapse

Class Method Details

.event_type?(str) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/seven_api/hooks.rb', line 57

def self.event_type?(str)
  SevenApi::Util::in_module_constants?(str, SevenApi::Hooks::EventType)
end

.is_action?(str) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/seven_api/hooks.rb', line 53

def self.is_action?(str)
  SevenApi::Util::in_module_constants?(str, SevenApi::Hooks::Action)
end

.request_method?(str) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/seven_api/hooks.rb', line 61

def self.request_method?(str)
  SevenApi::Util::in_module_constants?(str, SevenApi::Hooks::RequestMethod)
end

.subscribe(params) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/seven_api/hooks.rb', line 41

def self.subscribe(params)
  { :request_method => SevenApi::Hooks::RequestMethod::POST }.merge!(params)

  self.event_type?(params[:event_type]) &&
    self.request_method?(params[:request_method]) &&
    self.target_url?(params[:target_url])
end

.target_url?(str) ⇒ Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/seven_api/hooks.rb', line 65

def self.target_url?(str)
  SevenApi::Util::is_valid_url?(str)
end

.unsubscribe(params) ⇒ Object



49
50
51
# File 'lib/seven_api/hooks.rb', line 49

def self.unsubscribe(params)
  SevenApi::Util::is_positive_integer?(params[:id])
end

.validate(params) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/seven_api/hooks.rb', line 29

def self.validate(params)
  action = params[:action]

  raise "Unknown action #{action}" unless SevenApi::Hooks::Validator::is_action?(action)

  if SevenApi::Hooks::Action::SUBSCRIBE == action
    raise 'Parameter validation failed' unless SevenApi::Hooks::Validator::subscribe(params)
  elsif SevenApi::Hooks::Action::UNSUBSCRIBE == action
    raise 'ID must be a positive integer' unless SevenApi::Hooks::Validator::unsubscribe(params)
  end
end