Class: Forem::Services::RequestRedirectService

Inherits:
BaseService
  • Object
show all
Defined in:
lib/forem/services/request_redirect_service.rb

Overview

Service for interacting with the Forem Admin Request Redirects API.

Request redirects power organization custom domains: a request for request_domain at path original_url is redirected to destination_url. These endpoints require an API key with admin-level privileges. Access via Client#request_redirects. All methods inject the client's requestor automatically so no additional configuration is required.

The underlying API requires create/update request bodies to be wrapped in a request_redirect: key. This service accepts flat attribute hashes and wraps them for you, so callers never need to think about the wrapper.

Examples:

client = Forem::Client.new("admin-api-key")
redirect = client.request_redirects.create(
  original_url: "/old",
  destination_url: "https://example.com/new",
  request_domain: "example.com"
)

See Also:

Instance Method Summary collapse

Methods inherited from BaseService

#initialize

Constructor Details

This class inherits a constructor from Forem::Services::BaseService

Instance Method Details

#create(params = {}, opts = {}) ⇒ RequestRedirect

Create a new request redirect.

Examples:

client.request_redirects.create(
  original_url: "/old",
  destination_url: "https://example.com/new",
  request_domain: "example.com"
)

Parameters:

  • params (Hash) (defaults to: {})

    request redirect attributes (flat — no request_redirect: wrapper needed, this method adds it for you)

  • opts (Hash) (defaults to: {})

    per-request options

Options Hash (params):

  • :original_url (String)

    the incoming request path; must start with /

  • :destination_url (String)

    the fully-qualified HTTP/HTTPS URL to redirect to

  • :request_domain (String)

    the domain the redirect applies to

Returns:

See Also:



80
81
82
# File 'lib/forem/services/request_redirect_service.rb', line 80

def create(params = {}, opts = {})
  RequestRedirect.create({ request_redirect: params }, opts_with_requestor(opts))
end

#delete(id, opts = {}) ⇒ nil

Delete a request redirect.

Examples:

client.request_redirects.delete(7)

Parameters:

  • id (Integer, String)

    the request redirect ID to delete

  • opts (Hash) (defaults to: {})

    per-request options

Returns:

  • (nil)

    returns nil on success (the API responds with 204 No Content)

See Also:



113
114
115
# File 'lib/forem/services/request_redirect_service.rb', line 113

def delete(id, opts = {})
  RequestRedirect.delete(id, opts_with_requestor(opts))
end

#list(params = {}, opts = {}) ⇒ Forem::ListObject<RequestRedirect>

List all request redirects, most recently created first.

Examples:

client.request_redirects.list(per_page: 25)

Parameters:

  • params (Hash) (defaults to: {})

    query parameters

  • opts (Hash) (defaults to: {})

    per-request options

Options Hash (params):

  • :page (Integer)

    page number (default: 1)

  • :per_page (Integer)

    number of results per page (default: 50, maximum: 100)

Returns:

See Also:



41
42
43
# File 'lib/forem/services/request_redirect_service.rb', line 41

def list(params = {}, opts = {})
  RequestRedirect.list(params, opts_with_requestor(opts))
end

#retrieve(id, opts = {}) ⇒ RequestRedirect

Retrieve a single request redirect by its numeric ID.

Examples:

client.request_redirects.retrieve(7)

Parameters:

  • id (Integer, String)

    the request redirect ID

  • opts (Hash) (defaults to: {})

    per-request options

Returns:

See Also:



55
56
57
# File 'lib/forem/services/request_redirect_service.rb', line 55

def retrieve(id, opts = {})
  RequestRedirect.retrieve(id, opts_with_requestor(opts))
end

#update(id, params = {}, opts = {}) ⇒ RequestRedirect

Update an existing request redirect.

Examples:

client.request_redirects.update(7, destination_url: "https://example.com/newer")

Parameters:

  • id (Integer, String)

    the request redirect ID to update

  • params (Hash) (defaults to: {})

    request redirect attributes to change (flat — no request_redirect: wrapper needed, this method adds it for you)

  • opts (Hash) (defaults to: {})

    per-request options

Options Hash (params):

  • :original_url (String)

    new incoming request path

  • :destination_url (String)

    new destination URL

  • :request_domain (String)

    new request domain

Returns:

See Also:



99
100
101
# File 'lib/forem/services/request_redirect_service.rb', line 99

def update(id, params = {}, opts = {})
  RequestRedirect.update(id, { request_redirect: params }, opts_with_requestor(opts))
end