Fixed opensearch.xml
Some checks failed
Run Integration Tests / test (push) Failing after 1m5s

This commit is contained in:
partisan 2025-06-18 13:55:13 +02:00
parent ec8ab05349
commit d3bdc8065d
11 changed files with 73 additions and 30 deletions

View file

@ -7,31 +7,52 @@ import (
) )
type OpenSearchDescription struct { type OpenSearchDescription struct {
XMLName xml.Name `xml:"OpenSearchDescription"` XMLName xml.Name `xml:"OpenSearchDescription"`
Xmlns string `xml:"xmlns,attr"` Xmlns string `xml:"xmlns,attr"`
ShortName string `xml:"ShortName"` ShortName string `xml:"ShortName"`
Description string `xml:"Description"` LongName string `xml:"LongName"`
Tags string `xml:"Tags"` Description string `xml:"Description"`
URLs []URL `xml:"Url"` Tags string `xml:"Tags,omitempty"`
InputEncoding string `xml:"InputEncoding"`
OutputEncoding string `xml:"OutputEncoding"`
Image *Image `xml:"Image,omitempty"`
URLs []URL `xml:"Url"`
} }
type URL struct { type URL struct {
Type string `xml:"type,attr"` Type string `xml:"type,attr"`
Method string `xml:"method,attr,omitempty"`
Template string `xml:"template,attr"` Template string `xml:"template,attr"`
} }
func generateOpenSearchXML(config Config) { type Image struct {
// Ensure that language is initialized in `main` before calling this function Height int `xml:"height,attr"`
Width int `xml:"width,attr"`
Type string `xml:"type,attr"`
URL string `xml:",chardata"`
}
func generateOpenSearchXML(config Config) {
baseURL := addProtocol(config.Domain) baseURL := addProtocol(config.Domain)
opensearch := OpenSearchDescription{ opensearch := OpenSearchDescription{
Xmlns: "http://a9.com/-/spec/opensearch/1.1/", Xmlns: "http://a9.com/-/spec/opensearch/1.1/",
ShortName: Translate("site_name"), ShortName: Translate("site_name"),
Description: Translate("site_description"), LongName: Translate("site_name") + " Search",
Tags: Translate("site_tags"), Description: Translate("site_description"),
Tags: Translate("site_tags"),
InputEncoding: "UTF-8",
OutputEncoding: "UTF-8",
Image: &Image{
Height: 16,
Width: 16,
Type: "image/x-icon",
URL: fmt.Sprintf("%s/favicon.ico", baseURL),
},
URLs: []URL{ URLs: []URL{
{ {
Type: "text/html", Type: "text/html",
Method: "get",
Template: fmt.Sprintf("%s/search?q={searchTerms}", baseURL), Template: fmt.Sprintf("%s/search?q={searchTerms}", baseURL),
}, },
{ {
@ -48,6 +69,8 @@ func generateOpenSearchXML(config Config) {
} }
defer file.Close() defer file.Close()
file.WriteString(`<?xml version="1.0" encoding="UTF-8"?>` + "\n")
enc := xml.NewEncoder(file) enc := xml.NewEncoder(file)
enc.Indent(" ", " ") enc.Indent(" ", " ")
if err := enc.Encode(opensearch); err != nil { if err := enc.Encode(opensearch); err != nil {

View file

@ -12,8 +12,10 @@
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml"> <!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">

View file

@ -13,9 +13,11 @@
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-loadingindicator.css"> <link rel="stylesheet" href="/static/css/style-loadingindicator.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml"> <!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">

View file

@ -23,8 +23,10 @@
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml"> <!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">

View file

@ -12,8 +12,10 @@
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml"> <!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.js"></script> <script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.css" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.css" />
<!-- Icons --> <!-- Icons -->

View file

@ -14,8 +14,10 @@
<link rel="stylesheet" href="/static/css/style-music.css"> <link rel="stylesheet" href="/static/css/style-music.css">
<link rel="stylesheet" href="/static/css/style-loadingindicator.css"> <link rel="stylesheet" href="/static/css/style-loadingindicator.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml"> <!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">

View file

@ -13,6 +13,9 @@
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-privacy.css"> <link rel="stylesheet" href="/static/css/style-privacy.css">
<!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">

View file

@ -65,8 +65,9 @@
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml"> <!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">

View file

@ -12,8 +12,10 @@
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-settings.css"> <link rel="stylesheet" href="/static/css/style-settings.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml"> <!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">

View file

@ -13,8 +13,10 @@
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-loadingcircle.css"> <link rel="stylesheet" href="/static/css/style-loadingcircle.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml"> <!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">

View file

@ -12,8 +12,10 @@
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml"> <!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">