summaryrefslogtreecommitdiff
path: root/golang/pkg/api/contracts.go
diff options
context:
space:
mode:
authorJulien Dessaux2025-02-14 00:14:15 +0100
committerJulien Dessaux2025-02-14 00:14:15 +0100
commitd97985a694b218713ddf63ed684b6a509f931f3b (patch)
tree84609f4e242419bf89301e0ead4927f450d7bfe5 /golang/pkg/api/contracts.go
parent[golang] Bootstrap contracting and refactor the agent code (diff)
downloadspacetraders-d97985a694b218713ddf63ed684b6a509f931f3b.tar.gz
spacetraders-d97985a694b218713ddf63ed684b6a509f931f3b.tar.bz2
spacetraders-d97985a694b218713ddf63ed684b6a509f931f3b.zip
[golang] implement automation loop and add contract accepting
Diffstat (limited to '')
-rw-r--r--golang/pkg/api/contracts.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/golang/pkg/api/contracts.go b/golang/pkg/api/contracts.go
index f82ee6d..9478d4f 100644
--- a/golang/pkg/api/contracts.go
+++ b/golang/pkg/api/contracts.go
@@ -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