Crate raystack[][src]

Expand description

Overview

This crate provides functions which can query a SkySpark server, using the Haystack REST API and the SkySpark REST API’s eval operation. Some Haystack operations are not implemented (watch* operations, pointWrite and invokeAction).

Example Usage

Put this in the main function in the main.rs file to create and use a SkySparkClient:

use raystack::{ClientSeed, SkySparkClient, ValueExt};
use url::Url;

let timeout_in_seconds = 30;
let client_seed = ClientSeed::new(timeout_in_seconds).unwrap();
let url = Url::parse("https://www.example.com/api/projName/").unwrap();
let mut client = SkySparkClient::new(url, "username", "p4ssw0rd", client_seed).await.unwrap();
let sites_grid = client.eval("readAll(site)").await.unwrap();

// Print the raw JSON:
println!("{}", sites_grid.to_json_string_pretty());

// Working with the Grid struct:
println!("All columns: {:?}", sites_grid.cols());
println!("first site id: {:?}", sites_grid.rows()[0]["id"].as_hs_ref().unwrap());

See the examples folder for more usage examples.

The Grid struct is a wrapper around the underlying JSON Value enum provided by the serde_json crate. See the documentation for Value for more information on how to query for data stored within it.

Additional functions for extracting Haystack values from the underlying JSON are found in this crate’s ValueExt trait.

Modules

auth
eval

Structs

ClientSeed

Contains resources used by a SkySparkClient. If creating multiple SkySparkClients, the same ClientSeed should be reused for each, by calling the .clone() method.

Coord

A Haystack Coord, representing a geographical coordinate.

Date

A Haystack Date with no time zone.

DateTime

A Haystack DateTime.

Grid

A wrapper around a serde_json::Value which represents a Haystack Grid. Columns will always be sorted in alphabetical order.

Marker

A Haystack marker.

Na

A Haystack NA (not available).

NewClientSeedError

Errors that can occur when creating a new ClientSeed.

Number

A Haystack Number, encapsulating a scalar value and an optional unit value. The unit is represented as a string.

ParseJsonGridError

Error denoting that a JSON value could not be parsed into a Grid.

ParseRefError

An error indicating that a Ref could not be parsed.

ParseTagNameError

An error indicating that a TagName could not be parsed.

Ref

A Haystack Ref.

RemoveMarker

A Haystack remove marker.

SkySparkClient

A client for interacting with a SkySpark server.

Symbol

A Haystack Symbol.

TagName

A Haystack tag name.

Time

A Haystack Time with no time zone.

Uri

A Haystack Uri.

Xstr

A Haystack XStr.

Enums

Error

Describes the kinds of errors that can occur in this crate.

HisReadRange

Represents the different time range queries that can be sent as part of the hisRead Haystack operation.

NewSkySparkClientError

Errors that can occur when creating a new SkySparkClient.

Traits

ValueExt

An extension trait for the serde_json::Value enum, containing helper functions which make it easier to parse specific Haystack types from the underlying Hayson encoding (a JSON value in a specific format, see https://github.com/j2inn/hayson).

Functions

is_tag_name

Return true if the string is a valid tag name.

skyspark_tz_string_to_tz

Converts a string containing a SkySpark time zone name into the matching Tz variant from the chrono_tz crate.