UNPKG

@paperbits/common

Version:
35 lines (27 loc) 1.16 kB
import { SearchResult, SearchResultBuilder } from "@paperbits/common/search"; import { HttpClient } from "@paperbits/common/http"; import { MimeTypes } from "../mimeTypes"; import { stripHtml } from "../utils"; export class WebPageSearchResultsBuilder implements SearchResultBuilder { constructor(private readonly httpClient: HttpClient) { } public async getSearchResult(ref: string, query: string): Promise<SearchResult> { if (!ref.startsWith("/")) { return null; } const response = await this.httpClient.send({ url: ref, method: "GET" }); const text = response.toText(); const parser = new DOMParser(); const searchedDocument: Document = parser.parseFromString(text, MimeTypes.textHtml); const title = searchedDocument.title; const description = searchedDocument.querySelector("meta[name='description']")?.getAttribute("content"); const searchResult: SearchResult = { title: title, summary: description, url: ref }; return searchResult; } }