client

package
v1.0.46 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2023 License: Apache-2.0 Imports: 11 Imported by: 28

README

Miniflux API Client

PkgGoDev

Client library for Miniflux REST API.

Installation

go get -u miniflux.app/client

Example

package main

import (
	"fmt"
	"os"

	miniflux "miniflux.app/client"
)

func main() {
    // Authentication with username/password:
    client := miniflux.New("https://api.example.org", "admin", "secret")

    // Authentication with an API Key:
    client := miniflux.New("https://api.example.org", "my-secret-token")

    // Fetch all feeds.
    feeds, err := client.Feeds()
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(feeds)

    // Backup your feeds to an OPML file.
    opml, err := client.Export()
    if err != nil {
        fmt.Println(err)
        return
    }

    err = os.WriteFile("opml.xml", opml, 0644)
    if err != nil {
        fmt.Println(err)
        return
    }
}

Documentation

Overview

Package client implements a client library for the Miniflux REST API.

Examples

This code snippet fetch the list of users:

import (
	miniflux "miniflux.app/client"
)

client := miniflux.New("https://api.example.org", "admin", "secret")
users, err := client.Users()
if err != nil {
	fmt.Println(err)
	return
}
fmt.Println(users, err)

This one discover subscriptions on a website:

subscriptions, err := client.Discover("https://example.org/")
if err != nil {
	fmt.Println(err)
	return
}
fmt.Println(subscriptions)

Index

Constants

View Source
const (
	EntryStatusUnread  = "unread"
	EntryStatusRead    = "read"
	EntryStatusRemoved = "removed"
)

Entry statuses.

View Source
const (
	FilterNotStarred  = "0"
	FilterOnlyStarred = "1"
)

Variables

View Source
var (
	ErrNotAuthorized = errors.New("miniflux: unauthorized (bad credentials)")
	ErrForbidden     = errors.New("miniflux: access forbidden")
	ErrServerError   = errors.New("miniflux: internal server error")
	ErrNotFound      = errors.New("miniflux: resource not found")
)

List of exposed errors.

Functions

This section is empty.

Types

type Categories

type Categories []*Category

Categories represents a list of categories.

type Category

type Category struct {
	ID     int64  `json:"id,omitempty"`
	Title  string `json:"title,omitempty"`
	UserID int64  `json:"user_id,omitempty"`
}

Category represents a feed category.

func (Category) String

func (c Category) String() string

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client holds API procedure calls.

func New

func New(endpoint string, credentials ...string) *Client

New returns a new Miniflux client.

func (*Client) Categories

func (c *Client) Categories() (Categories, error)

Categories gets the list of categories.

func (*Client) CategoryEntries

func (c *Client) CategoryEntries(categoryID int64, filter *Filter) (*EntryResultSet, error)

CategoryEntries fetch entries of a category.

func (*Client) CategoryEntry

func (c *Client) CategoryEntry(categoryID, entryID int64) (*Entry, error)

CategoryEntry gets a single category entry.

func (*Client) CategoryFeeds

func (c *Client) CategoryFeeds(categoryID int64) (Feeds, error)

CategoryFeeds gets feeds of a category.

func (*Client) CreateCategory

func (c *Client) CreateCategory(title string) (*Category, error)

CreateCategory creates a new category.

func (*Client) CreateFeed

func (c *Client) CreateFeed(feedCreationRequest *FeedCreationRequest) (int64, error)

CreateFeed creates a new feed.

func (*Client) CreateUser

func (c *Client) CreateUser(username, password string, isAdmin bool) (*User, error)

CreateUser creates a new user in the system.

func (*Client) DeleteCategory

func (c *Client) DeleteCategory(categoryID int64) error

DeleteCategory removes a category.

func (*Client) DeleteFeed

func (c *Client) DeleteFeed(feedID int64) error

DeleteFeed removes a feed.

func (*Client) DeleteUser

func (c *Client) DeleteUser(userID int64) error

DeleteUser removes a user from the system.

func (*Client) Discover

func (c *Client) Discover(url string) (Subscriptions, error)

Discover try to find subscriptions from a website.

func (*Client) Entries

func (c *Client) Entries(filter *Filter) (*EntryResultSet, error)

Entries fetch entries.

func (*Client) Entry

func (c *Client) Entry(entryID int64) (*Entry, error)

Entry gets a single entry.

func (*Client) Export

func (c *Client) Export() ([]byte, error)

Export creates OPML file.

func (*Client) Feed

func (c *Client) Feed(feedID int64) (*Feed, error)

Feed gets a feed.

func (*Client) FeedEntries

func (c *Client) FeedEntries(feedID int64, filter *Filter) (*EntryResultSet, error)

FeedEntries fetch feed entries.

func (*Client) FeedEntry

func (c *Client) FeedEntry(feedID, entryID int64) (*Entry, error)

FeedEntry gets a single feed entry.

func (*Client) FeedIcon

func (c *Client) FeedIcon(feedID int64) (*FeedIcon, error)

FeedIcon gets a feed icon.

func (*Client) Feeds

func (c *Client) Feeds() (Feeds, error)

Feeds gets all feeds.

func (*Client) FetchCounters

func (c *Client) FetchCounters() (*FeedCounters, error)

FetchCounters

func (*Client) Import

func (c *Client) Import(f io.ReadCloser) error

Import imports an OPML file.

func (*Client) MarkAllAsRead

func (c *Client) MarkAllAsRead(userID int64) error

MarkAllAsRead marks all unread entries as read for a given user.

func (*Client) MarkCategoryAsRead

func (c *Client) MarkCategoryAsRead(categoryID int64) error

MarkCategoryAsRead marks all unread entries in a category as read.

func (*Client) MarkFeedAsRead

func (c *Client) MarkFeedAsRead(feedID int64) error

MarkFeedAsRead marks all unread entries of the feed as read.

func (*Client) Me

func (c *Client) Me() (*User, error)

Me returns the logged user information.

func (*Client) RefreshAllFeeds

func (c *Client) RefreshAllFeeds() error

RefreshAllFeeds refreshes all feeds.

func (*Client) RefreshCategory

func (c *Client) RefreshCategory(categoryID int64) error

RefreshCategory refreshes a category.

func (*Client) RefreshFeed

func (c *Client) RefreshFeed(feedID int64) error

RefreshFeed refreshes a feed.

func (*Client) ToggleBookmark

func (c *Client) ToggleBookmark(entryID int64) error

ToggleBookmark toggles entry bookmark value.

func (*Client) UpdateCategory

func (c *Client) UpdateCategory(categoryID int64, title string) (*Category, error)

UpdateCategory updates a category.

func (*Client) UpdateEntries

func (c *Client) UpdateEntries(entryIDs []int64, status string) error

UpdateEntries updates the status of a list of entries.

func (*Client) UpdateFeed

func (c *Client) UpdateFeed(feedID int64, feedChanges *FeedModificationRequest) (*Feed, error)

UpdateFeed updates a feed.

func (*Client) UpdateUser

func (c *Client) UpdateUser(userID int64, userChanges *UserModificationRequest) (*User, error)

UpdateUser updates a user in the system.

func (*Client) UserByID

func (c *Client) UserByID(userID int64) (*User, error)

UserByID returns a single user.

func (*Client) UserByUsername

func (c *Client) UserByUsername(username string) (*User, error)

UserByUsername returns a single user.

func (*Client) Users

func (c *Client) Users() (Users, error)

Users returns all users.

type Enclosure

type Enclosure struct {
	ID       int64  `json:"id"`
	UserID   int64  `json:"user_id"`
	EntryID  int64  `json:"entry_id"`
	URL      string `json:"url"`
	MimeType string `json:"mime_type"`
	Size     int    `json:"size"`
}

Enclosure represents an attachment.

type Enclosures

type Enclosures []*Enclosure

Enclosures represents a list of attachments.

type Entries

type Entries []*Entry

Entries represents a list of entries.

type Entry

type Entry struct {
	ID          int64      `json:"id"`
	UserID      int64      `json:"user_id"`
	FeedID      int64      `json:"feed_id"`
	Status      string     `json:"status"`
	Hash        string     `json:"hash"`
	Title       string     `json:"title"`
	URL         string     `json:"url"`
	CommentsURL string     `json:"comments_url"`
	Date        time.Time  `json:"published_at"`
	CreatedAt   time.Time  `json:"created_at"`
	ChangedAt   time.Time  `json:"changed_at"`
	Content     string     `json:"content"`
	Author      string     `json:"author"`
	ShareCode   string     `json:"share_code"`
	Starred     bool       `json:"starred"`
	ReadingTime int        `json:"reading_time"`
	Enclosures  Enclosures `json:"enclosures,omitempty"`
	Feed        *Feed      `json:"feed,omitempty"`
	Tags        []string   `json:"tags"`
}

Entry represents a subscription item in the system.

type EntryResultSet

type EntryResultSet struct {
	Total   int     `json:"total"`
	Entries Entries `json:"entries"`
}

EntryResultSet represents the response when fetching entries.

type Feed

type Feed struct {
	ID                          int64     `json:"id"`
	UserID                      int64     `json:"user_id"`
	FeedURL                     string    `json:"feed_url"`
	SiteURL                     string    `json:"site_url"`
	Title                       string    `json:"title"`
	CheckedAt                   time.Time `json:"checked_at,omitempty"`
	EtagHeader                  string    `json:"etag_header,omitempty"`
	LastModifiedHeader          string    `json:"last_modified_header,omitempty"`
	ParsingErrorMsg             string    `json:"parsing_error_message,omitempty"`
	ParsingErrorCount           int       `json:"parsing_error_count,omitempty"`
	Disabled                    bool      `json:"disabled"`
	IgnoreHTTPCache             bool      `json:"ignore_http_cache"`
	AllowSelfSignedCertificates bool      `json:"allow_self_signed_certificates"`
	FetchViaProxy               bool      `json:"fetch_via_proxy"`
	ScraperRules                string    `json:"scraper_rules"`
	RewriteRules                string    `json:"rewrite_rules"`
	BlocklistRules              string    `json:"blocklist_rules"`
	KeeplistRules               string    `json:"keeplist_rules"`
	Crawler                     bool      `json:"crawler"`
	UserAgent                   string    `json:"user_agent"`
	Cookie                      string    `json:"cookie"`
	Username                    string    `json:"username"`
	Password                    string    `json:"password"`
	Category                    *Category `json:"category,omitempty"`
	HideGlobally                bool      `json:"hide_globally"`
}

Feed represents a Miniflux feed.

type FeedCounters

type FeedCounters struct {
	ReadCounters   map[int64]int `json:"reads"`
	UnreadCounters map[int64]int `json:"unreads"`
}

type FeedCreationRequest

type FeedCreationRequest struct {
	FeedURL                     string `json:"feed_url"`
	CategoryID                  int64  `json:"category_id"`
	UserAgent                   string `json:"user_agent"`
	Cookie                      string `json:"cookie"`
	Username                    string `json:"username"`
	Password                    string `json:"password"`
	Crawler                     bool   `json:"crawler"`
	Disabled                    bool   `json:"disabled"`
	IgnoreHTTPCache             bool   `json:"ignore_http_cache"`
	AllowSelfSignedCertificates bool   `json:"allow_self_signed_certificates"`
	FetchViaProxy               bool   `json:"fetch_via_proxy"`
	ScraperRules                string `json:"scraper_rules"`
	RewriteRules                string `json:"rewrite_rules"`
	BlocklistRules              string `json:"blocklist_rules"`
	KeeplistRules               string `json:"keeplist_rules"`
	HideGlobally                bool   `json:"hide_globally"`
}

FeedCreationRequest represents the request to create a feed.

type FeedIcon

type FeedIcon struct {
	ID       int64  `json:"id"`
	MimeType string `json:"mime_type"`
	Data     string `json:"data"`
}

FeedIcon represents the feed icon.

type FeedModificationRequest

type FeedModificationRequest struct {
	FeedURL                     *string `json:"feed_url"`
	SiteURL                     *string `json:"site_url"`
	Title                       *string `json:"title"`
	ScraperRules                *string `json:"scraper_rules"`
	RewriteRules                *string `json:"rewrite_rules"`
	BlocklistRules              *string `json:"blocklist_rules"`
	KeeplistRules               *string `json:"keeplist_rules"`
	Crawler                     *bool   `json:"crawler"`
	UserAgent                   *string `json:"user_agent"`
	Cookie                      *string `json:"cookie"`
	Username                    *string `json:"username"`
	Password                    *string `json:"password"`
	CategoryID                  *int64  `json:"category_id"`
	Disabled                    *bool   `json:"disabled"`
	IgnoreHTTPCache             *bool   `json:"ignore_http_cache"`
	AllowSelfSignedCertificates *bool   `json:"allow_self_signed_certificates"`
	FetchViaProxy               *bool   `json:"fetch_via_proxy"`
	HideGlobally                *bool   `json:"hide_globally"`
}

FeedModificationRequest represents the request to update a feed.

type Feeds

type Feeds []*Feed

Feeds represents a list of feeds.

type Filter

type Filter struct {
	Status        string
	Offset        int
	Limit         int
	Order         string
	Direction     string
	Starred       string
	Before        int64
	After         int64
	BeforeEntryID int64
	AfterEntryID  int64
	Search        string
	CategoryID    int64
	FeedID        int64
	Statuses      []string
}

Filter is used to filter entries.

type Subscription

type Subscription struct {
	Title string `json:"title"`
	URL   string `json:"url"`
	Type  string `json:"type"`
}

Subscription represents a feed subscription.

func (Subscription) String

func (s Subscription) String() string

type Subscriptions

type Subscriptions []*Subscription

Subscriptions represents a list of subscriptions.

type User

type User struct {
	ID                     int64      `json:"id"`
	Username               string     `json:"username"`
	Password               string     `json:"password,omitempty"`
	IsAdmin                bool       `json:"is_admin"`
	Theme                  string     `json:"theme"`
	Language               string     `json:"language"`
	Timezone               string     `json:"timezone"`
	EntryDirection         string     `json:"entry_sorting_direction"`
	EntryOrder             string     `json:"entry_sorting_order"`
	Stylesheet             string     `json:"stylesheet"`
	GoogleID               string     `json:"google_id"`
	OpenIDConnectID        string     `json:"openid_connect_id"`
	EntriesPerPage         int        `json:"entries_per_page"`
	KeyboardShortcuts      bool       `json:"keyboard_shortcuts"`
	ShowReadingTime        bool       `json:"show_reading_time"`
	EntrySwipe             bool       `json:"entry_swipe"`
	GestureNav             string     `json:"gesture_nav"`
	LastLoginAt            *time.Time `json:"last_login_at"`
	DisplayMode            string     `json:"display_mode"`
	DefaultReadingSpeed    int        `json:"default_reading_speed"`
	CJKReadingSpeed        int        `json:"cjk_reading_speed"`
	DefaultHomePage        string     `json:"default_home_page"`
	CategoriesSortingOrder string     `json:"categories_sorting_order"`
	MarkReadOnView         bool       `json:"mark_read_on_view"`
}

User represents a user in the system.

func (User) String

func (u User) String() string

type UserCreationRequest

type UserCreationRequest struct {
	Username        string `json:"username"`
	Password        string `json:"password"`
	IsAdmin         bool   `json:"is_admin"`
	GoogleID        string `json:"google_id"`
	OpenIDConnectID string `json:"openid_connect_id"`
}

UserCreationRequest represents the request to create a user.

type UserModificationRequest

type UserModificationRequest struct {
	Username               *string `json:"username"`
	Password               *string `json:"password"`
	IsAdmin                *bool   `json:"is_admin"`
	Theme                  *string `json:"theme"`
	Language               *string `json:"language"`
	Timezone               *string `json:"timezone"`
	EntryDirection         *string `json:"entry_sorting_direction"`
	EntryOrder             *string `json:"entry_sorting_order"`
	Stylesheet             *string `json:"stylesheet"`
	GoogleID               *string `json:"google_id"`
	OpenIDConnectID        *string `json:"openid_connect_id"`
	EntriesPerPage         *int    `json:"entries_per_page"`
	KeyboardShortcuts      *bool   `json:"keyboard_shortcuts"`
	ShowReadingTime        *bool   `json:"show_reading_time"`
	EntrySwipe             *bool   `json:"entry_swipe"`
	GestureNav             *string `json:"gesture_nav"`
	DisplayMode            *string `json:"display_mode"`
	DefaultReadingSpeed    *int    `json:"default_reading_speed"`
	CJKReadingSpeed        *int    `json:"cjk_reading_speed"`
	DefaultHomePage        *string `json:"default_home_page"`
	CategoriesSortingOrder *string `json:"categories_sorting_order"`
	MarkReadOnView         *bool   `json:"mark_read_on_view"`
}

UserModificationRequest represents the request to update a user.

type Users

type Users []User

Users represents a list of users.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL