Skip to content

Commit 38dc753

Browse files
authored
Merge pull request #6 from un-lock-able/dev
Refactor api and config design
2 parents dfaab41 + 730425d commit 38dc753

File tree

13 files changed

+783
-553
lines changed

13 files changed

+783
-553
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/target
22
*.log
33
*.local.json
4-
Cargo.lock
4+
Cargo.lock
5+
.DS_Store

.vscode/settings.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"conventionalCommits.scopes": [
3+
"clouflare"
4+
]
5+
}

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "cloudflare-ddns-rust"
3-
version = "0.5.5"
3+
version = "0.6.0"
44
edition = "2021"
55

66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

README.md

Lines changed: 37 additions & 22 deletions
Large diffs are not rendered by default.

settings.example.json

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,43 @@
11
{
2-
"getIPUrls": {
3-
"IPv4": "https://api4.ipify.org",
2+
"get_ip_urls": {
3+
"ipv4": "https://api4.ipify.org",
44
"//": "https://api-ipv4.ip.sb/ip",
5-
"IPv6": "https://api6.ipify.org",
5+
"ipv6": "https://api6.ipify.org",
66
"//": "https://api-ipv6.ip.sb/ip"
77
},
8-
"domainSettings": [
8+
"domain_settings": [
99
{
1010
"enabled": false,
1111
"domainName": "example.com",
12-
"zoneID": "your_zone_ID",
13-
"apiToken": "your_api_token",
12+
"service_provider": {
13+
"provider_name": "cloudflare",
14+
"zone_id": "your_zone_ID",
15+
"api_token": "your_api_token"
16+
},
1417
"recordType": "AAAA",
1518
"createNewRecord": true,
1619
"subdomains": [
1720
{
18-
"name": "test"
21+
"name": "test",
22+
"interfaceID": "::2903"
1923
}
2024
]
2125
},
2226
{
2327
"enabled": true,
2428
"domainName": "example.com",
25-
"zoneID": "your_zone_ID",
26-
"apiToken": "your_api_token",
29+
"service_provider": {
30+
"provider_name": "cloudflare",
31+
"zone_id": "your_zone_ID",
32+
"api_token": "your_api_token"
33+
},
2734
"recordType": "A",
2835
"createNewRecord": false,
2936
"subdomains": [
3037
{
3138
"name": "test",
3239
"proxied": false,
33-
"interfaceID": "::2903"
40+
"ttl": 1
3441
}
3542
]
3643
}
Lines changed: 100 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,100 @@
1-
pub mod request {
2-
use serde::Serialize;
3-
4-
use crate::domain_record_changer::RecordType;
5-
6-
#[derive(Serialize)]
7-
pub struct CreateRecord {
8-
pub name: String,
9-
pub content: String,
10-
#[serde(rename = "type")]
11-
pub record_type: RecordType,
12-
pub proxied: bool,
13-
pub ttl: u32,
14-
}
15-
16-
#[derive(Serialize)]
17-
pub struct UpdateRecord {
18-
pub name: String,
19-
pub content: String,
20-
#[serde(rename = "type")]
21-
pub record_type: RecordType,
22-
pub proxied: bool,
23-
pub ttl: u32,
24-
}
25-
}
26-
27-
pub mod response {
28-
use crate::domain_record_changer::RecordType;
29-
use serde::Deserialize;
30-
31-
#[derive(Deserialize, Debug)]
32-
pub struct RecordDetail {
33-
pub content: String,
34-
pub name: String,
35-
pub proxied: bool,
36-
#[serde(rename = "type")]
37-
pub record_type: RecordType,
38-
pub id: String,
39-
pub locked: Option<bool>,
40-
pub proxiable: bool,
41-
pub ttl: u32,
42-
pub zone_name: String,
43-
}
44-
45-
#[derive(Deserialize, Debug)]
46-
pub struct CodeMessagePair {
47-
code: u32,
48-
message: String,
49-
}
50-
51-
#[derive(Deserialize, Debug)]
52-
pub struct ResultInfo {
53-
pub count: u32,
54-
pub page: u32,
55-
pub per_page: u32,
56-
pub total_count: u32,
57-
}
58-
59-
#[derive(Deserialize, Debug)]
60-
pub struct DescribeRecord {
61-
pub result: Vec<RecordDetail>,
62-
pub errors: Vec<CodeMessagePair>,
63-
pub messages: Vec<CodeMessagePair>,
64-
pub success: bool,
65-
pub result_info: ResultInfo,
66-
}
67-
68-
#[derive(Deserialize)]
69-
pub struct CreateRecord {
70-
pub result: RecordDetail,
71-
pub errors: Vec<CodeMessagePair>,
72-
pub messages: Vec<CodeMessagePair>,
73-
pub success: bool,
74-
}
75-
76-
#[derive(Deserialize)]
77-
pub struct UpdateRecord {
78-
pub result: RecordDetail,
79-
pub errors: Vec<CodeMessagePair>,
80-
pub messages: Vec<CodeMessagePair>,
81-
pub success: bool,
82-
}
83-
84-
impl std::fmt::Display for CodeMessagePair {
85-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
86-
write!(f, "Code {}: {}", self.code, self.message)
87-
}
88-
}
89-
}
1+
pub mod request {
2+
use crate::RecordType;
3+
use serde::Serialize;
4+
5+
#[derive(Serialize)]
6+
pub struct CreateRecord {
7+
pub name: String,
8+
pub content: String,
9+
#[serde(rename = "type")]
10+
pub record_type: RecordType,
11+
pub proxied: bool,
12+
pub ttl: u32,
13+
}
14+
15+
#[derive(Serialize)]
16+
pub struct UpdateRecord {
17+
pub name: String,
18+
pub content: String,
19+
#[serde(rename = "type")]
20+
pub record_type: RecordType,
21+
pub proxied: bool,
22+
pub ttl: u32,
23+
}
24+
}
25+
26+
pub mod response {
27+
use crate::RecordType;
28+
use serde::Deserialize;
29+
30+
#[derive(Deserialize, Debug)]
31+
pub struct CodeMessagePair {
32+
pub code: u32,
33+
pub message: String,
34+
}
35+
36+
#[derive(Deserialize, Debug)]
37+
pub struct MetaInfo {
38+
pub auto_added: Option<bool>,
39+
pub source: Option<String>,
40+
}
41+
42+
#[derive(Deserialize, Debug)]
43+
pub struct ResultInfo {
44+
pub count: u32,
45+
pub page: u32,
46+
pub per_page: u32,
47+
pub total_count: u32,
48+
}
49+
50+
#[derive(Deserialize, Debug)]
51+
pub struct RecordDetail {
52+
pub content: String,
53+
pub name: String,
54+
pub proxied: Option<bool>,
55+
#[serde(rename = "type")]
56+
pub record_type: RecordType,
57+
pub comment: Option<String>,
58+
pub created_on: String,
59+
pub id: String,
60+
pub meta: Option<MetaInfo>,
61+
pub modified_on: String,
62+
pub proxiable: bool,
63+
pub tags: Vec<String>,
64+
pub ttl: u32,
65+
pub zone_name: String,
66+
}
67+
68+
#[derive(Deserialize, Debug)]
69+
pub struct DescribeRecord {
70+
pub result: Vec<RecordDetail>,
71+
pub errors: Vec<CodeMessagePair>,
72+
pub messages: Vec<CodeMessagePair>,
73+
pub success: bool,
74+
pub result_info: ResultInfo,
75+
}
76+
77+
#[derive(Deserialize, Debug)]
78+
pub struct CreateRecord {
79+
// if success is false, the result may be null!
80+
pub result: Option<RecordDetail>,
81+
pub errors: Vec<CodeMessagePair>,
82+
pub messages: Vec<CodeMessagePair>,
83+
pub success: bool,
84+
}
85+
86+
#[derive(Deserialize, Debug)]
87+
pub struct UpdateRecord {
88+
// if success is false, the result may be null!
89+
pub result: Option<RecordDetail>,
90+
pub errors: Vec<CodeMessagePair>,
91+
pub messages: Vec<CodeMessagePair>,
92+
pub success: bool,
93+
}
94+
95+
impl std::fmt::Display for CodeMessagePair {
96+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
97+
write!(f, "Code {}: {}", self.code, self.message)
98+
}
99+
}
100+
}

0 commit comments

Comments
 (0)