opensearch.xml.tsx 1009 B

123456789101112131415161718192021222324
  1. import { GetServerSideProps } from "next";
  2. import getSiteConfig from "libs/getSiteConfig";
  3. export default function Opensearch(host: ReturnType<typeof getSiteConfig>) {
  4. return `<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
  5. xmlns:moz="http://www.mozilla.org/2006/browser/search/">
  6. <ShortName>${host.siteName}</ShortName>
  7. <Description>Search in ${host.siteName}</Description>
  8. <InputEncoding>UTF-8</InputEncoding>
  9. <Image width="16" height="16" type="image/x-icon">https://${host.host}/favicon.ico</Image>
  10. <Url type="text/html" method="get" template="https://${host.host}/search?q={searchTerms}&amp;ref=opensearch"/>
  11. <moz:SearchForm>https://${host.host}/search</moz:SearchForm>
  12. </OpenSearchDescription>`;
  13. }
  14. export const getServerSideProps: GetServerSideProps<{}> = ({ res, req }) => {
  15. res.setHeader("Content-Type", "text/xml");
  16. res.write(Opensearch(getSiteConfig(req.headers.host)));
  17. res.end();
  18. return Promise.resolve({
  19. props: {},
  20. });
  21. };