pub struct Query {
pub protocol: Protocol,
pub ws_entry_point: WSEntryPoint,
pub resource: Resource,
pub agency_id: Option<String>,
pub resource_id: Option<String>,
pub version: Option<String>,
pub flow_ref: Option<FlowRef>,
pub series_key: Option<String>,
pub context: Option<Context>,
}Expand description
Query string generator.
All the data stored in the ECB Data Portal can be retrieved using the following query strings:
- Data Queries:
protocol://wsEntryPoint/resource/flowRef/key?parameters - Schema Queries:
protocol://wsEntryPoint/resource/context/agencyID/resourceID/version - Metadata Queries:
protocol://wsEntryPoint/resource/agencyID/resourceID/version?parameters
§Examples
- Data query
use ecbdp_api::{Resource, FlowRef, Query};
let query: Query = Query::new()
.flow_ref(FlowRef { agency_id: None, flow_id: String::from("EXR"), version: None, })
.series_key("M.USD.EUR.SP00.A");
assert_eq!(query.generate_url().unwrap(), "https://data-api.ecb.europa.eu/service/data/all,EXR,latest/M.USD.EUR.SP00.A".to_owned())- Schema query
use ecbdp_api::{Resource, Context, Query};
let query: Query = Query::new()
.resource(Resource::Schema)
.context(Context::DataStructure)
.agency_id("ECB")
.resource_id("ECB_EXR1")
.version("1.0");
assert_eq!(query.generate_url().unwrap(), "https://data-api.ecb.europa.eu/service/schema/datastructure/ECB/ECB_EXR1/1.0".to_owned());- Metadata query
use ecbdp_api::{Resource, Query};
let query: Query = Query::new()
.resource(Resource::MetadataCodeList)
.agency_id("all")
.resource_id("all")
.version("latest");
assert_eq!(query.generate_url().unwrap(), "https://data-api.ecb.europa.eu/service/codelist/all/all/latest".to_owned());Fields§
§protocol: Protocol§ws_entry_point: WSEntryPoint§resource: Resource§agency_id: Option<String>The identifier of the maintainer of the context
resource_id: Option<String>The identifier of the context, such as EXR for the Dataflow about exchange rates maintained by the ECB
version: Option<String>The version of the context to be returned. When the version number is not supplied, the latest version is returned.
flow_ref: Option<FlowRef>§series_key: Option<String>Series key of the series.
Note: On the ECB Data Portal the series are prefixed with their flow identifier. For example,
EXR.M.USD.EUR.SP00.A is the series key on the ECB Data Portal, but EXR is an flow_id and M.USD.EUR.SP00.A
is the series_key in this implementation.
context: Option<Context>Implementations§
Source§impl Query
impl Query
pub fn new() -> Self
pub fn protocol(self, protocol: Protocol) -> Self
pub fn ws_entry_point(self, ws_entry_point: WSEntryPoint) -> Self
pub fn resource(self, resource: Resource) -> Self
pub fn flow_ref(self, flow_ref: FlowRef) -> Self
pub fn series_key(self, series_key: &str) -> Self
pub fn context(self, context: Context) -> Self
pub fn agency_id(self, agency_id: &str) -> Self
pub fn resource_id(self, resource_id: &str) -> Self
pub fn version(self, version: &str) -> Self
pub fn validate_query( &self, permitted_resources: Vec<Resource>, ) -> Result<(), Error>
Sourcepub fn generate_url(&self) -> Result<String, Error>
pub fn generate_url(&self) -> Result<String, Error>
Generates a query URL.
Note: This url does not contain parameters.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Query
impl RefUnwindSafe for Query
impl Send for Query
impl Sync for Query
impl Unpin for Query
impl UnsafeUnpin for Query
impl UnwindSafe for Query
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more