test checkout
This commit is contained in:
109
main.go
109
main.go
@@ -3,6 +3,13 @@ package main
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
messages "git.tornberg.me/go-cart-actor/proto"
|
||||||
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
|
"github.com/prometheus/client_golang/prometheus/promauto"
|
||||||
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||||
|
"html/template"
|
||||||
|
"k8s.io/client-go/kubernetes"
|
||||||
|
"k8s.io/client-go/rest"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/pprof"
|
"net/http/pprof"
|
||||||
@@ -10,13 +17,6 @@ import (
|
|||||||
"os/signal"
|
"os/signal"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
messages "git.tornberg.me/go-cart-actor/proto"
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
|
||||||
"github.com/prometheus/client_golang/prometheus/promauto"
|
|
||||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
||||||
"k8s.io/client-go/kubernetes"
|
|
||||||
"k8s.io/client-go/rest"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -113,6 +113,20 @@ func GetDiscovery() Discovery {
|
|||||||
return NewK8sDiscovery(client)
|
return NewK8sDiscovery(client)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var tpl = `<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>s10r testing - checkout</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{{ .HTMLSnippet }}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// Create a new instance of the server
|
// Create a new instance of the server
|
||||||
storage, err := NewDiskStorage(fmt.Sprintf("data/%s_state.gob", name))
|
storage, err := NewDiskStorage(fmt.Sprintf("data/%s_state.gob", name))
|
||||||
@@ -185,6 +199,49 @@ func main() {
|
|||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
w.Write([]byte("ok"))
|
w.Write([]byte("ok"))
|
||||||
})
|
})
|
||||||
|
mux.HandleFunc("/checkout", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
cookie, err := r.Cookie("cartid")
|
||||||
|
if err != nil {
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
w.Write([]byte(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if cookie.Value == "" {
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
w.Write([]byte("no cart id to checkout is empty"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
cartId := ToCartId(cookie.Value)
|
||||||
|
reply, err := syncedServer.pool.Process(cartId, Message{
|
||||||
|
Type: CreateCheckoutOrderType,
|
||||||
|
Content: &messages.CreateCheckoutOrder{
|
||||||
|
Terms: "https://slask-finder.tornberg.me/terms",
|
||||||
|
Checkout: "https://slask-finder.tornberg.me/checkout?order_id={checkout.order.id}",
|
||||||
|
Confirmation: "https://slask-finder.tornberg.me/confirmation/{checkout.order.id}",
|
||||||
|
Push: "https://cart.tornberg.me/push?order_id={checkout.order.id}",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
w.Write([]byte(err.Error()))
|
||||||
|
}
|
||||||
|
order := CheckoutOrder{}
|
||||||
|
err = json.Unmarshal(reply.Payload, &order)
|
||||||
|
if err != nil {
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
w.Write([]byte(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
t, err := template.New("checkout").Parse(tpl)
|
||||||
|
if err != nil {
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
w.Write([]byte(err.Error()))
|
||||||
|
}
|
||||||
|
err = t.Execute(w, &order)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error executing template: %v\n", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
mux.HandleFunc("/push", func(w http.ResponseWriter, r *http.Request) {
|
mux.HandleFunc("/push", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
if r.Method != http.MethodPost {
|
if r.Method != http.MethodPost {
|
||||||
@@ -241,44 +298,6 @@ func main() {
|
|||||||
w.Write([]byte("1.0.0"))
|
w.Write([]byte("1.0.0"))
|
||||||
})
|
})
|
||||||
|
|
||||||
// l, err := net.Listen("tcp", ":1234")
|
|
||||||
// if err == nil {
|
|
||||||
|
|
||||||
// go func(listener net.Listener) {
|
|
||||||
// conn, err := l.Accept()
|
|
||||||
// log.Printf("Accepted connection from %s\n", conn.RemoteAddr())
|
|
||||||
// if err != nil {
|
|
||||||
// log.Fatalf("Error accepting echo connection: %v\n", err)
|
|
||||||
// }
|
|
||||||
// go func(c net.Conn) {
|
|
||||||
// defer c.Close()
|
|
||||||
// buf := make([]byte, 1024)
|
|
||||||
// for {
|
|
||||||
// n, err := c.Read(buf)
|
|
||||||
// if err != nil {
|
|
||||||
// log.Printf("Error reading from connection: %v\n", err)
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// if n == 0 {
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// str := string(buf[:n])
|
|
||||||
// if strings.HasPrefix(str, "exit") {
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// log.Println("Echoing", str)
|
|
||||||
// _, err = c.Write([]byte(str))
|
|
||||||
// if err != nil {
|
|
||||||
// log.Printf("Error writing to connection: %v\n", err)
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }(conn)
|
|
||||||
// }(l)
|
|
||||||
// } else {
|
|
||||||
// log.Printf("Error creating echo server: %v\n", err)
|
|
||||||
// }
|
|
||||||
|
|
||||||
sigs := make(chan os.Signal, 1)
|
sigs := make(chan os.Signal, 1)
|
||||||
done := make(chan bool, 1)
|
done := make(chan bool, 1)
|
||||||
signal.Notify(sigs, syscall.SIGTERM)
|
signal.Notify(sigs, syscall.SIGTERM)
|
||||||
|
|||||||
Reference in New Issue
Block a user