#requests #cli #environment #env-var #variables

bin+lib netsuite

用于向 NetSuite REST API 发送请求的库

8 个版本 (破坏性更新)

0.7.0 2022年4月29日
0.6.0 2021年11月3日
0.5.0 2021年11月1日
0.4.0 2021年10月30日
0.1.1 2021年10月24日

#106 in #env-vars

每月22 次下载

MIT 许可证

42KB
1K SLoC

netsuite-rs

用于向 NetSuite REST API 发送请求的库。

支持程序化和 CLI 使用(通过 cli 功能)。

当前使用 ureq 进行 HTTP 请求,这意味着此库目前对异步环境没有用。异步功能可能在未来作为功能标志发布。

测试版质量免责声明

项目的 API 仍然非常不稳定。请将依赖项固定到当前次要版本以避免破坏性更改。从 1.0 版本开始,我们将保持稳定的 API。

CLI

这是入门的最简单方式。要了解您可以使用 CLI 做什么,只需将 --help-h 添加到已安装的 netsuite 命令。

请注意,您需要添加 cli 功能才能访问 CLI。使用 cargo-edit,您可以这样做: cargo add netsuite --features cli

配置文件

建议在使用 CLI 之前创建一个 INI 配置文件,以避免在每次执行命令时都提供 OAuth 1.0 的详细信息。

您可以使用 netsuite default-ini-path 来查找默认的 INI 配置位置。

netsuite default-ini-path

将设置写入文件,以下示例使用 heredoc 语法

cat <<EOF >"$(netsuite default-ini-path)"
[sandbox]
account = <account id>_SB1
consumer_key = <64 chars>
consumer_secret = <64 chars>
token_id = <64 chars>
token_secret = <64 chars>
EOF

之后,您只需提供部分名称即可开始使用 CLI

netsuite -s sandbox suiteql 'SELECT * FROM pricing'

环境变量

作为替代方案,您可以直接提供环境变量。例如

export ACCOUNT=<account id>
export CONSUMER_KEY=<64 chars>
export CONSUMER_SECRET=<64 chars>
export TOKEN_ID=<64 chars>
export TOKEN_SECRET=<64 chars>
netsuite suiteql 'SELECT * FROM pricing'

程序化访问

请参阅以下示例了解如何将其集成到您的代码中。

(如果您看到以 # 开头的行,请忽略它们,它们的存在是为了确保提供的 Rust 代码是正确的。)

use netsuite::{Config, RestApi};

#[derive(Debug, PartialEq, serde::Deserialize)]
struct Price {
    internalid: String,
    unitprice: String,
}

let config = Config::new("123456", "2", "3", "4", "5");
let api = RestApi::new(config);
# use httpmock::{MockServer, Method::POST};
# let server = MockServer::start();
# let api = RestApi::new(Config::new("123456", "2", "3", "4", "5")).with_base_url(server.base_url());;
# let mock = server.mock(|when, then| {
#     when.method(POST).path("/query/v1/suiteql");
#     then.status(200).body(r#"{"links":[],"count":2,"hasMore":false,"items":[{"links":[],"currency":"1","internalid":"24","item":"24","pricelevel":"15","quantity":"1","saleunit":"1","unitprice":"95.49"},{"links":[],"currency":"1","internalid":"24","item":"24","pricelevel":"21","quantity":"1","saleunit":"1","unitprice":"19.99"}],"offset":0,"totalResults":2}"#);
# });
let res = api.suiteql.fetch_all::<Price>("SELECT * FROM pricing");
# mock.assert();
assert_eq!(res.unwrap(), [Price { internalid: "24".into(), unitprice: "95.49".into() }, Price { internalid: "24".into(), unitprice: "19.99".into() }]);

依赖项

~13–24MB
~452K SLoC