PageAnalysis.java

package net.sasasin.sreader.service.autopagerize;

import java.net.URI;
import java.util.Objects;
import java.util.Optional;

/** Result of applying nextLink / pageElement XPath to one page snapshot. */
public record PageAnalysis(
    String pageElementOuterHtml,
    String pageElementText,
    String pageElementContentHash,
    Optional<URI> nextUri,
    Optional<NextLinkIssue> nextLinkIssue) {

  public PageAnalysis {
    Objects.requireNonNull(pageElementOuterHtml, "pageElementOuterHtml must not be null");
    Objects.requireNonNull(pageElementText, "pageElementText must not be null");
    Objects.requireNonNull(pageElementContentHash, "pageElementContentHash must not be null");
    Objects.requireNonNull(nextUri, "nextUri must not be null");
    Objects.requireNonNull(nextLinkIssue, "nextLinkIssue must not be null");
  }

  public enum NextLinkIssue {
    NONE,
    MISSING,
    INVALID_URI,
    UNSUPPORTED_SCHEME,
    USERINFO_REJECTED
  }
}