From 624d20046d64bb82bb1aecece9242c9079e37c78 Mon Sep 17 00:00:00 2001 From: William Petit Date: Wed, 26 Sep 2018 16:59:46 +0200 Subject: [PATCH] Add CreateProjet() API --- emlid/reachview/project.go | 58 +++++++++++++++++++++++++++++++++ emlid/reachview/project_test.go | 44 +++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 emlid/reachview/project.go create mode 100644 emlid/reachview/project_test.go diff --git a/emlid/reachview/project.go b/emlid/reachview/project.go new file mode 100644 index 0000000..5ca4574 --- /dev/null +++ b/emlid/reachview/project.go @@ -0,0 +1,58 @@ +package reachview + +import "context" + +const ( + eventCreateProject = "create project" + eventProjectCreated = "project created" +) + +type ProjectID string + +type Project struct { + Name string `json:"name"` + Author string `json:"author"` + Comment string `json:"comment"` + Projection string `json:"projection"` + Length int `json:"length"` + Requirements *ProjectRequirements `json:"requirements"` + AntennaHeight string `json:"antenna height"` +} + +type ProjectRequirements struct { + Fix *ProjectRequirementsEntry `json:"FIX"` + Float *ProjectRequirementsEntry `json:"FLOAT"` + Single *ProjectRequirementsEntry `json:"SINGLE"` +} + +type ProjectRequirementsEntry struct { + Enabled bool `json:"enabled"` + DOP string `json:"DOP"` + Time int `json:"time"` + LateralRMS float64 `json:"lateral rms"` +} + +func (c *Client) CreateProject(ctx context.Context, project *Project) (ProjectID, error) { + var projectID ProjectID + err := c.ReqResp(ctx, eventCreateProject, project, eventProjectCreated, &projectID) + if err != nil { + return projectID, err + } + return projectID, nil +} + +func (c *Client) ListProjects() { + +} + +func (c *Client) OpenProject(id ProjectID) { + +} + +func (c *Client) DeleteProject() { + +} + +func (c *Client) CloseProject() { + +} diff --git a/emlid/reachview/project_test.go b/emlid/reachview/project_test.go new file mode 100644 index 0000000..428dfa5 --- /dev/null +++ b/emlid/reachview/project_test.go @@ -0,0 +1,44 @@ +package reachview + +import ( + "context" + "fmt" + "testing" + "time" + + "forge.cadoles.com/Pyxis/orion/emlid" +) + +func TestReachViewProjectCRUD(t *testing.T) { + + if !*runReachViewIntegrationTests { + t.Skip("To run this test, use: go test -reachview-integration") + } + + client := NewClient( + emlid.WithStandardLogger(), + emlid.WithEndpoint(*reachHost, 80), + ) + if err := client.Connect(); err != nil { + t.Fatal(err) + } + + ctx, cancelCreateProject := context.WithTimeout(context.Background(), 5*time.Second) + defer cancelCreateProject() + + project := &Project{ + Name: fmt.Sprintf("Test-%d", time.Now().Unix()), + } + + projectID, err := client.CreateProject(ctx, project) + if err != nil { + t.Error(err) + } + + if projectID == "" { + t.Errorf("projectID should not be empty") + } + + defer client.Close() + +}