#web-services #currency #service #bank #central #evds #tcmb

tcmb_evds

一个用于访问土耳其共和国中央银行(CBRT)数据库的Rust库

1 个不稳定版本

0.1.0 2022年1月29日

#88 in 财经

MIT 许可证

110KB
1.5K SLoC

tcmb_evds

一个用于访问土耳其共和国中央银行(CBRT)数据库的Rust库。

目录

关于

该crate的名称来源于CBRT和电子数据交付系统的缩写词的土耳其语含义。接下来是内容。crate通过两个主要结构设计,为各种目的提供同步-异步模式。

crate的操作功能基于EVDS网络服务。在这个crate中,这些服务分为两部分。 evds_basicevds_currency 是提到的部分。后者在货币操作方面,与前者相比没有足够的控制机制,提供了所有的网络服务操作。可以很容易地理解 evds_currency 提供了货币操作访问。此外,类型和有效性控制在这部分中更为明显。虽然根据 evds_basic 看起来有点复杂,但 evds_currency 包含了额外的自控算法。这些算法检查给定数据的语法和有效性。这个结构很难出错。

此外,crate的整体结构会根据所选模式而改变。建议同步编程和异步编程分别使用同步和异步模式。模式选择可以通过特性调整进行。

接下来的内容将详细介绍两个主要结构、模式选择、示例以及crate的详细说明。

安装

请将以下代码之一添加到您的 Cargo.toml 中以安装crate。

对于 异步模式,请添加。

[dependencies]
tcmb_evds = "0.1"

对于 同步模式,请添加。

[dependencies]
tcmb_evds = {version = "0.1", default-features = false, features = ["sync_mode"]

用法

evds_basic

get_data 获取序列数据的示例。

    use tcmb_evds::*;
 

    // assigning required arguments.
    // another data series = "TP.DK.USD.A-TP.DK.USD.S-TP.DK.GBP.A-TP.DK.GBP.S"
    let data_series = "TP.DK.USD.A";

    let date = date::Date::from("13-12-2011")?;
    let date_preference = date::DatePreference::Single(date);

    let api_key = common::ApiKey::from("user_api_key".to_string())?;
    let return_format = common::ReturnFormat::Xml;
    let evds = common::Evds::from(api_key, return_format);


    // get data operation based on given series.
    let currency_data = evds_basic::get_data(data_series, &date_preference, &evds)?;

evds_currency

get_data 获取货币序列数据的示例。

    use tcmb_evds::*;
 

    // common elements
    let api_key = common::ApiKey::from("user_api_key".to_string())?; 
    let return_format = common::ReturnFormat::Json;
    let evds = common::Evds::from(api_key, return_format);

    let date = date::Date::from("13-12-2011")?;
    let date_preference = date::DatePreference::Single(date);


    // currency series creation
    let exchange_type = evds_currency::ExchangeType::new();
 
    let currency_code = evds_currency::CurrencyCode::Usd;
 
    // Ytl mode adds "YTL" to currency series, when it is true.
    let ytl_mode = true;
   
    let currency_series = 
        evds_currency::CurrencySeries::from(
            exchange_type, 
            currency_code, 
            date_preference, 
            ytl_mode
        );
 
 
    // get data operation based on created CurrencySeries.
    let currency_data = currency_series.get_data(&evds)?;

详细信息

有一些细节需要澄清,以便用户了解如何使用这个tcmb_evds API库。

evds_basic

这是用户面临的两大部分之一。大多数EVDS Web服务操作都可以使用evds_basic API函数完成。这些函数包括:get_dataget_data_groupget_categoriesget_advanced_data_groupget_series_list。这些函数的功能在项目文档中解释得很清楚。同时,用户还可以在下面了解更多关于这些函数的信息。《函数名称》和《Web服务作为函数》部分提供了关于这些函数的额外信息。

evds_basic 函数使用以下结构作为支持结构,这些结构是 date::DatePreferencecommon::Evds,在它们创建时检查给定的数据是否有效。这些支持者满足了EVDS作为标准所需的一般信息。因此,用户提供的由这些支持者检查并自动转换为方便的URL。然而,有一些参数,这些参数是针对特定EVDS操作所需的。这些参数直接用于最后URL格式以进行Web服务请求。这意味着对这些参数没有数据有效性检查。因此,用户有责任为这些参数提供有效数据。

evds_currency

这是用户面临的两大部分中的另一部分。可以使用evds_currency API函数执行特定货币操作。这些函数包括:get_dataget_advanced_dataget_multiple_data。这些函数是 CurrencySeriesMultipleCurrencySeries 结构的方法。这些函数的使用细节在项目文档中有清晰的解释。同时,用户还可以在下面了解更多关于这些函数的信息。《函数名称》和《Web服务作为函数》部分提供了关于这些函数的额外信息。

所提到的方法需要一些结构,分为两部分:主要结构和支持结构。前者称为 CurrencySeriesMultipleCurrencySeries。这些结构实现了所提到的方法,即主要操作函数,并包含在crate文档中解释的重要子结构。后者结构称为 common::EvdsAdvancedProcesses。前者提供EVDS作为标准所需的一般信息。后者为用户提供更多定制选项以获取特定货币数据。

所提到的3个方法使用预先创建的结构。在创建这些结构时,这个crate会检查给定数据的有效性和正确性。因此,使用 evds_currency 方法是错误免费的方法,与 evds_basic 不同。也就是说,evds_currency 负责检查给定数据的有效性。

函数名称

此crate中提供的 evds_basic API函数

  • get_data 返回请求的数据序列信息。

  • get_data_group 返回请求的数据组。

  • get_categories 返回EVDS的所有请求类别。

  • get_advanced_data_group 返回指定的数据组。

  • get_series_list 返回所有可用的序列列表。

此crate中提供的 evds_currency API函数

  • get_data 返回关于单一货币的数据。

  • get_advanced_data 返回关于单一货币的数据,带有频率公式。

  • get_multiple_data 返回关于多个货币的数据。

支持结构

通用:在用户API函数中用于 evds_basicevds_currency 的基本结构。

  • DatePreference:大多数函数都需要。
  • Evds:每个函数都需要。

对于evds_basic

  • DatePreference

对于evds_currency

  • AdvancedProcesses:包括 get_advanced_data 函数的高级货币数据配置。

  • Currency Series:一个复合结构,包含以下结构以提供单和高级(配置的)货币数据。

    • ytl_mode:这是一个bool选项,用于根据YTL革命选择货币值。
    • ExchangeType:这是一个结构,用于确定货币价值是卖出还是买入。
    • CurrencyCode:货币单位选项的枚举。
    • DatePreference:基本通用结构。
  • MultipleCurrencySeries:一个复合结构,包含以下结构以提供多种货币数据。

    • ytl_mode
    • ExchangeType
    • CurrencyCodes:货币单位选项的结构。
    • DatePreference

作为函数的Web服务

用户指南使用说明中描述的土耳其语Web服务对应以下功能。

格式

'function_sign' corresponds to 'a section of user guide'

evds_basic函数

  • get_data对应于1. EVDS系列数据服务2.1.级值请求
  • get_data_group对应于3.按给定数据组获取所有系列数据
  • get_categories对应于4.1.类别服务
  • get_advanced_data_group对应于4.2.数据组服务
  • get_series_list对应于4.3.系列服务

evds_currency方法

  • get_data对应于1. EVDS系列数据服务
  • get_advanced_data对应于2.2.具有频率公式的...系列
  • get_multiple_data对应于2.1.级值请求

比较

本节说明了两个主要结构的基本差异。

  • evds_basic

    • 提供EVDS Web服务操作的大部分功能,除了被称为此crate中高级货币操作频率公式服务以外的货币价值。
    • 用户负责确保给定系列和某些数据的有效性。
    • 对于货币服务操作来说不太可靠。
  • evds_currency

    • 指定用于货币操作。
    • 给定的系列和一些数据会自动检查。
    • 对于货币服务操作来说更可靠。

更多

在crate的文档中给出了详细的使用示例和更多内容。用户可以访问crates.io或克隆存储库,并在终端中输入Cargo doc --open命令。

参考

依赖项

~7–15MB
~209K SLoC