1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-08-01 17:38:37 +00:00

Consider base path when generating third-party services API endpoint

This commit is contained in:
Frédéric Guillot 2023-08-12 19:01:22 -07:00
parent fb8737e330
commit 13d9d86acd
9 changed files with 87 additions and 60 deletions

View file

@ -5,10 +5,10 @@ package linkding // import "miniflux.app/v2/internal/integration/linkding"
import (
"fmt"
"net/url"
"strings"
"miniflux.app/v2/internal/http/client"
"miniflux.app/v2/internal/url"
)
// Document structure of a Linkding document
@ -33,7 +33,7 @@ func NewClient(baseURL, apiKey, tags string, unread bool) *Client {
}
// AddEntry sends an entry to Linkding.
func (c *Client) AddEntry(title, url string) error {
func (c *Client) AddEntry(title, entryURL string) error {
if c.baseURL == "" || c.apiKey == "" {
return fmt.Errorf("linkding: missing credentials")
}
@ -43,18 +43,18 @@ func (c *Client) AddEntry(title, url string) error {
}
doc := &Document{
Url: url,
Url: entryURL,
Title: title,
TagNames: strings.FieldsFunc(c.tags, tagsSplitFn),
Unread: c.unread,
}
apiURL, err := getAPIEndpoint(c.baseURL, "/api/bookmarks/")
apiEndpoint, err := url.JoinBaseURLAndPath(c.baseURL, "/api/bookmarks/")
if err != nil {
return err
return fmt.Errorf(`linkding: invalid API endpoint: %v`, err)
}
clt := client.New(apiURL)
clt := client.New(apiEndpoint)
clt.WithAuthorization("Token " + c.apiKey)
response, err := clt.PostJSON(doc)
if err != nil {
@ -67,18 +67,3 @@ func (c *Client) AddEntry(title, url string) error {
return nil
}
func getAPIEndpoint(baseURL, pathURL string) (string, error) {
u, err := url.Parse(baseURL)
if err != nil {
return "", fmt.Errorf("linkding: invalid API endpoint: %v", err)
}
relative, err := url.Parse(pathURL)
if err != nil {
return "", fmt.Errorf("linkding: invalid API endpoint: %v", err)
}
u = u.ResolveReference(relative)
return u.String(), nil
}