1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
use reqwest::IntoUrl;
use shuttle_core::{PublicKey, SignedTransaction};
use client::InnerClient;
use error::{Error, Result};
use accounts::AccountsRequest;
use assets::AssetsRequest;
use effects::EffectsRequest;
use ledgers::LedgersRequest;
use offers::OffersRequest;
use operations::OperationsRequest;
use orderbook::OrderbookRequest;
use paths::PathsRequest;
use payments::PaymentsRequest;
use trade_aggregations::TradeAggregationsRequest;
use trades::TradesRequest;
use transactions::TransactionsRequest;
use submit_transaction::SubmitTransactionRequest;
use friendbot::FriendbotRequest;
#[derive(Debug, Clone)]
pub struct Server {
inner: InnerClient,
}
impl Server {
pub fn new<U: IntoUrl>(horizon_url: U) -> Result<Server> {
let horizon_url = horizon_url.into_url()?;
if horizon_url.scheme() == "http" {
return Err(Error::UnsecureConnection);
}
Self::new_unsecure(horizon_url)
}
pub fn new_unsecure<U: IntoUrl>(horizon_url: U) -> Result<Server> {
let inner = InnerClient::new(horizon_url.into_url()?)?;
Ok(Server { inner })
}
pub fn accounts(&self) -> AccountsRequest {
AccountsRequest::new(self.inner.clone())
}
pub fn assets(&self) -> AssetsRequest {
AssetsRequest::new(self.inner.clone())
}
pub fn effects(&self) -> EffectsRequest {
EffectsRequest::new(self.inner.clone())
}
pub fn ledgers(&self) -> LedgersRequest {
LedgersRequest::new()
}
pub fn offers(&self) -> OffersRequest {
unimplemented!()
}
pub fn operations(&self) -> OperationsRequest {
unimplemented!()
}
pub fn orderbook(&self) -> OrderbookRequest {
unimplemented!()
}
pub fn paths(&self) -> PathsRequest {
unimplemented!()
}
pub fn payments(&self) -> PaymentsRequest {
unimplemented!()
}
pub fn trade_aggregations(&self) -> TradeAggregationsRequest {
unimplemented!()
}
pub fn trades(&self) -> TradesRequest {
unimplemented!()
}
pub fn transactions(&self) -> TransactionsRequest {
unimplemented!()
}
pub fn friendbot(&self, account_id: &PublicKey) -> Result<FriendbotRequest> {
FriendbotRequest::new(self.inner.clone(), &account_id)
}
pub fn submit_transaction(&self, tx: &SignedTransaction) -> Result<SubmitTransactionRequest> {
SubmitTransactionRequest::new(self.inner.clone(), &tx)
}
}