api

package
v0.0.9 Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2023 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Api

type Api interface {
	Handler(prefix string) chi.Router
}

func New

func New(auth auth.Service, handler Handler) Api

type Controller

type Controller interface {
	GetFeeds(ctx context.Context, req *GetFeedsRequest, usr user.User) (*GetFeedsResponse, error)
	CreateFeeds(ctx context.Context, req *CreateFeedsRequest, usr user.User) (*CreateFeedsResponse, error)
	GetItems(ctx context.Context, req *GetItemsRequest, usr user.User) (*GetItemsResponse, error)
	CreateItems(ctx context.Context, req *CreateItemsRequest, usr user.User) (*CreateItemsResponse, error)
	UploadFiles(ctx context.Context, fs []multipart.File, usr user.User) (*UploadFilesResponse, error)
	GetRssUrl(ctx context.Context, feedId string) (string, error)
}

func NewController

func NewController(store store.Store, fileStorage files.Storage, idService IdService, feedController rss.Controller) Controller

type CreateFeedsRequest

type CreateFeedsRequest struct {
	Data []*CreateFeedsResource `json:"data"`

} // @name CreateFeedsRequest

func (*CreateFeedsRequest) Validate

func (r *CreateFeedsRequest) Validate() error

type CreateFeedsResource

type CreateFeedsResource struct {
	Title       string `json:"title" example:"Bored Owls Online Radio" extensions:"x-order=0"`
	Link        string `json:"link" example:"https://example.com" extensions:"x-order=1"`
	Authors     string `json:"authors" example:"The Owl" extensions:"x-order=2"`
	Description string `json:"description" example:"Bored owls talk about whatever happens to be on their minds" extensions:"x-order=3"`

} // @name CreateFeedsResource

func (*CreateFeedsResource) Validate

func (r *CreateFeedsResource) Validate() error

type CreateFeedsResponse

type CreateFeedsResponse struct {
	Data []*CreateFeedsResultResource `json:"data"`

} // @name CreateFeedsResponse

type CreateFeedsResultResource

type CreateFeedsResultResource struct {
	Id string `json:"id" example:"feed_2K9BWVNuo3sG4yM322fbP3mB6ls" extensions:"x-order=0"`

} // @name CreateFeedsResultResource

type CreateItemResultResource

type CreateItemResultResource struct {
	Id string `json:"id" example:"item_2K9BWVNuo3sG4yM322fbP3mB6ls" extensions:"x-order=0"`

} // @name CreateItemResultResource

type CreateItemsRequest

type CreateItemsRequest struct {
	Data []*CreateItemsResource `json:"data"`

} // @name CreateItemsRequest

func (*CreateItemsRequest) Validate

func (r *CreateItemsRequest) Validate() error

type CreateItemsResource

type CreateItemsResource struct {
	FileId      string     `json:"file_id" example:"file_2K9BWVNuo3sG4yM322fbP3mB6ls" extensions:"x-order=0"`
	FeedId      string     `json:"feed_id" example:"feed_2K9BWVNuo3sG4yM322fbP3mB6ls" extensions:"x-order=1"`
	Title       string     `json:"title" example:"Bored Owls Online Radio" extensions:"x-order=2"`
	Link        string     `json:"link" example:"https://example.com" extensions:"x-order=3"`
	Authors     string     `json:"authors" example:"The Owl" extensions:"x-order=4"`
	Description string     `json:"description" example:"Bored owls talk about whatever happens to be on their minds" extensions:"x-order=5"`
	PublishedAt ytime.Time `json:"published_at" swaggertype:"string" format:"date-time" example:"2023-01-01T01:02:03.456Z" extensions:"x-order=6"`

} // @name CreateItemsResource

func (*CreateItemsResource) Validate

func (r *CreateItemsResource) Validate() error

type CreateItemsResponse

type CreateItemsResponse struct {
	Data []*CreateItemResultResource `json:"data"`

} // @name CreateItemsResponse

type ErrorResponse

type ErrorResponse struct {
	Error   string `json:"error"`
	Message string `json:"message"`

} // @name ErrorResponse

type FeedResource

type FeedResource struct {
	Id          string     `json:"id" example:"feed_2K9BWVNuo3sG4yM322fbP3mB6ls" extensions:"x-order=0"`
	RssUrl      string     `json:"rss_url" example:"https://example.com/feed.rss" extensions:"x-order=1"`
	Title       string     `json:"title" example:"Bored Owls Online Radio" extensions:"x-order=2"`
	Link        string     `json:"link" example:"https://example.com" extensions:"x-order=3"`
	Authors     string     `json:"authors" example:"The Owl" extensions:"x-order=4"`
	Description string     `json:"description" example:"Bored owls talk about whatever happens to be on their minds" extensions:"x-order=5"`
	CreatedAt   ytime.Time `json:"created_at" swaggertype:"string" format:"date-time" example:"2023-01-01T01:02:03.456Z" extensions:"x-order=6"`
	UpdatedAt   ytime.Time `json:"updated_at" swaggertype:"string" format:"date-time" example:"2023-01-01T01:02:03.456Z" extensions:"x-order=7"`

} // @name FeedResource

type GetFeedsRequest

type GetFeedsRequest struct {
	Ids []string `json:"ids" extensions:"x-order=0"`

} // @name GetFeedsRequest

func (*GetFeedsRequest) Validate

func (r *GetFeedsRequest) Validate() error

type GetFeedsResponse

type GetFeedsResponse struct {
	Data []*FeedResource `json:"data"`

} // @name GetFeedsResponse

type GetItemsRequest

type GetItemsRequest struct {
	Ids     []string `json:"ids" extensions:"x-order=0"`
	FeedIds []string `json:"feed_ids" extensions:"x-order=1"`

} // @name GetItemsRequest

type GetItemsResponse

type GetItemsResponse struct {
	Data []*ItemResource `json:"data"`

} // @name GetItemsResponse

type Handler

type Handler interface {
	GetFeeds(w http.ResponseWriter, r *http.Request)
	CreateFeeds(w http.ResponseWriter, r *http.Request)
	GetItems(w http.ResponseWriter, r *http.Request)
	CreateItems(w http.ResponseWriter, r *http.Request)
	UploadFiles(w http.ResponseWriter, r *http.Request)
	GetRssRedirect(w http.ResponseWriter, r *http.Request)
}

func NewHandler

func NewHandler(c Controller) Handler

type IdService

type IdService interface {
	Feed(context.Context) string
	Item(context.Context) string
	File(context.Context) string
	Rss(context.Context) string
}

func NewIdService

func NewIdService() IdService

type ItemFileResource

type ItemFileResource struct {
	Id          string `json:"id,omitempty" example:"file_2K9BWVNuo3sG4yM322fbP3mB6ls" extensions:"x-order=0"`
	Url         string `json:"url" example:"https://example.com/file.mp3" extensions:"x-order=1"`
	Size        int64  `json:"size" example:"123456" extensions:"x-order=2"`
	ContentType string `json:"content_type" example:"audio/mpeg" extensions:"x-order=3"`

} // @name ItemFileResource

type ItemResource

type ItemResource struct {
	Id          string            `json:"id" example:"item_2K9BWVNuo3sG4yM322fbP3mB6ls" extensions:"x-order=0"`
	File        *ItemFileResource `json:"file,omitempty" extensions:"x-order=1"`
	FeedId      string            `json:"feed_id" example:"feed_2K9BWVNuo3sG4yM322fbP3mB6ls" extensions:"x-order=2"`
	Title       string            `json:"title" example:"Bored Owls Online Radio" extensions:"x-order=3"`
	Link        string            `json:"link" example:"https://example.com" extensions:"x-order=4"`
	Authors     string            `json:"authors" example:"The Owl" extensions:"x-order=5"`
	Description string            `json:"description" example:"Bored owls talk about whatever happens to be on their minds" extensions:"x-order=6"`
	CreatedAt   ytime.Time        `json:"created_at" swaggertype:"string" format:"date-time" example:"2023-01-01T01:02:03.456Z" extensions:"x-order=7"`
	UpdatedAt   ytime.Time        `json:"updated_at" swaggertype:"string" format:"date-time" example:"2023-01-01T01:02:03.456Z" extensions:"x-order=8"`
	PublishedAt ytime.Time        `json:"published_at" swaggertype:"string" format:"date-time" example:"2023-01-01T01:02:03.456Z" extensions:"x-order=9"`

} // @name ItemResource

type UploadFileResultResource

type UploadFileResultResource struct {
	Id    string `json:"id,omitempty" example:"file_2K9BWVNuo3sG4yM322fbP3mB6ls" extensions:"x-order=0"`
	Error string `json:"error,omitempty" example:"invalid file format" extensions:"x-order=1"`

} // @name UploadFileResultResource

type UploadFilesResponse

type UploadFilesResponse struct {
	Data []*UploadFileResultResource `json:"data"`

} // @name UploadFilesResponse

Directories

Path Synopsis
Package swagger GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag
Package swagger GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag

Jump to

Keyboard shortcuts

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