Session

Resources can be queried using session if you need more control over request endpoints, headers, or other parameters. Or if endpoint is not present in the VMSRest object.

Session implements 5 methods

  • Get
  • Post
  • Put
  • Patch
  • Delete

Example:

ctx := context.Background()
config := &client.VMSConfig{
    Host:     "10.27.40.1",
    Username: "admin",
    Password: "123456",
    BeforeRequestFn: func(ctx context.Context, r *http.Request, verb, url string, body io.Reader) error {
        log.Printf("Sending request: verb=%s, url=%s", verb, url)
        return nil
    },
    AfterRequestFn: func(ctx context.Context, response client.Renderable) (client.Renderable, error) {
        log.Printf("Result:\n%s", response.PrettyTable())
        return response, nil
    },
}

rest, err := client.NewVMSRest(config)
if err != nil {
    panic(err)
}

// Get View by name
path := "views?name=myview"
result, err := rest.Session.Get(ctx, path, nil)
if err != nil {
    log.Fatal(err)
}

recordSet := result.(client.RecordSet)
if !recordSet.Empty() {
    firstRecord := recordSet[0]
    // Get View by id
    path = fmt.Sprintf("views/%d", firstRecord.RecordID())
    result, err = rest.Session.Get(ctx, path, nil)
    if err != nil {
        panic(err)
    }
} else {
    log.Println("No records found")
}