class Theguardian::Api::Search

Public Class Methods

process(params = {}) click to toggle source
# File lib/theguardian/api/search.rb, line 4
def self.process(params = {})
        connection = Theguardian::Connection.new(resource: "search")
        params = self.process_params(params)

        self.new(connection.get(params), recurse_over_arrays: true)
end
process_params(params) click to toggle source
# File lib/theguardian/api/search.rb, line 17
def self.process_params(params)
        theguardian_api_params = { q: params[:q] }

        # Date
        if params.has_key?(:date)
                if params[:date].has_key?(:from)
                        theguardian_api_params.merge!({ "from-date" => params[:date][:from].strftime("%Y-%m-%d") })
                end

                if params[:date].has_key?(:to)
                        theguardian_api_params.merge!({ "to-date" => params[:date][:to].strftime("%Y-%m-%d") })
                end
        end

        # Tags
       theguardian_api_params.merge!({ "tag" => params[:tags].join(",") }) if params.has_key?(:tags)

       # Sections
       theguardian_api_params.merge!({ "section" => params[:sections].join(",") }) if params.has_key?(:sections) 
       
       # Shown fields
       theguardian_api_params.merge!({ "show-fields" => params[:fields].join(",") }) if params[:fields]
               
       # Refinements
       theguardian_api_params.merge!({ "show-refinements" => params[:refinements].join(",") }) if params.has_key?(:refinements)

       # Ordering
       theguardian_api_params.merge!({ "order-by" => params[:order_by] }) if params.has_key?(:order_by)

       # Pagination
       theguardian_api_params.merge!({ "page" => params[:page] }) if params.has_key?(:page)
       theguardian_api_params.merge!({ "page-size" => params[:per_page] }) if params.has_key?(:per_page)

       theguardian_api_params.reject{ |_, value| value.nil? }
end

Public Instance Methods

items() click to toggle source
# File lib/theguardian/api/search.rb, line 11
def items
        self.results.map do |result| 
                Theguardian::Api::Item.new(result.to_h) 
        end
end