Hui v0.9.0 Hui.Request View Source

Hui.Request module provides underpinning HTTP-based request functions for Solr, including:

Other low-level HTTP client features

Under the hood, Hui uses HTTPoison client to interact with Solr. The existing low-level functions of HTTPoison, e.g. get/1, get/3 remain available as part of this module.

Link to this section Summary

Functions

Issues a DELETE request to the given url, raising an exception in case of failure

Issues a DELETE request to the given url

Issues a GET request to the given url, raising an exception in case of failure

Issues a GET request to the given url

Issues a HEAD request to the given url, raising an exception in case of failure

Issues a HEAD request to the given url

Issues a OPTIONS request to the given url, raising an exception in case of failure

Issues an OPTIONS request to the given url

Issues a PATCH request to the given url, raising an exception in case of failure

Issues a PATCH request to the given url

Issues a POST request to the given url, raising an exception in case of failure

Issues a POST request to the given url

Callback implementation for HTTPoison.Base.process_headers/1

process_url(url) deprecated

Callback implementation for HTTPoison.Base.process_url/1

Issues a PUT request to the given url, raising an exception in case of failure

Issues a PUT request to the given url

Issues an HTTP request with the given method to the given url, raising an exception in case of failure

Issues an HTTP request using a Request struct

Issues an HTTP request with the given method to the given url

Starts HTTPoison and its dependencies

Requests the next message to be streamed for a given HTTPoison.AsyncResponse

Issues an update request to a specific Solr endpoint, for data uploading and deletion

Link to this section Types

Link to this section Functions

Link to this function delete!(url, headers \\ [], options \\ []) View Source

Issues a DELETE request to the given url, raising an exception in case of failure.

If the request does not fail, the response is returned.

See request!/5 for more detailed information.

Link to this function delete(url, headers \\ [], options \\ []) View Source

Issues a DELETE request to the given url.

Returns {:ok, response} if the request is successful, {:error, reason} otherwise.

See request/5 for more detailed information.

Issues a GET request to the given url, raising an exception in case of failure.

If the request does not fail, the response is returned.

See request!/5 for more detailed information.

Link to this function get(url, headers \\ [], options \\ []) View Source

Issues a GET request to the given url.

Returns {:ok, response} if the request is successful, {:error, reason} otherwise.

See request/5 for more detailed information.

Link to this function head!(url, headers \\ [], options \\ []) View Source

Issues a HEAD request to the given url, raising an exception in case of failure.

If the request does not fail, the response is returned.

See request!/5 for more detailed information.

Link to this function head(url, headers \\ [], options \\ []) View Source

Issues a HEAD request to the given url.

Returns {:ok, response} if the request is successful, {:error, reason} otherwise.

See request/5 for more detailed information.

Link to this function options!(url, headers \\ [], options \\ []) View Source

Issues a OPTIONS request to the given url, raising an exception in case of failure.

If the request does not fail, the response is returned.

See request!/5 for more detailed information.

Link to this function options(url, headers \\ [], options \\ []) View Source

Issues an OPTIONS request to the given url.

Returns {:ok, response} if the request is successful, {:error, reason} otherwise.

See request/5 for more detailed information.

Link to this function patch!(url, body, headers \\ [], options \\ []) View Source

Issues a PATCH request to the given url, raising an exception in case of failure.

If the request does not fail, the response is returned.

See request!/5 for more detailed information.

Link to this function patch(url, body, headers \\ [], options \\ []) View Source

Issues a PATCH request to the given url.

Returns {:ok, response} if the request is successful, {:error, reason} otherwise.

See request/5 for more detailed information.

Link to this function post!(url, body, headers \\ [], options \\ []) View Source

Issues a POST request to the given url, raising an exception in case of failure.

If the request does not fail, the response is returned.

See request!/5 for more detailed information.

Link to this function post(url, body, headers \\ [], options \\ []) View Source

Issues a POST request to the given url.

Returns {:ok, response} if the request is successful, {:error, reason} otherwise.

See request/5 for more detailed information.

Link to this function process_headers(headers) View Source
process_headers(list()) :: any()
This function is deprecated. Use process_response_headers/1 instead.

Callback implementation for HTTPoison.Base.process_headers/1.

Link to this function process_request_body(body) View Source
process_request_body(body()) :: body()

Callback implementation for HTTPoison.Base.process_request_body/1.

Link to this function process_request_headers(headers) View Source
process_request_headers(headers()) :: headers()

Callback implementation for HTTPoison.Base.process_request_headers/1.

Link to this function process_request_options(options) View Source
process_request_options(options()) :: options()

Callback implementation for HTTPoison.Base.process_request_options/1.

Link to this function process_request_params(params) View Source
process_request_params(params()) :: params()

Callback implementation for HTTPoison.Base.process_request_params/1.

Link to this function process_request_url(url) View Source
process_request_url(url()) :: url()

Callback implementation for HTTPoison.Base.process_request_url/1.

Link to this function process_response(response) View Source
process_response(HTTPoison.Base.response()) :: any()

Callback implementation for HTTPoison.Base.process_response/1.

Link to this function process_response_body(body) View Source
process_response_body(binary()) :: any()

Callback implementation for HTTPoison.Base.process_response_body/1.

Link to this function process_response_chunk(chunk) View Source
process_response_chunk(binary()) :: any()

Callback implementation for HTTPoison.Base.process_response_chunk/1.

Link to this function process_response_headers(headers) View Source
process_response_headers(list()) :: any()

Callback implementation for HTTPoison.Base.process_response_headers/1.

Link to this function process_response_status_code(status_code) View Source
process_response_status_code(integer()) :: any()

Callback implementation for HTTPoison.Base.process_response_status_code/1.

Link to this function process_status_code(status_code) View Source
process_status_code(integer()) :: any()
This function is deprecated. Use process_response_status_code/1 instead.

Callback implementation for HTTPoison.Base.process_status_code/1.

Link to this function process_url(url) View Source
process_url(url()) :: url()
This function is deprecated. Use process_request_url/1 instead.

Callback implementation for HTTPoison.Base.process_url/1.

Link to this function put!(url, body \\ "", headers \\ [], options \\ []) View Source

Issues a PUT request to the given url, raising an exception in case of failure.

If the request does not fail, the response is returned.

See request!/5 for more detailed information.

Link to this function put(url, body \\ "", headers \\ [], options \\ []) View Source

Issues a PUT request to the given url.

Returns {:ok, response} if the request is successful, {:error, reason} otherwise.

See request/5 for more detailed information.

Link to this function request!(method, url, body \\ "", headers \\ [], options \\ []) View Source

Issues an HTTP request with the given method to the given url, raising an exception in case of failure.

request!/5 works exactly like request/5 but it returns just the response in case of a successful request, raising an exception in case the request fails.

Issues an HTTP request using a Request struct.

This function returns {:ok, response} or {:ok, async_response} if the request is successful, {:error, reason} otherwise.

Examples

request = %HTTPoison.Request{
  method: :post,
  url: "https://my.website.com",
  body: "{\"foo\": 3}",
  headers: [{"Accept", "application/json"}]
}

request(request)
Link to this function request(method, url, body \\ "", headers \\ [], options \\ []) View Source
request(atom(), binary(), any(), headers(), Keyword.t()) ::
  {:ok, HTTPoison.Response.t() | HTTPoison.AsyncResponse.t()}
  | {:error, HTTPoison.Error.t()}

Issues an HTTP request with the given method to the given url.

This function is usually used indirectly by get/3, post/4, put/4, etc

Args:

  • method - HTTP method as an atom (:get, :head, :post, :put, :delete, etc.)
  • url - target url as a binary string or char list
  • body - request body. See more below
  • headers - HTTP headers as an orddict (e.g., [{"Accept", "application/json"}])
  • options - Keyword list of options

Body: see type HTTPoison.Request

Options: see type HTTPoison.Request

This function returns {:ok, response} or {:ok, async_response} if the request is successful, {:error, reason} otherwise.

Examples

request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])

Starts HTTPoison and its dependencies.

Requests the next message to be streamed for a given HTTPoison.AsyncResponse.

See request!/5 for more detailed information.

Link to this function update(url, bang \\ false, data) View Source
update(solr_url(), boolean(), binary() | Hui.U.t()) ::
  {:ok, HTTPoison.Response.t()}
  | {:error, Hui.Error.t()}
  | HTTPoison.Response.t()

Issues an update request to a specific Solr endpoint, for data uploading and deletion.

The request sends update data in Hui.U struct or binary format to an endpoint specified in a Hui.URL.t/0 struct or a URL config key. A content type header is required so that Solr knows the incoming data format (JSON, XML etc.) and can process data accordingly.

Example

  # Specify an endpoint for JSON-formatted update
  headers = [{"Content-type", "application/json"}]
  url = %Hui.URL{url: "http://localhost:8983/solr/collection", handler: "update", headers: headers}

  # Solr data / docs - field mapping
  doc1 = %{
    "actor_ss" => ["Ingrid Bergman", "Liv Ullmann", "Lena Nyman", "Halvar Björk"],
    "desc" => "A married daughter who longs for her mother's love is visited by the latter, a successful concert pianist.",
    "directed_by" => ["Ingmar Bergman"],
    "genre" => ["Drama", "Music"],
    "id" => "tt0077711",
    "initial_release_date" => "1978-10-08",
    "name" => "Autumn Sonata"
  }
  doc2 = %{
    "actor_ss" => ["Bibi Andersson", "Liv Ullmann", "Margaretha Krook"],
    "desc" => "A nurse is put in charge of a mute actress and finds that their personas are melding together.",
    "directed_by" => ["Ingmar Bergman"],
    "genre" => ["Drama", "Thriller"],
    "id" => "tt0060827",
    "initial_release_date" => "1967-09-21",
    "name" => "Persona"
  }

  # Hui.U struct command for updating and committing the docs to Solr within 5 seconds
  x = %Hui.U{doc: [doc1, doc2], commitWithin: 5000, overwrite: true}
  {status, resp} = Hui.Request.update(url, x)

  # Delete the docs by IDs, with a URL key from configuration
  {status, resp} = Hui.Request.update(:library_update, %Hui.U{delete_id: ["tt1316540", "tt1650453"]})

  # Commit and optimise index, keep max index segments at 10
  {status, resp} = Hui.Request.update(url, %Hui.U{commit: true, waitSearcher: true, optimize: true, maxSegments: 10})

  # Commit index, expunge deleted docs
  {status, resp} = Hui.Request.update(url, %Hui.U{commit: true, expungeDeletes: true})

  # Direct response or exception in case of failture
  # for implementing bang! style function
  bang = true
  resp = Hui.Request.update(url, bang, json_doc)

  # Binary mode,
  json_binary = # any encoded binary data, e.g. raw JSON from a file
  {status, resp} = Hui.Request.update(url, json_binary)

  # Binary mode, e.g. delete a document via XML binary
  headers = [{"Content-type", "application/xml"}]
  url = %Hui.URL{url: "http://localhost:8983/solr/collection", handler: "update", headers: headers}
  {status, resp} = Hui.Request.update(url, "<delete><id>9780141981727</id></delete>")

See Solr reference for more details on various data commands, types and formats.