[golang] implement automation loop and add contract accepting
This commit is contained in:
parent
3dad3f60f2
commit
d97985a694
9 changed files with 223 additions and 64 deletions
|
@ -3,10 +3,33 @@ package api
|
|||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
"path"
|
||||
|
||||
"git.adyxax.org/adyxax/spacetraders/golang/pkg/database"
|
||||
"git.adyxax.org/adyxax/spacetraders/golang/pkg/model"
|
||||
)
|
||||
|
||||
func (c *Client) Accept(contract *model.Contract, db *database.DB) error {
|
||||
if contract.Accepted {
|
||||
return nil
|
||||
}
|
||||
uriRef := url.URL{Path: path.Join("my/contracts", contract.Id, "accept")}
|
||||
type acceptResponse struct {
|
||||
Agent *model.Agent `json:"agent"`
|
||||
Contract *model.Contract `json:"contract"`
|
||||
}
|
||||
var response acceptResponse
|
||||
if err := c.Send("POST", &uriRef, nil, &response); err != nil {
|
||||
return fmt.Errorf("failed to accept contract %s: %w", contract.Id, err)
|
||||
}
|
||||
if err := db.SaveAgent(response.Agent); err != nil {
|
||||
return fmt.Errorf("failed to accept contract %s: %w", contract.Id, err)
|
||||
}
|
||||
contract.Accepted = response.Contract.Accepted
|
||||
contract.Terms = response.Contract.Terms
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Client) MyContracts() ([]model.Contract, error) {
|
||||
uriRef := url.URL{Path: "my/contracts"}
|
||||
var contracts []model.Contract
|
||||
|
|
|
@ -14,10 +14,10 @@ func (c *Client) dock(s *model.Ship) error {
|
|||
return nil
|
||||
}
|
||||
uriRef := url.URL{Path: path.Join("my/ships", s.Symbol, "dock")}
|
||||
type DockResponse struct {
|
||||
type dockResponse struct {
|
||||
Nav *model.Nav `json:"nav"`
|
||||
}
|
||||
var response DockResponse
|
||||
var response dockResponse
|
||||
if err := c.Send("POST", &uriRef, nil, &response); err != nil {
|
||||
return fmt.Errorf("failed to dock ship %s: %w", s.Symbol, err)
|
||||
}
|
||||
|
@ -39,10 +39,10 @@ func (c *Client) orbit(s *model.Ship) error {
|
|||
return nil
|
||||
}
|
||||
uriRef := url.URL{Path: path.Join("my/ships", s.Symbol, "orbit")}
|
||||
type OrbitResponse struct {
|
||||
type orbitResponse struct {
|
||||
Nav *model.Nav `json:"nav"`
|
||||
}
|
||||
var response OrbitResponse
|
||||
var response orbitResponse
|
||||
if err := c.Send("POST", &uriRef, nil, &response); err != nil {
|
||||
return fmt.Errorf("failed to orbit ship %s: %w", s.Symbol, err)
|
||||
}
|
||||
|
@ -58,12 +58,12 @@ func (c *Client) Refuel(s *model.Ship, db *database.DB) error {
|
|||
return fmt.Errorf("failed to refuel ship %s: %w", s.Symbol, err)
|
||||
}
|
||||
uriRef := url.URL{Path: path.Join("my/ships", s.Symbol, "refuel")}
|
||||
type RefuelResponse struct {
|
||||
type refuelResponse struct {
|
||||
Agent *model.Agent `json:"agent"`
|
||||
Fuel *model.Fuel `json:"fuel"`
|
||||
Transaction *model.Transaction `json:"transaction"`
|
||||
}
|
||||
var response RefuelResponse
|
||||
var response refuelResponse
|
||||
if err := c.Send("POST", &uriRef, nil, &response); err != nil {
|
||||
return fmt.Errorf("failed to refuel ship %s: %w", s.Symbol, err)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue