Documentation
¶
Index ¶
- func PrometheusMiddleware(next http.Handler) http.Handler
- func SvelteKitHandler(path string) http.Handler
- func ValidateUserMiddleware(next http.Handler) http.Handler
- type CatalogClient
- func (c CatalogClient) Doughs() ([]pizza.Dough, error)
- func (c CatalogClient) Ingredients(ingredientType string) ([]pizza.Ingredient, error)
- func (c CatalogClient) RecordRecommendation(p pizza.Pizza) error
- func (c CatalogClient) Tools() ([]string, error)
- func (c CatalogClient) WithRequestContext(ctx context.Context) CatalogClient
- type CopyClient
- type PizzaRecommendation
- type Server
- func (s *Server) ServeHTTP(rw http.ResponseWriter, r *http.Request)
- func (s *Server) WithCatalog(db *database.InMemoryDatabase) *Server
- func (s *Server) WithCopy(db *database.InMemoryDatabase) *Server
- func (s *Server) WithFrontend() *Server
- func (s *Server) WithGateway(catalogUrl, copyUrl, wsUrl, recommendationsUrl string) *Server
- func (s *Server) WithPrometheus() *Server
- func (s *Server) WithRecommendations(catalogUrl, copyUrl string) *Server
- func (s *Server) WithTracing(provider trace.TracerProvider) *Server
- func (s *Server) WithWS() *Server
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CatalogClient ¶
type CatalogClient struct {
CatalogUrl string
TracerProvider trace.TracerProvider
Ctx context.Context
}
CatalogClient is a client that queries the Catalog service.
func (CatalogClient) Ingredients ¶
func (c CatalogClient) Ingredients(ingredientType string) ([]pizza.Ingredient, error)
func (CatalogClient) RecordRecommendation ¶
func (c CatalogClient) RecordRecommendation(p pizza.Pizza) error
func (CatalogClient) Tools ¶
func (c CatalogClient) Tools() ([]string, error)
func (CatalogClient) WithRequestContext ¶
func (c CatalogClient) WithRequestContext(ctx context.Context) CatalogClient
WithRequestContext returns a copy of the CatalogClient that will use the supplied context. This context should come from a http.Request, and if provided, CatalogClient will: - Extract parent tracer and trace IDs from it and propagate it to the requests it makes. - Extract the QuickPizza user ID from it and propagate it as well.
type CopyClient ¶
CopyClient is a client that queries the Copy service.
func (CopyClient) Adjectives ¶
func (c CopyClient) Adjectives() ([]string, error)
func (CopyClient) Names ¶
func (c CopyClient) Names() ([]string, error)
func (CopyClient) WithRequestContext ¶
func (c CopyClient) WithRequestContext(ctx context.Context) CopyClient
type PizzaRecommendation ¶
type PizzaRecommendation struct {
Pizza pizza.Pizza `json:"pizza"`
Calories int `json:"calories"`
Vegetarian bool `json:"vegetarian"`
}
PizzaRecommendation is the object returned by the /api/pizza endpoint.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server is the object that handles HTTP requests and computes pizza recommendations. Routes are divided into serveral groups that can be instantiated independently as microservices, or all together as one single big service.
func (*Server) WithCatalog ¶
func (s *Server) WithCatalog(db *database.InMemoryDatabase) *Server
WithCatalog enables routes related to the ingredients, doughs, and tools. A database.InMemoryDatabase is required to enable this endpoint group. This database is safe to be used concurrently and thus may be shared with other endpoint groups.
func (*Server) WithCopy ¶
func (s *Server) WithCopy(db *database.InMemoryDatabase) *Server
WithCopy enables copy (i.e. prose) related endpoints.
func (*Server) WithFrontend ¶
WithFrontend enables serving the embedded Svelte frontend.
func (*Server) WithGateway ¶
WithGateway enables a gateway that routes external requests to the respective services. This endpoint should be typically enabled toget with WithFrontend on a microservices-based deployment. TODO: So far the gateway only handles a few endpoints.
func (*Server) WithPrometheus ¶
WithPrometheus adds a /metrics endpoint and instrument subsequently enabled groups with general http-level metrics.
func (*Server) WithRecommendations ¶
WithRecommendations enables the recommendations endpoint in this Server. This endpoint is stateless and thus needs the URLs for the Catalog and Copy services.
func (*Server) WithTracing ¶
func (s *Server) WithTracing(provider trace.TracerProvider) *Server
WithTracing registers the specified TracerProvider within the Server. Subsequent handlers can use s.trace to create more detailed traces than what it would be possible if we applied the same tracing middleware to the whole server.