Skip to content

Commit 5f2457c

Browse files
committed
fixup! added Eclair node support
code improvements
1 parent f0e1c2f commit 5f2457c

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

simln-lib/src/eclair.rs

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,30 +27,28 @@ pub struct EclairConnection {
2727
pub api_password: String,
2828
}
2929

30-
impl EclairConnection {
31-
fn construct_url(&self, endpoint: &str) -> Result<Url, Box<dyn Error>> {
32-
Ok(Url::parse(&self.base_url)?.join(endpoint)?)
33-
}
34-
}
35-
3630
pub struct EclairNode {
37-
connection: EclairConnection,
31+
base_url: Url,
32+
api_username: String,
33+
api_password: String,
3834
http_client: Client,
3935
info: NodeInfo,
4036
network: Network,
4137
}
4238

4339
impl EclairNode {
4440
async fn request_static<T: for<'de> Deserialize<'de>>(
45-
connection: &EclairConnection,
4641
client: &Client,
42+
base_url: &Url,
43+
api_username: &str,
44+
api_password: &str,
4745
endpoint: &str,
4846
params: Option<HashMap<String, String>>,
4947
) -> Result<T, Box<dyn Error>> {
50-
let url = connection.construct_url(endpoint)?;
48+
let url = base_url.join(endpoint)?;
5149
let mut request = client
5250
.request(Method::POST, url)
53-
.basic_auth(&connection.api_username, Some(&connection.api_password));
51+
.basic_auth(api_username, Some(api_password));
5452

5553
if let Some(params) = params {
5654
let mut form = Form::new();
@@ -75,15 +73,31 @@ impl EclairNode {
7573
endpoint: &str,
7674
params: Option<HashMap<String, String>>,
7775
) -> Result<T, Box<dyn Error>> {
78-
EclairNode::request_static(&self.connection, &self.http_client, endpoint, params).await
76+
EclairNode::request_static(
77+
&self.http_client,
78+
&self.base_url,
79+
&self.api_username,
80+
&self.api_password,
81+
endpoint,
82+
params,
83+
)
84+
.await
7985
}
8086

8187
pub async fn new(connection: EclairConnection) -> Result<Self, LightningError> {
88+
let base_url = Url::parse(&connection.base_url)
89+
.map_err(|err| LightningError::GetInfoError(err.to_string()))?;
8290
let client = Client::new();
83-
let info: GetInfoResponse =
84-
EclairNode::request_static(&connection, &client, "getinfo", None)
85-
.await
86-
.map_err(|err| LightningError::GetInfoError(err.to_string()))?;
91+
let info: GetInfoResponse = EclairNode::request_static(
92+
&client,
93+
&base_url,
94+
&connection.api_username,
95+
&connection.api_password,
96+
"getinfo",
97+
None,
98+
)
99+
.await
100+
.map_err(|err| LightningError::GetInfoError(err.to_string()))?;
87101
let pubkey = PublicKey::from_str(info.node_id.as_str())
88102
.map_err(|err| LightningError::GetInfoError(err.to_string()))?;
89103
let network = Network::from_str(match info.network.as_str() {
@@ -99,8 +113,10 @@ impl EclairNode {
99113
let features = parse_json_to_node_features(&info.features);
100114

101115
Ok(Self {
116+
base_url,
117+
api_username: connection.api_username,
118+
api_password: connection.api_password,
102119
http_client: client,
103-
connection,
104120
info: NodeInfo {
105121
pubkey,
106122
alias: info.alias,

0 commit comments

Comments
 (0)