// Copyright (C) 2021 nytpu // SPDX-License-Identifier: AGPL-3.0-or-later // For more license details, see LICENSE or . // package fetch implements routines for fetching gemini, gopher, and http // resources and parsing feed formats package fetch import ( "fmt" "net/url" "golang.nytpu.com/comitium/core" ) // NewFeed will fetch and create a new core.Feed given any url func NewFeed(remoteURL *url.URL, title string) (*core.Feed, error) { switch remoteURL.Scheme { case "gemini": return newGeminiFeed(remoteURL, title) case "http", "https": return newHTTPFeed(remoteURL, title) case "gopher", "gophers": return newGopherFeed(remoteURL, title) default: return nil, fmt.Errorf("Unsupported protocol '%s'", remoteURL.Scheme) } } // NewPage will fetch and create a new core.Page given any url func NewPage(remoteURL *url.URL, title string) (*core.Page, error) { switch remoteURL.Scheme { case "gemini": return newGeminiPage(remoteURL, title) case "http", "https": return newHTTPPage(remoteURL, title) case "gopher", "gophers": return newGopherPage(remoteURL, title) default: return nil, fmt.Errorf("Unsupported protocol '%s'", remoteURL.Scheme) } } // UpdateFeed will check an existing core.Feed for updates func UpdateFeed(feed *core.Feed) error { // TODO return nil } // UpdatePage will check an existing core.Page for updages func UpdatePage(page *core.Page) error { // TODO return nil }