class NewsApiRubyRails
Constants
- BASE_URL
- VERSION
Public Class Methods
new(api_key)
click to toggle source
# File lib/news-api-ruby-rails.rb, line 12 def initialize(api_key) @api_key = api_key end
Public Instance Methods
get_everything(**args)
click to toggle source
# File lib/news-api-ruby-rails.rb, line 32 def get_everything(**args) endpoint = 'everything' return _get_everything(endpoint, **args) end
get_source(v)
click to toggle source
# File lib/news-api-ruby-rails.rb, line 37 def get_source(v) Source.new(v["id"], v["name"], v["description"], v["url"], v["category"], v["language"], v["country"]) end
get_sources(**args)
click to toggle source
# File lib/news-api-ruby-rails.rb, line 21 def get_sources(**args) endpoint = 'sources' request = _make_request(endpoint, **args) sources = request['sources'] data = Array.new sources.each do |v| data.push(get_source(v)) end return data end
get_top_headlines(**args)
click to toggle source
# File lib/news-api-ruby-rails.rb, line 16 def get_top_headlines(**args) endpoint = 'top-headlines' return _get_everything(endpoint, **args) end
Private Instance Methods
_get_everything(endpoint, **args)
click to toggle source
# File lib/news-api-ruby-rails.rb, line 67 def _get_everything(endpoint, **args) request = _make_request(endpoint, **args) articles = request['articles'] data = Array.new articles.each do |a| data.push( _get_news_attribute(a) ) end return data end
_get_news_attribute(a)
click to toggle source
# File lib/news-api-ruby-rails.rb, line 79 def _get_news_attribute(a) NewsApiAttributes.new( a["source"], a["author"], a["title"], a["description"], a["url"], a["urlToImage"], a["publishedAt"] ) end
_make_request(endpoint, **queries)
click to toggle source
# File lib/news-api-ruby-rails.rb, line 44 def _make_request(endpoint, **queries) params = eval(queries.inspect) url = BASE_URL + endpoint + '?' params.each { |key, value| url += key.to_s + '=' + value.to_s + '&' } url = url[0..-2] uri = URI(url) req = Net::HTTP::Get.new(uri) req['X-Api-Key'] = @api_key res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => true) { |http| http.request(req) } json = JSON.parse(res.body) if res.code == '200' return json elsif res.code == '401' raise UnauthorizedException, json elsif res.code == '400' raise BadRequestException, json elsif res.code == '429' raise RequestsLimitException, json elsif res.code == '500' raise ServerException, json end end