server

package
v0.5.0-alpha.7 Latest Latest
Warning

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

Go to latest
Published: Nov 2, 2025 License: Apache-2.0 Imports: 45 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HealthAPITag         = "health"
	UsersAPITag          = "users"
	ItemsAPITag          = "items"
	FeedbackAPITag       = "feedback"
	RecommendationAPITag = "recommendation"
	MeasurementsAPITag   = "measurements"
	DetractedAPITag      = "deprecated"
)

Variables

View Source
var (
	RestAPIRequestSecondsVec = promauto.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: "gorse",
		Subsystem: "server",
		Name:      "rest_api_request_seconds",
	}, []string{"api"})
)

Functions

func BadRequest

func BadRequest(response *restful.Response, err error)

BadRequest returns a bad request error.

func Error

func Error(response *restful.Response, httpStatus int, responseError error)

func InternalServerError

func InternalServerError(response *restful.Response, err error)

InternalServerError returns a internal server error.

func Ok

func Ok(response *restful.Response, content interface{})

Ok sends the content as JSON to the client.

func PageNotFound

func PageNotFound(response *restful.Response, err error)

PageNotFound returns a not found error.

func ParseDuration

func ParseDuration(request *restful.Request, name string) (time.Duration, error)

ParseDuration parses duration from the query parameter.

func ParseInt

func ParseInt(request *restful.Request, name string, fallback int) (value int, err error)

ParseInt parses integers from the query parameter.

func ReadCategories

func ReadCategories(request *restful.Request, defaultCategories []string) []string

ReadCategories tries to read categories from the request. If the category is not found, it returns an empty string.

func Text

func Text(response *restful.Response, content string)

Text returns a plain text.

Types

type Feedback

type Feedback struct {
	data.FeedbackKey
	Value     float64
	Timestamp string
	Comment   string
}

Feedback is the data structure for the feedback but stores the timestamp using string.

func (Feedback) ToDataFeedback

func (f Feedback) ToDataFeedback() (data.Feedback, error)

type FeedbackIterator

type FeedbackIterator struct {
	Cursor   string
	Feedback []data.Feedback
}

FeedbackIterator is the iterator for feedback.

type HealthStatus

type HealthStatus struct {
	Ready               bool
	DataStoreError      error
	CacheStoreError     error
	DataStoreConnected  bool
	CacheStoreConnected bool
}

type Item

type Item struct {
	ItemId     string
	IsHidden   bool
	Categories []string
	Timestamp  string
	Labels     any
	Comment    string
}

Item is the data structure for the item but stores the timestamp using string.

type ItemIterator

type ItemIterator struct {
	Cursor string
	Items  []data.Item
}

ItemIterator is the iterator for items.

type Recommender

type Recommender func(ctx *recommendContext) error

type RestServer

type RestServer struct {
	*config.Settings

	HttpHost string
	HttpPort int

	DisableLog bool
	WebService *restful.WebService
	HttpServer *http.Server
}

RestServer implements a REST-ful API server.

func (*RestServer) AuthFilter

func (s *RestServer) AuthFilter(req *restful.Request, resp *restful.Response, chain *restful.FilterChain)

func (*RestServer) CreateWebService

func (s *RestServer) CreateWebService()

CreateWebService creates web service.

func (*RestServer) LogFilter

func (s *RestServer) LogFilter(req *restful.Request, resp *restful.Response, chain *restful.FilterChain)

func (*RestServer) MetricsFilter

func (s *RestServer) MetricsFilter(req *restful.Request, resp *restful.Response, chain *restful.FilterChain)

func (*RestServer) Recommend

func (s *RestServer) Recommend(ctx context.Context, response *restful.Response, userId string, categories []string, n int, recommenders ...Recommender) ([]string, error)

Recommend items to users. 1. If there are recommendations in cache, return cached recommendations. 2. If there are historical interactions of the users, return similar items. 3. Otherwise, return fallback recommendation (popular/latest).

func (*RestServer) RecommendCollaborative

func (s *RestServer) RecommendCollaborative(ctx *recommendContext) error

func (*RestServer) RecommendItemBased

func (s *RestServer) RecommendItemBased(ctx *recommendContext) error

func (*RestServer) RecommendLatest

func (s *RestServer) RecommendLatest(ctx *recommendContext) error

func (*RestServer) RecommendOffline

func (s *RestServer) RecommendOffline(ctx *recommendContext) error

func (*RestServer) RecommendUserBased

func (s *RestServer) RecommendUserBased(ctx *recommendContext) error

func (*RestServer) SearchDocuments

func (s *RestServer) SearchDocuments(collection, subset string, categories []string,
	iteratee func(item cache.Score) (any, error),
	request *restful.Request, response *restful.Response,
)

func (*RestServer) SetLastModified

func (s *RestServer) SetLastModified(request *restful.Request, response *restful.Response, key string)

func (*RestServer) StartHttpServer

func (s *RestServer) StartHttpServer(container *restful.Container)

StartHttpServer starts the REST-ful API server.

type Server

type Server struct {
	RestServer
	// contains filtered or unexported fields
}

Server manages states of a server node.

func NewServer

func NewServer(
	masterHost string,
	masterPort int,
	serverHost string,
	serverPort int,
	cacheFile string,
	tlsConfig *util.TLSConfig,
) *Server

NewServer creates a server node.

func (*Server) Serve

func (s *Server) Serve()

Serve starts a server node.

func (*Server) ServerName

func (s *Server) ServerName() (string, error)

func (*Server) Shutdown

func (s *Server) Shutdown()

func (*Server) Sync

func (s *Server) Sync()

Sync this server to the master.

type Success

type Success struct {
	RowAffected int
}

Success is the returned data structure for data insert operations.

type UserIterator

type UserIterator struct {
	Cursor string
	Users  []data.User
}

Jump to

Keyboard shortcuts

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