diff options
author | 2023-08-10 19:46:45 -0700 | |
---|---|---|
committer | 2023-08-10 20:29:34 -0700 | |
commit | 168a870c025bfef6efdeb46e166e79a16093c157 (patch) | |
tree | 4d8ab69c7e3ef03a7ade06e7b5e5053429a64c3b /internal/integration/notion/notion.go | |
parent | c2349032552891745cbbc3d2a9e772845a0239f4 (diff) | |
download | v2-168a870c025bfef6efdeb46e166e79a16093c157.tar.gz v2-168a870c025bfef6efdeb46e166e79a16093c157.tar.zst v2-168a870c025bfef6efdeb46e166e79a16093c157.zip |
Move internal packages to an internal folder
For reference: https://go.dev/doc/go1.4#internalpackages
Diffstat (limited to 'internal/integration/notion/notion.go')
-rw-r--r-- | internal/integration/notion/notion.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/internal/integration/notion/notion.go b/internal/integration/notion/notion.go new file mode 100644 index 00000000..fe579928 --- /dev/null +++ b/internal/integration/notion/notion.go @@ -0,0 +1,54 @@ +// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +package notion + +import ( + "fmt" + + "miniflux.app/v2/internal/http/client" +) + +// Client represents a Notion client. +type Client struct { + token string + pageID string +} + +// NewClient returns a new Notion client. +func NewClient(token, pageID string) *Client { + return &Client{token, pageID} +} + +func (c *Client) AddEntry(entryURL string, entryTitle string) error { + if c.token == "" || c.pageID == "" { + return fmt.Errorf("notion: missing credentials") + } + clt := client.New("https://api.notion.com/v1/blocks/" + c.pageID + "/children") + block := &Data{ + Children: []Block{ + { + Object: "block", + Type: "bookmark", + Bookmark: Bookmark{ + Caption: []interface{}{}, + URL: entryURL, + }, + }, + }, + } + clt.WithAuthorization("Bearer " + c.token) + customHeaders := map[string]string{ + "Notion-Version": "2022-06-28", + } + clt.WithCustomHeaders(customHeaders) + response, error := clt.PatchJSON(block) + if error != nil { + return fmt.Errorf("notion: unable to patch entry: %v", error) + } + + if response.HasServerFailure() { + return fmt.Errorf("notion: request failed, status=%d", response.StatusCode) + } + return nil +} |