class Validate::GnewsQueryValidator

Constants

COUNTRIES

Public Class Methods

new(api_key, args:, format:) click to toggle source
# File lib/metonym/lib/validators/gnews_query_validator.rb, line 20
def initialize(api_key, args:, format:)
  raise 'API Key is required'        unless key_present?(api_key)
  raise 'Invalid parameter sequence' unless query_valid?(args)
  raise 'Invalid country sent'       unless country_valid?(args)
  raise 'Invalid language sent'      unless language_valid?(args)
  raise 'Invalid date or dates sent' unless date_valid?(args)

  true
end

Private Instance Methods

country_valid?(args) click to toggle source
# File lib/metonym/lib/validators/gnews_query_validator.rb, line 39
def country_valid?(args)
  args[:country].nil? ? true : COUNTRIES.include?(args[:country].downcase)
end
date_valid?(args) click to toggle source
# File lib/metonym/lib/validators/gnews_query_validator.rb, line 43
def date_valid?(args)
  if args[:mindate].nil? && args[:maxdate].nil?
    true
  elsif args[:mindate] && args[:maxdate]
    (args[:mindate].respond_to?(:strftime) && args[:maxdate].respond_to?(:strftime))
  elsif args[:mindate] && args[:maxdate].nil?
    args[:mindate].respond_to?(:strftime)
  elsif args[:mindate].nil? && args[:maxdate]
    args[:maxdate].respond_to?(:strftime)
  end
end
query_valid?(args) click to toggle source
# File lib/metonym/lib/validators/gnews_query_validator.rb, line 32
def query_valid?(args)
  search_template   = %i[q max lang country mindate maxdate in]
  top_news_template = %i[lang country max image]
  template = search_template + top_news_template
  (args.keys - template).empty?
end