Class: Html2rss::AutoSource::Scraper::WordpressApi::PostsEndpoint

Inherits:
Object
  • Object
show all
Defined in:
lib/html2rss/auto_source/scraper/wordpress_api/posts_endpoint.rb

Overview

Resolves the WordPress posts endpoint for a given page and scope.

Constant Summary collapse

POSTS_PATH =

REST API collection path for posts resources.

'wp/v2/posts'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parsed_body:, page_url:, page_scope:, posts_query:, logger:) ⇒ PostsEndpoint

Returns a new instance of PostsEndpoint.

Parameters:

  • parsed_body (Nokogiri::HTML::Document)

    parsed HTML document

  • page_url (Html2rss::Url)

    canonical page URL

  • page_scope (Html2rss::AutoSource::Scraper::WordpressApi::PageScope)

    derived page scope

  • posts_query (Hash{String => String})

    query params for the posts request

  • logger (Logger)

    logger used for operational warnings



30
31
32
33
34
35
36
# File 'lib/html2rss/auto_source/scraper/wordpress_api/posts_endpoint.rb', line 30

def initialize(parsed_body:, page_url:, page_scope:, posts_query:, logger:)
  @parsed_body = parsed_body
  @page_url = Html2rss::Url.from_absolute(page_url)
  @page_scope = page_scope
  @posts_query = posts_query
  @logger = logger
end

Class Method Details

.resolve(parsed_body:, page_url:, page_scope:, posts_query:, logger: Html2rss::Log) ⇒ Html2rss::Url?

Returns resolved posts endpoint or nil when unavailable.

Parameters:

  • parsed_body (Nokogiri::HTML::Document)

    parsed HTML document

  • page_url (Html2rss::Url)

    canonical page URL

  • page_scope (Html2rss::AutoSource::Scraper::WordpressApi::PageScope)

    derived page scope

  • posts_query (Hash{String => String})

    query params for the posts request

  • logger (Logger) (defaults to: Html2rss::Log)

    logger used for operational warnings

Returns:

  • (Html2rss::Url, nil)

    resolved posts endpoint or nil when unavailable



20
21
22
# File 'lib/html2rss/auto_source/scraper/wordpress_api/posts_endpoint.rb', line 20

def self.resolve(parsed_body:, page_url:, page_scope:, posts_query:, logger: Html2rss::Log)
  new(parsed_body:, page_url:, page_scope:, posts_query:, logger:).call
end

Instance Method Details

#callHtml2rss::Url?

Returns resolved posts endpoint or nil when unavailable.

Returns:

  • (Html2rss::Url, nil)

    resolved posts endpoint or nil when unavailable



40
41
42
43
44
45
46
# File 'lib/html2rss/auto_source/scraper/wordpress_api/posts_endpoint.rb', line 40

def call
  api_root = api_root_url
  return unless api_root
  return unless fetchable_page_scope?

  query_style_api_root?(api_root) ? query_root_posts_url(api_root) : posts_collection_url(api_root)
end