api.spaceplanner.app

Spaceplanner API
git clone git://jacobedwards.org/api.spaceplanner.app
Log | Files | Refs

order.go (1097B)


      1 package main
      2 
      3 import (
      4 	"github.com/gin-gonic/gin"
      5 )
      6 
      7 type order struct {
      8 	// May have more fields in the future
      9 	Prices []string `json:"prices"`
     10 }
     11 
     12 func (e *Env) GetServices(c *gin.Context) {
     13 	if services, err := e.backend.Services(); err != nil {
     14 		RespondError(c, 500, "Unable to get services: %s", err.Error())
     15 	} else {
     16 		Respond(c, 200, services)
     17 	}
     18 }
     19 
     20 func (e *Env) CreateCheckout(c *gin.Context) {
     21 	user := c.Param("user")
     22 
     23 	var order order
     24 	if err := c.ShouldBind(&order); err != nil {
     25 		RespondError(c, 400, "Invalid order: %s", err.Error())
     26 		return
     27 	}
     28 	if len(order.Prices) != 1 {
     29 		RespondError(c, 400, "Must contain one and only one price")
     30 		return
     31 	}
     32 
     33 	if portal, err := e.backend.CreateCheckout(user, order.Prices[0]); err != nil {
     34 		RespondError(c, 500, "Unable to create order: %s", err.Error())
     35 	} else {
     36 		Respond(c, 200, portal)
     37 	}
     38 }
     39 
     40 func (e *Env) CreatePortal(c *gin.Context) {
     41 	user := c.Param("user")
     42 
     43 	if portal, err := e.backend.CreatePortal(user); err != nil {
     44 		RespondError(c, 500, "Unable to create order: %s", err.Error())
     45 	} else {
     46 		Respond(c, 200, portal)
     47 	}
     48 }