From d926848d4454eb0986ccf106fa8c18a43bf70081 Mon Sep 17 00:00:00 2001 From: itok01 Date: Tue, 12 May 2020 13:36:06 +0900 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E4=BB=98=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB(PDF)=E5=8F=96=E5=BE=97API=E3=81=AE=E3=83=A2=E3=83=87?= =?UTF-8?q?=E3=83=AB=E3=81=AA=E3=81=A9=E3=82=92=E8=BF=BD=E5=8A=A0(?= =?UTF-8?q?=E3=81=BE=E3=81=A0=E6=9C=AA=E3=82=B5=E3=83=9D=E3=83=BC=E3=83=88?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.toml | 1 + src/file/client.rs | 17 +++++++++++++++ src/file/mod.rs | 5 +++++ src/file/model.rs | 52 ++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 5 files changed, 76 insertions(+) create mode 100644 src/file/client.rs create mode 100644 src/file/mod.rs create mode 100644 src/file/model.rs diff --git a/Cargo.toml b/Cargo.toml index 31ca46b..fcff1cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,3 +16,4 @@ tokio = { version = "0.2", features = ["full"] } serde = { version = "1", features = ["derive"] } serde_json = "1" serde-aux = "0.6" +bytes = "0.5" diff --git a/src/file/client.rs b/src/file/client.rs new file mode 100644 index 0000000..17cf6f0 --- /dev/null +++ b/src/file/client.rs @@ -0,0 +1,17 @@ +use crate::endpoint; +use crate::file::model::RequestParameters; + +// なぜかファイルが見つからない +// TODO: ↑を直す +pub async fn get(query: &RequestParameters) -> Result> { + let client = reqwest::Client::new(); + + let resp = client.get(endpoint::FILE).query(query).send().await?; + + //let status = resp.status(); + + //println!("{}", resp.text().await?); + + //Ok(()) + Ok(resp.bytes().await?) +} diff --git a/src/file/mod.rs b/src/file/mod.rs new file mode 100644 index 0000000..7338a56 --- /dev/null +++ b/src/file/mod.rs @@ -0,0 +1,5 @@ +mod client; +mod model; + +pub use self::client::get; +pub use self::model::RequestParameters; diff --git a/src/file/model.rs b/src/file/model.rs new file mode 100644 index 0000000..e23a786 --- /dev/null +++ b/src/file/model.rs @@ -0,0 +1,52 @@ +//! 添付ファイル(PDF)取得APIのデータモデル +//! +//! 技術基準適合証明等を受けた機器の検索Web-APIのリクエスト条件一覧(Ver.1.1.1) +//! +//! https://www.tele.soumu.go.jp/resource/j/giteki/webapi/gk_req_conditions.pdf + +use serde::Serialize; + +/// 添付ファイル(PDF)取得APIのリクエストパラメータ +#[derive(Serialize)] +pub struct RequestParameters { + /// 添付ファイル取得キー + /// + /// 一覧詳細情報取得APIで取得した添付ファイル取得キーを指定。 + #[serde(rename = "AFK")] + pub afk: String, + + /// 添付ファイル種別 + /// + /// 添付ファイルの種別を指定。 + /// + /// 1:外観写真等 + /// + /// 2:特性試験の結果 + #[serde(rename = "AFT")] + pub aft: Option, + + /// 取得形式 + /// + /// 添付ファイル種別件数を元に対象添付ファイルの番号を指定。 + /// 添付ファイル番号を指定する場合、添付ファイル種別の指定が必要。 + #[serde(rename = "AFN")] + pub afn: Option, +} + +impl RequestParameters { + pub fn new>(afk: S) -> RequestParameters { + RequestParameters { + afk: afk.into(), + aft: None, + afn: None, + } + } + + pub fn set_aft>(&mut self, aft: T) { + self.aft = Option::from(aft.into()); + } + + pub fn set_afn>(&mut self, afn: T) { + self.afn = Option::from(afn.into()); + } +} diff --git a/src/lib.rs b/src/lib.rs index fb10e82..60ab6ab 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,4 @@ pub mod endpoint; +mod file; pub mod list; pub mod num;