upmenu

package
v0.0.0-...-df769fd Latest Latest
Warning

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

Go to latest
Published: May 4, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultBaseURL       = "https://dobrabula.orderwebsite.com"
	DefaultSiteID        = "a30e364b-df5c-11e7-93f9-525400841de1"
	DefaultRestaurantID  = "b8a354b8-c958-11eb-a1e9-525400080521"
	DefaultLanguage      = "pl"
	DefaultDeliveryType  = DeliveryTypeDelivery
	DefaultCartLocation  = CartLocationMenu
	DefaultPaymentMethod = PaymentMethodOnline
)
View Source
const (
	HeaderAccept         = "Accept"
	HeaderContentType    = "Content-Type"
	HeaderUserAgent      = "User-Agent"
	HeaderXRequestedWith = "X-Requested-With"
)
View Source
const (
	ContentTypeJSON = "application/json"
	ContentTypeHTML = "text/html"
)
View Source
const (
	DeliveryTypeDelivery = "DELIVERY"
	DeliveryTypeTakeaway = "TAKEAWAY"
	DeliveryTypeOnSite   = "ONSITE"
)
View Source
const (
	CartLocationMenu      = "MENU"
	CartLocationOrderForm = "ORDER_FORM"
)
View Source
const (
	PaymentMethodOnline = "ONLINE"
	PaymentMethodCash   = "CASH"
	PaymentMethodCard   = "CART"
)

Variables

View Source
var ErrProductRequiresConfiguration = errors.New("upmenu product requires configuration")

Functions

This section is empty.

Types

type BuyingFlow

type BuyingFlow struct {
	BuyingFlowID   string           `json:"buyingFlowId,omitempty"`
	RestaurantID   string           `json:"restaurantId,omitempty"`
	CartID         string           `json:"cartId,omitempty"`
	ProductPriceID string           `json:"productPriceId,omitempty"`
	ProductName    string           `json:"productName,omitempty"`
	ProductPrice   *float64         `json:"productPrice,omitempty"`
	Quantity       int              `json:"quantity,omitempty"`
	Steps          []BuyingFlowStep `json:"steps,omitempty"`
	Errors         []string         `json:"errors,omitempty"`
	TotalPrice     *float64         `json:"totalPrice,omitempty"`
	Raw            map[string]any   `json:"-"`
}

type BuyingFlowStep

type BuyingFlowStep struct {
	ID   string `json:"id,omitempty"`
	Name string `json:"name,omitempty"`
	Done bool   `json:"done"`
}

type Cart

type Cart struct {
	ID             string     `json:"id,omitempty"`
	DeliveryType   string     `json:"delivery_type,omitempty"`
	DeliveryStatus string     `json:"delivery_status,omitempty"`
	TotalCost      *float64   `json:"total_cost,omitempty"`
	ProductsCost   *float64   `json:"products_cost,omitempty"`
	DeliveryCost   *float64   `json:"delivery_cost,omitempty"`
	ItemsSize      int        `json:"items_size,omitempty"`
	Items          []CartItem `json:"items,omitempty"`
	Messages       []string   `json:"messages,omitempty"`
	Errors         []string   `json:"errors,omitempty"`
}

type CartItem

type CartItem struct {
	ID             string   `json:"id,omitempty"`
	Name           string   `json:"name,omitempty"`
	ProductID      string   `json:"product_id,omitempty"`
	ProductPriceID string   `json:"product_price_id,omitempty"`
	Quantity       float64  `json:"quantity,omitempty"`
	Price          *float64 `json:"price,omitempty"`
}

type CartRequest

type CartRequest struct {
	CartID        string `json:"cartId,omitempty"`
	CustomerID    any    `json:"customerId,omitempty"`
	DeliveryType  string `json:"deliveryType,omitempty"`
	CartLocation  string `json:"cartLocation,omitempty"`
	PaymentMethod string `json:"paymentMethod,omitempty"`
}

type Client

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

func NewClient

func NewClient(cfg Config) (*Client, error)

func NewClientFromRestaurantURL

func NewClientFromRestaurantURL(ctx context.Context, restaurantURL string, cfg Config) (*Client, error)

func (*Client) AddSimple

func (c *Client) AddSimple(ctx context.Context, productPriceID string, quantity int) (*Cart, error)

func (*Client) FinishBuyingFlow

func (c *Client) FinishBuyingFlow(ctx context.Context, flow *BuyingFlow) (*BuyingFlow, error)

func (*Client) Menu

func (c *Client) Menu(ctx context.Context) (*Menu, error)

func (*Client) MenuHTML

func (c *Client) MenuHTML(ctx context.Context) (string, error)

func (*Client) MenuJSON

func (c *Client) MenuJSON(ctx context.Context) (*Menu, error)

func (*Client) RequiresConfiguration

func (c *Client) RequiresConfiguration(ctx context.Context, productPriceID string) (bool, error)

func (*Client) RestaurantInfo

func (c *Client) RestaurantInfo(ctx context.Context) (*RestaurantInfo, error)

func (*Client) SetState

func (c *Client) SetState(state State)

func (*Client) ShowCart

func (c *Client) ShowCart(ctx context.Context) (*Cart, error)

func (*Client) StartBuyingFlow

func (c *Client) StartBuyingFlow(ctx context.Context, productPriceID string) (*BuyingFlow, error)

func (*Client) State

func (c *Client) State() State

type Config

type Config struct {
	BaseURL       string
	SiteID        string
	RestaurantID  string
	Language      string
	DeliveryType  string
	CartLocation  string
	PaymentMethod string
	UserAgent     string
	HTTPClient    *http.Client
}
type Menu struct {
	Categories []MenuCategory `json:"categories"`
	Products   []MenuProduct  `json:"products"`
}

func ParseMenuHTML

func ParseMenuHTML(src string) (*Menu, error)
type MenuCategory struct {
	ID          string        `json:"id,omitempty"`
	Name        string        `json:"name,omitempty"`
	Description string        `json:"description,omitempty"`
	Products    []MenuProduct `json:"products,omitempty"`
}
type MenuProduct struct {
	ID               string    `json:"id,omitempty"`
	CategoryID       string    `json:"category_id,omitempty"`
	CategoryName     string    `json:"category_name,omitempty"`
	Name             string    `json:"name,omitempty"`
	Description      string    `json:"description,omitempty"`
	ImageURL         string    `json:"image_url,omitempty"`
	ProductPriceID   string    `json:"product_price_id,omitempty"`
	BasePrice        *float64  `json:"base_price,omitempty"`
	RequiresFlow     bool      `json:"requires_flow"`
	AvailableOptions []Variant `json:"available_options,omitempty"`
}

type RequiredResult

type RequiredResult struct {
	Required bool `json:"required"`
}

type RestaurantInfo

type RestaurantInfo struct {
	ID                  string   `json:"id,omitempty"`
	Name                string   `json:"name,omitempty"`
	URL                 string   `json:"url,omitempty"`
	Street              string   `json:"street,omitempty"`
	PostalCode          string   `json:"postal_code,omitempty"`
	City                string   `json:"city,omitempty"`
	Phone               string   `json:"phone,omitempty"`
	Email               string   `json:"email,omitempty"`
	Currency            string   `json:"currency,omitempty"`
	Delivery            bool     `json:"delivery"`
	Takeaway            bool     `json:"takeaway"`
	OnSite              bool     `json:"onsite"`
	OnlineOrdering      bool     `json:"online_ordering"`
	OpenNow             bool     `json:"open_now"`
	MinimumOrderPrice   *float64 `json:"minimum_order_price,omitempty"`
	MinimumDeliveryCost *float64 `json:"minimum_delivery_cost,omitempty"`
	MaximumDeliveryCost *float64 `json:"maximum_delivery_cost,omitempty"`
}

type State

type State struct {
	CartID string `json:"cart_id,omitempty"`
}

type Variant

type Variant struct {
	ID    string   `json:"id,omitempty"`
	Name  string   `json:"name,omitempty"`
	Price *float64 `json:"price,omitempty"`
}

Jump to

Keyboard shortcuts

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