Class: Parliament::Request::OpenSearchRequest

Inherits:
BaseRequest
  • Object
show all
Defined in:
lib/parliament/request/open_search_request.rb

Overview

API request object, allowing the user to build a request to an OpenSearch API and build a response.

attr [Hash] templates the different types and template urls set from the OpenSearch API description document.

Since:

  • 0.1.0

Constant Summary collapse

OPEN_SEARCH_PARAMETERS =

Since:

  • 0.1.0

{
  count:           10,
  start_index:     1,
  start_page:      1,
  language:        '*',
  output_encoding: 'UTF-8',
  input_encoding:  'UTF-8'
}.freeze

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(description_url: nil, headers: nil, builder: nil) ⇒ OpenSearchRequest

Creates a new instance of Parliament::OpenSearch::Request.

An interesting note for #initialize is that setting description_url on the class means you don’t need to pass in a description_url. You can pass one anyway to override the class parameter. Similarly, headers can be set by either settings the headers on the class, or passing headers in.

Parameters:

  • description_url (String) (defaults to: nil)

    the url for the OpenSearch API description file. (expected: example.com/description.xml - without the trailing slash).

  • headers (Hash) (defaults to: nil)

    the headers being sent in the request.

  • builder (Parliament::OpenSearch::Builder) (defaults to: nil)

    the builder required to create the response.

Raises:

See Also:

  • BaseRequest#initialize

Since:

  • 0.1.0



29
30
31
32
33
34
35
36
37
38
# File 'lib/parliament/request/open_search_request.rb', line 29

def initialize(description_url: nil, headers: nil, builder: nil)
  @description_url = description_url ||= self.class.description_url

  raise Parliament::OpenSearch::DescriptionError.new(@description_url), 'No description URL passed to Parliament::OpenSearchRequest#new and, no Parliament::OpenSearchRequest#base_url value set. Without a description URL, we are unable to make any search requests.' if @description_url.nil? && self.class.templates.nil?

  @templates = Parliament::OpenSearch::DescriptionCache.fetch(@description_url)
  @open_search_parameters = self.class.open_search_parameters

  super(base_url: nil, headers: headers, builder: builder)
end

Class Attribute Details

.description_urlObject

Since:

  • 0.1.0



55
56
57
# File 'lib/parliament/request/open_search_request.rb', line 55

def description_url
  @description_url
end

.templatesObject (readonly)

Since:

  • 0.1.0



55
56
57
# File 'lib/parliament/request/open_search_request.rb', line 55

def templates
  @templates
end

Instance Attribute Details

#description_urlObject (readonly)

Since:

  • 0.1.0



8
9
10
# File 'lib/parliament/request/open_search_request.rb', line 8

def description_url
  @description_url
end

#templatesObject (readonly)

Since:

  • 0.1.0



8
9
10
# File 'lib/parliament/request/open_search_request.rb', line 8

def templates
  @templates
end

Class Method Details

.open_search_parametersObject

Since:

  • 0.1.0



62
63
64
# File 'lib/parliament/request/open_search_request.rb', line 62

def open_search_parameters
  OPEN_SEARCH_PARAMETERS.dup
end

Instance Method Details

#get(search_params, type: nil, params: nil) ⇒ Object

Sets up the query url using the base_url and parameters, then make an HTTP GET request and process results.

See Also:

  • BaseRequest#get

Since:

  • 0.1.0



46
47
48
49
50
# File 'lib/parliament/request/open_search_request.rb', line 46

def get(search_params, type: nil, params: nil)
  setup_query_url(search_params, type)

  super(params: params)
end