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
use crate::{LogLevel, NetworkIdentifier};
fn convert_log_level(level: LogLevel) -> u16 {
match level {
LogLevel::Error => 0,
LogLevel::Warn => 1,
LogLevel::Info => 2,
LogLevel::Debug => 3,
LogLevel::Trace => 4,
}
}
fn convert_network_identifier(id: NetworkIdentifier) -> String {
match id {
NetworkIdentifier::InMemory => "inmemory".to_string(),
NetworkIdentifier::Local => "local".to_string(),
NetworkIdentifier::Dev => "dev-unstable".to_string(),
NetworkIdentifier::Clay => "testnet-clay".to_string(),
NetworkIdentifier::Mainnet => "mainnet".to_string(),
}
}
impl Into<crate::daemon::DaemonConfig> for crate::Config {
fn into(self) -> crate::daemon::DaemonConfig {
let anchor = Some(crate::daemon::DaemonAnchorConfig {
anchor_service_url: Some(self.anchor.anchor_service_url),
ethereum_rpc_url: None,
});
let http = Some(crate::daemon::DaemonHttpApiConfig {
hostname: Some(self.http_api.hostname),
port: Some(self.http_api.port),
admin_dids: Some(self.http_api.admin_dids),
cors_allowed_origins: None,
});
let ipfs = Some(if let crate::Ipfs::Remote(r) = self.ipfs {
crate::daemon::DaemonIpfsConfig {
mode: Some(crate::daemon::DaemonIpfsConfigMode::Remote),
host: Some(r.host),
pinning_endpoints: None,
}
} else {
crate::daemon::DaemonIpfsConfig {
mode: Some(crate::daemon::DaemonIpfsConfigMode::Bundled),
host: None,
pinning_endpoints: None,
}
});
let logger = Some(if let Some(l) = self.logger.file {
crate::daemon::DaemonLoggerConfig {
log_to_files: Some(l.enabled),
log_directory: Some(l.directory.to_string_lossy().to_string()),
log_level: Some(convert_log_level(self.logger.level)),
}
} else {
crate::daemon::DaemonLoggerConfig {
log_to_files: Some(false),
log_directory: None,
log_level: Some(convert_log_level(self.logger.level)),
}
});
let metrics = Some(crate::daemon::DaemonMetricsConfig {
metrics_exporter_enabled: Some(self.metrics.enabled),
collector_host: Some(self.metrics.host),
});
let network = Some(crate::daemon::DaemonNetworkConfig {
name: Some(convert_network_identifier(self.network.id)),
pubsub_topic: self.network.pubsub_topic,
});
let node = Some(crate::daemon::DaemonNodeConfig {
sync_override: None,
gateway: Some(self.node.gateway),
stream_cache_limit: None,
});
let state_store = Some(match self.state_store {
crate::StateStore::S3(s3) => crate::daemon::DaemonStateStoreConfig {
s3_bucket: Some(s3.bucket),
s3_endpoint: Some(s3.endpoint),
mode: Some(crate::daemon::DaemonStateStoreMode::S3),
local_directory: None,
},
crate::StateStore::LocalDirectory(l) => crate::daemon::DaemonStateStoreConfig {
local_directory: Some(l.to_string_lossy().to_string()),
mode: Some(crate::daemon::DaemonStateStoreMode::File),
s3_bucket: None,
s3_endpoint: None,
},
});
let indexing = Some(crate::daemon::DaemonIndexingConfig {
db: Some(self.indexing.db),
allow_queries_before_historical_sync: Some(
self.indexing.allow_queries_before_historical_sync,
),
enable_historical_sync: Some(self.indexing.enable_historical_sync),
});
crate::daemon::DaemonConfig {
anchor: anchor,
http_api: http,
ipfs: ipfs,
logger: logger,
metrics: metrics,
network: network,
node: node,
state_store: state_store,
indexing: indexing,
did_resolvers: None,
}
}
}