mirror of
				https://github.com/SeriousBug/gandi-live-dns-rust
				synced 2025-10-26 02:27:17 -05:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "706251c4d8f47d39186a628a12e5631f0c1aa32a" and "8413555d2fe25b12a30cecb3b73caa0f0a6ab862" have entirely different histories.
		
	
	
		
			706251c4d8
			...
			8413555d2f
		
	
		
|  | @ -1,3 +0,0 @@ | ||||||
| # assert_eq!(..., true) or false is a lot clearer when testing functions that |  | ||||||
| # return booleans. |  | ||||||
| bool_assert_comparison = false |  | ||||||
|  | @ -1,4 +0,0 @@ | ||||||
| ignore: |  | ||||||
|   # These are tested, but the tests hit external services which is not |  | ||||||
|   # necessarily smart to do in CI, so they get skipped. |  | ||||||
|   - "src/ip_source" |  | ||||||
							
								
								
									
										165
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										165
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							|  | @ -13,9 +13,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "anyhow" | name = "anyhow" | ||||||
| version = "1.0.69" | version = "1.0.68" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" | checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "ascii-canvas" | name = "ascii-canvas" | ||||||
|  | @ -93,7 +93,7 @@ dependencies = [ | ||||||
|  "slab", |  "slab", | ||||||
|  "socket2", |  "socket2", | ||||||
|  "waker-fn", |  "waker-fn", | ||||||
|  "windows-sys 0.42.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -130,7 +130,7 @@ dependencies = [ | ||||||
|  "futures-lite", |  "futures-lite", | ||||||
|  "libc", |  "libc", | ||||||
|  "signal-hook", |  "signal-hook", | ||||||
|  "windows-sys 0.42.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -266,9 +266,9 @@ checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "bytes" | name = "bytes" | ||||||
| version = "1.4.0" | version = "1.3.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" | checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "castaway" | name = "castaway" | ||||||
|  | @ -476,9 +476,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "encoding_rs" | name = "encoding_rs" | ||||||
| version = "0.8.32" | version = "0.8.31" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" | checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cfg-if", |  "cfg-if", | ||||||
| ] | ] | ||||||
|  | @ -652,7 +652,7 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gandi-live-dns" | name = "gandi-live-dns" | ||||||
| version = "1.8.0" | version = "1.7.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "async-trait", |  "async-trait", | ||||||
|  | @ -663,7 +663,6 @@ dependencies = [ | ||||||
|  "governor", |  "governor", | ||||||
|  "httpmock", |  "httpmock", | ||||||
|  "json", |  "json", | ||||||
|  "lazy_static", |  | ||||||
|  "regex", |  "regex", | ||||||
|  "reqwest", |  "reqwest", | ||||||
|  "serde", |  "serde", | ||||||
|  | @ -740,9 +739,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "heck" | name = "heck" | ||||||
| version = "0.4.1" | version = "0.4.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" | checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "hermit-abi" | name = "hermit-abi" | ||||||
|  | @ -762,12 +761,6 @@ dependencies = [ | ||||||
|  "libc", |  "libc", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] |  | ||||||
| name = "hermit-abi" |  | ||||||
| version = "0.3.1" |  | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" |  | ||||||
| checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" |  | ||||||
| 
 |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "http" | name = "http" | ||||||
| version = "0.2.8" | version = "0.2.8" | ||||||
|  | @ -832,9 +825,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "hyper" | name = "hyper" | ||||||
| version = "0.14.24" | version = "0.14.23" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" | checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bytes", |  "bytes", | ||||||
|  "futures-channel", |  "futures-channel", | ||||||
|  | @ -898,12 +891,12 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "io-lifetimes" | name = "io-lifetimes" | ||||||
| version = "1.0.5" | version = "1.0.4" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3" | checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "libc", |  "libc", | ||||||
|  "windows-sys 0.45.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -914,14 +907,14 @@ checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "is-terminal" | name = "is-terminal" | ||||||
| version = "0.4.3" | version = "0.4.2" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "22e18b0a45d56fe973d6db23972bf5bc46f988a4a2385deac9cc29572f09daef" | checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "hermit-abi 0.3.1", |  "hermit-abi 0.2.6", | ||||||
|  "io-lifetimes", |  "io-lifetimes", | ||||||
|  "rustix", |  "rustix", | ||||||
|  "windows-sys 0.45.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -968,9 +961,9 @@ checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "js-sys" | name = "js-sys" | ||||||
| version = "0.3.61" | version = "0.3.60" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" | checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "wasm-bindgen", |  "wasm-bindgen", | ||||||
| ] | ] | ||||||
|  | @ -1118,7 +1111,7 @@ dependencies = [ | ||||||
|  "libc", |  "libc", | ||||||
|  "log", |  "log", | ||||||
|  "wasi 0.11.0+wasi-snapshot-preview1", |  "wasi 0.11.0+wasi-snapshot-preview1", | ||||||
|  "windows-sys 0.42.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -1207,15 +1200,15 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "parking_lot_core" | name = "parking_lot_core" | ||||||
| version = "0.9.7" | version = "0.9.6" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" | checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cfg-if", |  "cfg-if", | ||||||
|  "libc", |  "libc", | ||||||
|  "redox_syscall", |  "redox_syscall", | ||||||
|  "smallvec", |  "smallvec", | ||||||
|  "windows-sys 0.45.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -1226,9 +1219,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "petgraph" | name = "petgraph" | ||||||
| version = "0.6.3" | version = "0.6.2" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" | checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "fixedbitset", |  "fixedbitset", | ||||||
|  "indexmap", |  "indexmap", | ||||||
|  | @ -1298,7 +1291,7 @@ dependencies = [ | ||||||
|  "libc", |  "libc", | ||||||
|  "log", |  "log", | ||||||
|  "wepoll-ffi", |  "wepoll-ffi", | ||||||
|  "windows-sys 0.42.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -1339,9 +1332,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "proc-macro2" | name = "proc-macro2" | ||||||
| version = "1.0.51" | version = "1.0.50" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" | checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "unicode-ident", |  "unicode-ident", | ||||||
| ] | ] | ||||||
|  | @ -1403,9 +1396,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "raw-cpuid" | name = "raw-cpuid" | ||||||
| version = "10.6.1" | version = "10.6.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "c307f7aacdbab3f0adee67d52739a1d71112cc068d6fab169ddeb18e48877fad" | checksum = "a6823ea29436221176fe662da99998ad3b4db2c7f31e7b6f5fe43adccd6320bb" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
| ] | ] | ||||||
|  | @ -1503,16 +1496,16 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "rustix" | name = "rustix" | ||||||
| version = "0.36.8" | version = "0.36.7" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644" | checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "errno", |  "errno", | ||||||
|  "io-lifetimes", |  "io-lifetimes", | ||||||
|  "libc", |  "libc", | ||||||
|  "linux-raw-sys", |  "linux-raw-sys", | ||||||
|  "windows-sys 0.45.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -1554,7 +1547,7 @@ version = "0.1.21" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" | checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "windows-sys 0.42.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -1595,9 +1588,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "serde_json" | name = "serde_json" | ||||||
| version = "1.0.93" | version = "1.0.91" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" | checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "itoa", |  "itoa", | ||||||
|  "ryu", |  "ryu", | ||||||
|  | @ -1637,9 +1630,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "signal-hook" | name = "signal-hook" | ||||||
| version = "0.3.15" | version = "0.3.14" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9" | checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "libc", |  "libc", | ||||||
|  "signal-hook-registry", |  "signal-hook-registry", | ||||||
|  | @ -1647,9 +1640,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "signal-hook-registry" | name = "signal-hook-registry" | ||||||
| version = "1.4.1" | version = "1.4.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" | checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "libc", |  "libc", | ||||||
| ] | ] | ||||||
|  | @ -1765,7 +1758,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "cb20089a8ba2b69debd491f8d2d023761cbf196e999218c591fa1e7e15a21907" | checksum = "cb20089a8ba2b69debd491f8d2d023761cbf196e999218c591fa1e7e15a21907" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "rustix", |  "rustix", | ||||||
|  "windows-sys 0.42.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -1808,9 +1801,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "tinyvec_macros" | name = "tinyvec_macros" | ||||||
| version = "0.1.1" | version = "0.1.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "tokio" | name = "tokio" | ||||||
|  | @ -1829,7 +1822,7 @@ dependencies = [ | ||||||
|  "signal-hook-registry", |  "signal-hook-registry", | ||||||
|  "socket2", |  "socket2", | ||||||
|  "tokio-macros", |  "tokio-macros", | ||||||
|  "windows-sys 0.42.0", |  "windows-sys", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -1856,9 +1849,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "tokio-util" | name = "tokio-util" | ||||||
| version = "0.7.7" | version = "0.7.4" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" | checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bytes", |  "bytes", | ||||||
|  "futures-core", |  "futures-core", | ||||||
|  | @ -1870,9 +1863,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "toml" | name = "toml" | ||||||
| version = "0.7.2" | version = "0.7.1" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "f7afcae9e3f0fe2c370fd4657108972cbb2fa9db1b9f84849cefd80741b01cb6" | checksum = "772c1426ab886e7362aedf4abc9c0d1348a979517efedfc25862944d10137af0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "serde", |  "serde", | ||||||
|  "serde_spanned", |  "serde_spanned", | ||||||
|  | @ -1891,9 +1884,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "toml_edit" | name = "toml_edit" | ||||||
| version = "0.19.3" | version = "0.19.1" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "5e6a7712b49e1775fb9a7b998de6635b299237f48b404dde71704f2e0e7f37e5" | checksum = "90a238ee2e6ede22fb95350acc78e21dc40da00bb66c0334bde83de4ed89424e" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "indexmap", |  "indexmap", | ||||||
|  "nom8", |  "nom8", | ||||||
|  | @ -2068,9 +2061,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "wasm-bindgen" | name = "wasm-bindgen" | ||||||
| version = "0.2.84" | version = "0.2.83" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" | checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cfg-if", |  "cfg-if", | ||||||
|  "wasm-bindgen-macro", |  "wasm-bindgen-macro", | ||||||
|  | @ -2078,9 +2071,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "wasm-bindgen-backend" | name = "wasm-bindgen-backend" | ||||||
| version = "0.2.84" | version = "0.2.83" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" | checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bumpalo", |  "bumpalo", | ||||||
|  "log", |  "log", | ||||||
|  | @ -2093,9 +2086,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "wasm-bindgen-futures" | name = "wasm-bindgen-futures" | ||||||
| version = "0.4.34" | version = "0.4.33" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" | checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cfg-if", |  "cfg-if", | ||||||
|  "js-sys", |  "js-sys", | ||||||
|  | @ -2105,9 +2098,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "wasm-bindgen-macro" | name = "wasm-bindgen-macro" | ||||||
| version = "0.2.84" | version = "0.2.83" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" | checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "quote", |  "quote", | ||||||
|  "wasm-bindgen-macro-support", |  "wasm-bindgen-macro-support", | ||||||
|  | @ -2115,9 +2108,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "wasm-bindgen-macro-support" | name = "wasm-bindgen-macro-support" | ||||||
| version = "0.2.84" | version = "0.2.83" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" | checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  | @ -2128,15 +2121,15 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "wasm-bindgen-shared" | name = "wasm-bindgen-shared" | ||||||
| version = "0.2.84" | version = "0.2.83" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" | checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "web-sys" | name = "web-sys" | ||||||
| version = "0.3.61" | version = "0.3.60" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" | checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "js-sys", |  "js-sys", | ||||||
|  "wasm-bindgen", |  "wasm-bindgen", | ||||||
|  | @ -2216,30 +2209,6 @@ dependencies = [ | ||||||
|  "windows_x86_64_msvc", |  "windows_x86_64_msvc", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] |  | ||||||
| name = "windows-sys" |  | ||||||
| version = "0.45.0" |  | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" |  | ||||||
| checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" |  | ||||||
| dependencies = [ |  | ||||||
|  "windows-targets", |  | ||||||
| ] |  | ||||||
| 
 |  | ||||||
| [[package]] |  | ||||||
| name = "windows-targets" |  | ||||||
| version = "0.42.1" |  | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" |  | ||||||
| checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" |  | ||||||
| dependencies = [ |  | ||||||
|  "windows_aarch64_gnullvm", |  | ||||||
|  "windows_aarch64_msvc", |  | ||||||
|  "windows_i686_gnu", |  | ||||||
|  "windows_i686_msvc", |  | ||||||
|  "windows_x86_64_gnu", |  | ||||||
|  "windows_x86_64_gnullvm", |  | ||||||
|  "windows_x86_64_msvc", |  | ||||||
| ] |  | ||||||
| 
 |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "windows_aarch64_gnullvm" | name = "windows_aarch64_gnullvm" | ||||||
| version = "0.42.1" | version = "0.42.1" | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| [package] | [package] | ||||||
| name = "gandi-live-dns" | name = "gandi-live-dns" | ||||||
| description = "Automatically updates your IP address in Gandi's Live DNS. Makes it possible to use Gandi as a dynamic DNS system." | description = "Automatically updates your IP address in Gandi's Live DNS. Makes it possible to use Gandi as a dynamic DNS system." | ||||||
| version = "1.8.0" | version = "1.7.0" | ||||||
| edition = "2021" | edition = "2021" | ||||||
| authors = ["Kaan Barmore-Genç <kaan@bgenc.net>"] | authors = ["Kaan Barmore-Genç <kaan@bgenc.net>"] | ||||||
| license = "MIT" | license = "MIT" | ||||||
|  | @ -38,7 +38,6 @@ thiserror = "1.0.38" | ||||||
| [dev-dependencies] | [dev-dependencies] | ||||||
| httpmock = "0.6" | httpmock = "0.6" | ||||||
| regex = "1.6" | regex = "1.6" | ||||||
| lazy_static = "1.4.0" |  | ||||||
| 
 | 
 | ||||||
| [dev-dependencies.die-exit] | [dev-dependencies.die-exit] | ||||||
| version = "0.4" | version = "0.4" | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ use async_trait::async_trait; | ||||||
| 
 | 
 | ||||||
| use crate::ClientError; | use crate::ClientError; | ||||||
| 
 | 
 | ||||||
| use super::common::IPSource; | use super::ip_source::IPSource; | ||||||
| 
 | 
 | ||||||
| pub(crate) struct IPSourceIcanhazip; | pub(crate) struct IPSourceIcanhazip; | ||||||
| 
 | 
 | ||||||
|  | @ -34,7 +34,7 @@ impl IPSource for IPSourceIcanhazip { | ||||||
| mod tests { | mod tests { | ||||||
|     use regex::Regex; |     use regex::Regex; | ||||||
| 
 | 
 | ||||||
|     use crate::ip_source::common::IPSource; |     use crate::ip_source::ip_source::IPSource; | ||||||
| 
 | 
 | ||||||
|     use super::IPSourceIcanhazip; |     use super::IPSourceIcanhazip; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ use async_trait::async_trait; | ||||||
| 
 | 
 | ||||||
| use crate::ClientError; | use crate::ClientError; | ||||||
| 
 | 
 | ||||||
| use super::common::IPSource; | use super::ip_source::IPSource; | ||||||
| 
 | 
 | ||||||
| pub(crate) struct IPSourceIpify; | pub(crate) struct IPSourceIpify; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| pub(crate) mod common; |  | ||||||
| pub(crate) mod icanhazip; | pub(crate) mod icanhazip; | ||||||
|  | pub(crate) mod ip_source; | ||||||
| pub(crate) mod ipify; | pub(crate) mod ipify; | ||||||
| pub(crate) mod seeip; | pub(crate) mod seeip; | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ use async_trait::async_trait; | ||||||
| 
 | 
 | ||||||
| use crate::ClientError; | use crate::ClientError; | ||||||
| 
 | 
 | ||||||
| use super::common::IPSource; | use super::ip_source::IPSource; | ||||||
| 
 | 
 | ||||||
| pub(crate) struct IPSourceSeeIP; | pub(crate) struct IPSourceSeeIP; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										133
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										133
									
								
								src/main.rs
									
									
									
									
									
								
							|  | @ -1,6 +1,6 @@ | ||||||
| use crate::config::Config; | use crate::config::Config; | ||||||
| use crate::gandi::GandiAPI; | use crate::gandi::GandiAPI; | ||||||
| use crate::ip_source::{common::IPSource, ipify::IPSourceIpify}; | use crate::ip_source::{ip_source::IPSource, ipify::IPSourceIpify}; | ||||||
| use clap::Parser; | use clap::Parser; | ||||||
| use config::{ConfigError, IPSourceName}; | use config::{ConfigError, IPSourceName}; | ||||||
| use ip_source::icanhazip::IPSourceIcanhazip; | use ip_source::icanhazip::IPSourceIcanhazip; | ||||||
|  | @ -57,7 +57,7 @@ pub enum ApiError { | ||||||
| fn api_client(api_key: &str) -> Result<Client, ClientError> { | fn api_client(api_key: &str) -> Result<Client, ClientError> { | ||||||
|     let client_builder = ClientBuilder::new(); |     let client_builder = ClientBuilder::new(); | ||||||
| 
 | 
 | ||||||
|     let key = format!("Apikey {api_key}"); |     let key = format!("Apikey {}", api_key); | ||||||
|     let mut auth_value = header::HeaderValue::from_str(&key)?; |     let mut auth_value = header::HeaderValue::from_str(&key)?; | ||||||
|     let mut headers = header::HeaderMap::new(); |     let mut headers = header::HeaderMap::new(); | ||||||
|     auth_value.set_sensitive(true); |     auth_value.set_sensitive(true); | ||||||
|  | @ -82,9 +82,6 @@ struct ResponseFeedback { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[derive(Deserialize)] | #[derive(Deserialize)] | ||||||
| // Allowing dead code because this is the API response we get from Gandi.
 |  | ||||||
| // We don't necessarily need all the fields, but we get them anyway.
 |  | ||||||
| #[allow(dead_code)] |  | ||||||
| struct ApiResponse { | struct ApiResponse { | ||||||
|     message: String, |     message: String, | ||||||
|     cause: Option<String>, |     cause: Option<String>, | ||||||
|  | @ -108,12 +105,12 @@ async fn run( | ||||||
|         let ipv6 = ipv6_result.as_ref(); |         let ipv6 = ipv6_result.as_ref(); | ||||||
|         println!("Found these:"); |         println!("Found these:"); | ||||||
|         match ipv4 { |         match ipv4 { | ||||||
|             Ok(ip) => println!("\tIPv4: {ip}"), |             Ok(ip) => println!("\tIPv4: {}", ip), | ||||||
|             Err(err) => eprintln!("\tIPv4 failed: {err}"), |             Err(err) => eprintln!("\tIPv4 failed: {}", err), | ||||||
|         } |         } | ||||||
|         match ipv6 { |         match ipv6 { | ||||||
|             Ok(ip) => println!("\tIPv6: {ip}"), |             Ok(ip) => println!("\tIPv6: {}", ip), | ||||||
|             Err(err) => eprintln!("\tIPv6 failed: {err}"), |             Err(err) => eprintln!("\tIPv6 failed: {}", err), | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         let ipv4_same = last_ipv4 |         let ipv4_same = last_ipv4 | ||||||
|  | @ -125,6 +122,9 @@ async fn run( | ||||||
|             .map(|p| ipv6.map(|q| p == q).unwrap_or(false)) |             .map(|p| ipv6.map(|q| p == q).unwrap_or(false)) | ||||||
|             .unwrap_or(false); |             .unwrap_or(false); | ||||||
| 
 | 
 | ||||||
|  |         last_ipv4 = ipv4.ok().map(|v| v.to_string()); | ||||||
|  |         last_ipv6 = ipv6.ok().map(|v| v.to_string()); | ||||||
|  | 
 | ||||||
|         if !ipv4_same || !ipv6_same || conf.always_update { |         if !ipv4_same || !ipv6_same || conf.always_update { | ||||||
|             let client = api_client(&conf.api_key)?; |             let client = api_client(&conf.api_key)?; | ||||||
|             let mut tasks: Vec<JoinHandle<Result<ResponseFeedback, ClientError>>> = Vec::new(); |             let mut tasks: Vec<JoinHandle<Result<ResponseFeedback, ClientError>>> = Vec::new(); | ||||||
|  | @ -229,11 +229,11 @@ async fn run( | ||||||
|                     .filter(|item| item.response.is_ok()) |                     .filter(|item| item.response.is_ok()) | ||||||
|                     .count() |                     .count() | ||||||
|             ); |             ); | ||||||
|             for item in &results { |             for item in results { | ||||||
|                 match item { |                 match item { | ||||||
|                     Ok(value) => println!( |                     Ok(value) => println!( | ||||||
|                         "{}", |                         "{}", | ||||||
|                         match &value.response { |                         match value.response { | ||||||
|                             Ok(val) => format!( |                             Ok(val) => format!( | ||||||
|                                 "Record '{}' ({}): {}", |                                 "Record '{}' ({}): {}", | ||||||
|                                 value.entry_name, value.entry_type, val |                                 value.entry_name, value.entry_type, val | ||||||
|  | @ -244,21 +244,9 @@ async fn run( | ||||||
|                             ), |                             ), | ||||||
|                         } |                         } | ||||||
|                     ), |                     ), | ||||||
|                     Err(err) => println!("{err}"), |                     Err(err) => println!("{}", err), | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             if results |  | ||||||
|                 .iter() |  | ||||||
|                 // all tasks finished OK, and all responses were OK as well
 |  | ||||||
|                 .all(|result| result.as_ref().map(|v| v.response.is_ok()).unwrap_or(false)) |  | ||||||
|             { |  | ||||||
|                 // Only then we update the last seen IP, because we want to
 |  | ||||||
|                 // retry updates in case the last update just happened to fail
 |  | ||||||
|                 last_ipv4 = ipv4.ok().map(|v| v.to_string()); |  | ||||||
|                 last_ipv6 = ipv6.ok().map(|v| v.to_string()); |  | ||||||
|             } else if opts.repeat.is_some() { |  | ||||||
|                 println!("Some operations failed. They will be retried during the next repeat.") |  | ||||||
|             } |  | ||||||
|         } else { |         } else { | ||||||
|             println!("IP address has not changed since last update"); |             println!("IP address has not changed since last update"); | ||||||
|         } |         } | ||||||
|  | @ -292,15 +280,11 @@ async fn main() -> anyhow::Result<()> { | ||||||
| 
 | 
 | ||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
| mod tests { | mod tests { | ||||||
|     use crate::{config, ip_source::common::IPSource, opts::Opts, run, ClientError}; |     use std::{env::temp_dir, time::Duration}; | ||||||
|  | 
 | ||||||
|  |     use crate::{config, ip_source::ip_source::IPSource, opts::Opts, run, ClientError}; | ||||||
|     use async_trait::async_trait; |     use async_trait::async_trait; | ||||||
|     use httpmock::MockServer; |     use httpmock::MockServer; | ||||||
|     use lazy_static::lazy_static; |  | ||||||
|     use std::{ |  | ||||||
|         env::temp_dir, |  | ||||||
|         sync::atomic::{AtomicBool, Ordering::SeqCst}, |  | ||||||
|         time::Duration, |  | ||||||
|     }; |  | ||||||
|     use tokio::{fs, task::LocalSet, time::sleep}; |     use tokio::{fs, task::LocalSet, time::sleep}; | ||||||
| 
 | 
 | ||||||
|     struct IPSourceMock; |     struct IPSourceMock; | ||||||
|  | @ -338,8 +322,7 @@ mod tests { | ||||||
|                     "/v5/livedns/domains/{fqdn}/records/{rname}/{rtype}" |                     "/v5/livedns/domains/{fqdn}/records/{rname}/{rtype}" | ||||||
|                 )) |                 )) | ||||||
|                 .body_contains("192.168.0.0"); |                 .body_contains("192.168.0.0"); | ||||||
|             then.status(201) |             then.status(200); | ||||||
|                 .body("{\"cause\":\"\", \"code\":201, \"message\":\"\", \"object\":\"\"}"); |  | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         let opts = Opts { |         let opts = Opts { | ||||||
|  | @ -386,8 +369,7 @@ mod tests { | ||||||
|                         "/v5/livedns/domains/{fqdn}/records/{rname}/{rtype}" |                         "/v5/livedns/domains/{fqdn}/records/{rname}/{rtype}" | ||||||
|                     )) |                     )) | ||||||
|                     .body_contains("192.168.0.0"); |                     .body_contains("192.168.0.0"); | ||||||
|                 then.status(201) |                 then.status(200); | ||||||
|                     .body("{\"cause\":\"\", \"code\":201, \"message\":\"\", \"object\":\"\"}"); |  | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|             let server_url = server.base_url(); |             let server_url = server.base_url(); | ||||||
|  | @ -412,85 +394,6 @@ mod tests { | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     #[test] |  | ||||||
|     fn repeat_with_failure() { |  | ||||||
|         let runtime = tokio::runtime::Builder::new_current_thread() |  | ||||||
|             .enable_all() |  | ||||||
|             .build() |  | ||||||
|             .unwrap(); |  | ||||||
| 
 |  | ||||||
|         LocalSet::new().block_on(&runtime, async { |  | ||||||
|             let mut temp = temp_dir().join("gandi-live-dns-test"); |  | ||||||
|             fs::create_dir_all(&temp) |  | ||||||
|                 .await |  | ||||||
|                 .expect("Failed to create test dir"); |  | ||||||
|             temp.push("test.toml"); |  | ||||||
|             fs::write( |  | ||||||
|                 &temp, |  | ||||||
|                 "fqdn = \"example.com\"\napi_key = \"xxx\"\nttl = 300\n[[entry]]\nname =\"@\"\n", |  | ||||||
|             ) |  | ||||||
|             .await |  | ||||||
|             .expect("Failed to write test config file"); |  | ||||||
| 
 |  | ||||||
|             let fqdn = "example.com"; |  | ||||||
|             let rname = "@"; |  | ||||||
|             let rtype = "A"; |  | ||||||
|             let server = MockServer::start(); |  | ||||||
|             let mock = server.mock(|when, then| { |  | ||||||
|                 when.method("PUT") |  | ||||||
|                     .path(format!( |  | ||||||
|                         "/v5/livedns/domains/{fqdn}/records/{rname}/{rtype}" |  | ||||||
|                     )) |  | ||||||
|                     .body_contains("192.168.0.0") |  | ||||||
|                     .matches(|_| { |  | ||||||
|                         // Don't match during the first call, but do during the second call
 |  | ||||||
|                         lazy_static! { |  | ||||||
|                             static ref FIRST_CALL: AtomicBool = AtomicBool::new(true); |  | ||||||
|                         } |  | ||||||
|                         if FIRST_CALL.load(SeqCst) { |  | ||||||
|                             FIRST_CALL.store(false, SeqCst); |  | ||||||
|                             return true; |  | ||||||
|                         } |  | ||||||
|                         false |  | ||||||
|                     }); |  | ||||||
|                 then.status(500) |  | ||||||
|                     .body("{\"cause\":\"\", \"code\":500, \"message\":\"Something went wrong\", \"object\":\"\"}"); |  | ||||||
|             }); |  | ||||||
|             let mock_fail = server.mock(|when, then| { |  | ||||||
|                 when.method("PUT") |  | ||||||
|                     .path(format!( |  | ||||||
|                         "/v5/livedns/domains/{fqdn}/records/{rname}/{rtype}" |  | ||||||
|                     )) |  | ||||||
|                     .body_contains("192.168.0.0"); |  | ||||||
|                 then.status(201) |  | ||||||
|                     .body("{\"cause\":\"\", \"code\":201, \"message\":\"\", \"object\":\"\"}"); |  | ||||||
|             }); |  | ||||||
| 
 |  | ||||||
|             let server_url = server.base_url(); |  | ||||||
|             let handle = tokio::task::spawn_local(async move { |  | ||||||
|                 let opts = Opts { |  | ||||||
|                     config: Some(temp.to_string_lossy().to_string()), |  | ||||||
|                     repeat: Some(1), |  | ||||||
|                     ..Opts::default() |  | ||||||
|                 }; |  | ||||||
|                 let conf = config::load_config(&opts).expect("Failed to load config"); |  | ||||||
|                 let ip_source: Box<dyn IPSource> = Box::new(IPSourceMock); |  | ||||||
|                 run(&server_url, &ip_source, &conf, &opts) |  | ||||||
|                     .await |  | ||||||
|                     .expect("Failed when running the update"); |  | ||||||
|             }); |  | ||||||
| 
 |  | ||||||
|             sleep(Duration::from_secs(4)).await; |  | ||||||
|             handle.abort(); |  | ||||||
| 
 |  | ||||||
|             // The first call failed
 |  | ||||||
|             mock_fail.assert(); |  | ||||||
|             // We then retried since the first call failed. The retry succeeds
 |  | ||||||
|             // so we don't retry again.
 |  | ||||||
|             mock.assert(); |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     #[test] |     #[test] | ||||||
|     fn repeat_always_update() { |     fn repeat_always_update() { | ||||||
|         let runtime = tokio::runtime::Builder::new_current_thread() |         let runtime = tokio::runtime::Builder::new_current_thread() | ||||||
|  | @ -521,7 +424,7 @@ mod tests { | ||||||
|                         "/v5/livedns/domains/{fqdn}/records/{rname}/{rtype}" |                         "/v5/livedns/domains/{fqdn}/records/{rname}/{rtype}" | ||||||
|                     )) |                     )) | ||||||
|                     .body_contains("192.168.0.0"); |                     .body_contains("192.168.0.0"); | ||||||
|                 then.status(201).body("{\"cause\":\"\", \"code\":201, \"message\":\"\", \"object\":\"\"}"); |                 then.status(200); | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|             let server_url = server.base_url(); |             let server_url = server.base_url(); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue