OpensearchPage.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const BasePage = require('./BasePage');
  2. const XmlParser = require('../xml/XmlParser');
  3. class OpensearchPage extends BasePage {
  4. constructor(config) {
  5. super(config);
  6. this.id = 'opensearch';
  7. this.title = 'opensearch';
  8. }
  9. async body() {
  10. const xml = new XmlParser();
  11. const xmlObject = {};
  12. /*
  13. <?xml version="1.0" encoding="utf-8"?>
  14. <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  15. <ShortName>inpx-web</ShortName>
  16. <Description>Поиск по каталогу</Description>
  17. <InputEncoding>UTF-8</InputEncoding>
  18. <OutputEncoding>UTF-8</OutputEncoding>
  19. <Url type="application/atom+xml;profile=opds-catalog;kind=navigation" template="/opds/search?term={searchTerms}"/>
  20. </OpenSearchDescription>
  21. */
  22. xmlObject['OpenSearchDescription'] = {
  23. '*ATTRS': {xmlns: 'http://a9.com/-/spec/opensearch/1.1/'},
  24. ShortName: 'inpx-web',
  25. Description: 'Поиск по каталогу',
  26. InputEncoding: 'UTF-8',
  27. OutputEncoding: 'UTF-8',
  28. Url: {
  29. '*ATTRS': {
  30. type: 'application/atom+xml;profile=opds-catalog;kind=navigation',
  31. template: `${this.opdsRoot}/search?term={searchTerms}`,
  32. },
  33. },
  34. }
  35. xml.fromObject(xmlObject);
  36. return xml.toString({format: true});
  37. }
  38. }
  39. module.exports = OpensearchPage;