class NewsApi::Query
Attributes
news_api_key[RW]
uri[RW]
Public Class Methods
new(key)
click to toggle source
# File lib/metonym/lib/news_api.rb, line 8 def initialize(key) @news_api_key = key @news_api = NewsApi::NewsApiRepository.new(key) end
Public Instance Methods
everything(args, **options)
click to toggle source
# File lib/metonym/lib/news_api.rb, line 13 def everything(args, **options) request('everything', args: args, format: define_response_format(options)) end
sources(args, **options)
click to toggle source
# File lib/metonym/lib/news_api.rb, line 21 def sources(args, **options) request('sources', args: args, format: define_response_format(options)) end
top_headlines(args, **options)
click to toggle source
# File lib/metonym/lib/news_api.rb, line 17 def top_headlines(args, **options) request('top-headlines', args: args, format: define_response_format(options)) end
Private Instance Methods
define_response_format(options)
click to toggle source
# File lib/metonym/lib/news_api.rb, line 27 def define_response_format(options) options[:format] || 'json' end
request(resource, args:, format:)
click to toggle source
# File lib/metonym/lib/news_api.rb, line 31 def request(resource, args:, format:) validate_query_parameters(args, format, resource) case resource when 'top-headlines' response = @news_api.top_headlines(query: args) when 'everything' response = @news_api.everything(query: args) when 'sources' response = @news_api.sources(query: args) end rescue StandardError => e response = { errors: e.to_s } ensure presenter = NewsApi::NewsApiResponsePresenter.new return presenter.generate_formatted_response(response, format) end
validate_query_parameters(args, format, resource)
click to toggle source
# File lib/metonym/lib/news_api.rb, line 49 def validate_query_parameters(args, format, resource) v = Validate::NewsApiQueryValidator.new(@news_api_key, args: args, format: format, endpoint: resource) raise v unless v end