Add execute for create command
This commit is contained in:
		@@ -1,13 +1,8 @@
 | 
				
			|||||||
package main
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"bytes"
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io/ioutil"
 | 
					 | 
				
			||||||
	"net/http"
 | 
					 | 
				
			||||||
	"net/netip"
 | 
						"net/netip"
 | 
				
			||||||
	"os"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/google/uuid"
 | 
						"github.com/google/uuid"
 | 
				
			||||||
	pcsdk "github.com/thefeli73/polemos/commands"
 | 
						pcsdk "github.com/thefeli73/polemos/commands"
 | 
				
			||||||
@@ -19,38 +14,10 @@ func main() {
 | 
				
			|||||||
	uuid := uuid.MustParse("87e79cbc-6df6-4462-8412-85d6c473e3b1")
 | 
						uuid := uuid.MustParse("87e79cbc-6df6-4462-8412-85d6c473e3b1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m := pcsdk.NewCommandCreate(5555, 6666, ip, state.CustomUUID(uuid))
 | 
						m := pcsdk.NewCommandCreate(5555, 6666, ip, state.CustomUUID(uuid))
 | 
				
			||||||
	data, err := json.Marshal(m)
 | 
						err := m.Execute("http://localhost:3000")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		fmt.Printf("client: could not serialize into JSON")
 | 
							fmt.Printf("error executing create command: %s\n", err)
 | 
				
			||||||
		os.Exit(1)
 | 
						} else {
 | 
				
			||||||
 | 
							fmt.Println("executing create command completed")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	fmt.Printf(string(data))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	requestURL := "http://localhost:3000/command"
 | 
					 | 
				
			||||||
	bodyReader := bytes.NewReader(data)
 | 
					 | 
				
			||||||
	req, err := http.NewRequest(http.MethodPost, requestURL, bodyReader)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		fmt.Printf("client: could not create request: %s\n", err)
 | 
					 | 
				
			||||||
		os.Exit(1)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	req.Header.Set("Content-Type", "application/json")
 | 
					 | 
				
			||||||
	fmt.Println(req)
 | 
					 | 
				
			||||||
	res, err := http.DefaultClient.Post(requestURL, "application/json", bodyReader)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		fmt.Printf("client: error making http request: %s\n", err)
 | 
					 | 
				
			||||||
		os.Exit(1)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fmt.Printf("client: got response!\n")
 | 
					 | 
				
			||||||
	fmt.Printf("client: status code: %d\n", res.StatusCode)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	resBody, err := ioutil.ReadAll(res.Body)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		fmt.Printf("client: could not read response body: %s\n", err)
 | 
					 | 
				
			||||||
		os.Exit(1)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	fmt.Printf("client: response body: %s\n", resBody)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,26 @@
 | 
				
			|||||||
package pcsdk
 | 
					package pcsdk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"bytes"
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"io/ioutil"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
	"net/netip"
 | 
						"net/netip"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/google/uuid"
 | 
						"github.com/google/uuid"
 | 
				
			||||||
	"github.com/thefeli73/polemos/state"
 | 
						"github.com/thefeli73/polemos/state"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ExecuteCommand interface {
 | 
				
			||||||
 | 
						Execute(string) error
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type response struct {
 | 
				
			||||||
 | 
						message string `json:"message"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ProxyCommandCreate struct {
 | 
					type ProxyCommandCreate struct {
 | 
				
			||||||
	Command CommandCreate `json:"create"`
 | 
						Command CommandCreate `json:"create"`
 | 
				
			||||||
	// signature Signature
 | 
						// signature Signature
 | 
				
			||||||
@@ -19,6 +33,36 @@ type CommandCreate struct {
 | 
				
			|||||||
	Id              string     `json:"id"`
 | 
						Id              string     `json:"id"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c ProxyCommandCreate) Execute(url string) error {
 | 
				
			||||||
 | 
						data, err := json.Marshal(c)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return errors.New(fmt.Sprintf("could not serialize: %s\n", err))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						requestURL := fmt.Sprintf("%s/command", url)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bodyReader := bytes.NewReader(data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						res, err := http.DefaultClient.Post(requestURL, "application/json", bodyReader)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return errors.New(fmt.Sprintf("error making http request: %s\n", err))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fmt.Println(res)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						body, err := ioutil.ReadAll(res.Body)
 | 
				
			||||||
 | 
						fmt.Println(string(body))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return errors.New(fmt.Sprintf("error reading response: %s\n", err))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if res.StatusCode != 202 {
 | 
				
			||||||
 | 
							return errors.New(fmt.Sprintf("error processing command: (%d) %s\n", res.StatusCode, body))
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewCommandCreate(iport uint16, oport uint16, oip netip.Addr, id state.CustomUUID) ProxyCommandCreate {
 | 
					func NewCommandCreate(iport uint16, oport uint16, oip netip.Addr, id state.CustomUUID) ProxyCommandCreate {
 | 
				
			||||||
	c := CommandCreate{iport, oport, oip, uuid.UUID.String(uuid.UUID(id))}
 | 
						c := CommandCreate{iport, oport, oip, uuid.UUID.String(uuid.UUID(id))}
 | 
				
			||||||
	return ProxyCommandCreate{c}
 | 
						return ProxyCommandCreate{c}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user