ipfs_api_prelude/response/
object.rs

1// Copyright 2017 rust-ipfs-api Developers
2//
3// Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
4// http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
5// http://opensource.org/licenses/MIT>, at your option. This file may not be
6// copied, modified, or distributed except according to those terms.
7//
8
9use crate::response::{serde, IpfsHeader};
10use crate::serde::Deserialize;
11use std::collections::HashMap;
12
13#[derive(Debug, Deserialize)]
14#[serde(rename_all = "PascalCase")]
15pub struct ObjectDiff {
16    #[serde(rename = "Type")]
17    pub typ: u64,
18
19    pub path: String,
20
21    #[serde(deserialize_with = "serde::deserialize_hashmap")]
22    pub before: HashMap<String, String>,
23
24    #[serde(deserialize_with = "serde::deserialize_hashmap")]
25    pub after: HashMap<String, String>,
26}
27
28#[derive(Debug, Deserialize)]
29#[serde(rename_all = "PascalCase")]
30pub struct ObjectDiffResponse {
31    #[serde(deserialize_with = "serde::deserialize_vec")]
32    pub changes: Vec<ObjectDiff>,
33}
34
35#[derive(Debug, Deserialize)]
36#[serde(rename_all = "PascalCase")]
37pub struct ObjectGetResponse {
38    pub data: String,
39
40    #[serde(deserialize_with = "serde::deserialize_vec")]
41    pub links: Vec<IpfsHeader>,
42}
43
44#[derive(Debug, Deserialize)]
45#[serde(rename_all = "PascalCase")]
46pub struct ObjectLinksResponse {
47    pub hash: String,
48
49    #[serde(deserialize_with = "serde::deserialize_vec")]
50    pub links: Vec<IpfsHeader>,
51}
52
53#[derive(Deserialize)]
54#[serde(rename_all = "PascalCase")]
55pub struct ObjectNewResponse {
56    pub hash: String,
57
58    #[serde(deserialize_with = "serde::deserialize_vec")]
59    #[serde(default)]
60    pub links: Vec<IpfsHeader>,
61}
62
63#[derive(Deserialize)]
64#[serde(rename_all = "PascalCase")]
65pub struct ObjectPatchAddLinkResponse {
66    pub hash: String,
67
68    #[serde(deserialize_with = "serde::deserialize_vec")]
69    #[serde(default)]
70    pub links: Vec<IpfsHeader>,
71}
72
73#[derive(Deserialize)]
74#[serde(rename_all = "PascalCase")]
75pub struct ObjectPatchAppendDataResponse {
76    pub hash: String,
77
78    #[serde(deserialize_with = "serde::deserialize_vec")]
79    pub links: Vec<IpfsHeader>,
80}
81
82#[derive(Deserialize)]
83#[serde(rename_all = "PascalCase")]
84pub struct ObjectPatchRmLinkResponse {
85    pub hash: String,
86
87    #[serde(deserialize_with = "serde::deserialize_vec")]
88    pub links: Vec<IpfsHeader>,
89}
90
91#[derive(Deserialize)]
92#[serde(rename_all = "PascalCase")]
93pub struct ObjectPatchSetDataResponse {
94    pub hash: String,
95
96    #[serde(deserialize_with = "serde::deserialize_vec")]
97    pub links: Vec<IpfsHeader>,
98}
99
100#[derive(Deserialize)]
101#[serde(rename_all = "PascalCase")]
102pub struct ObjectPutResponse {
103    pub hash: String,
104
105    #[serde(deserialize_with = "serde::deserialize_vec")]
106    pub links: Vec<IpfsHeader>,
107}
108
109#[derive(Debug, Deserialize)]
110#[serde(rename_all = "PascalCase")]
111pub struct ObjectStatResponse {
112    pub hash: String,
113    pub num_links: u64,
114    pub block_size: u64,
115    pub links_size: u64,
116    pub data_size: u64,
117    pub cumulative_size: u64,
118}
119
120#[cfg(test)]
121mod tests {
122    deserialize_test!(v0_object_diff_0, ObjectDiffResponse);
123    deserialize_test!(v0_object_links_0, ObjectLinksResponse);
124    deserialize_test!(v0_object_stat_0, ObjectStatResponse);
125}