summaryrefslogtreecommitdiff
path: root/golang/pkg/api/contracts.go
diff options
context:
space:
mode:
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