@paperbits/common
Version:
Paperbits common components.
35 lines (27 loc) • 1.16 kB
text/typescript
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;
}
}