Simple command to check if you are within ISS visibility range

Initial commit

+1
.gitignore
···
+
/target
+1042
Cargo.lock
···
+
# This file is automatically @generated by Cargo.
+
# It is not intended for manual editing.
+
version = 3
+
+
[[package]]
+
name = "addr2line"
+
version = "0.20.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3"
+
dependencies = [
+
"gimli",
+
]
+
+
[[package]]
+
name = "adler"
+
version = "1.0.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+
[[package]]
+
name = "autocfg"
+
version = "1.1.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+
[[package]]
+
name = "backtrace"
+
version = "0.3.68"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12"
+
dependencies = [
+
"addr2line",
+
"cc",
+
"cfg-if",
+
"libc",
+
"miniz_oxide",
+
"object",
+
"rustc-demangle",
+
]
+
+
[[package]]
+
name = "base64"
+
version = "0.21.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
+
+
[[package]]
+
name = "bitflags"
+
version = "1.3.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+
[[package]]
+
name = "bitflags"
+
version = "2.3.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
+
+
[[package]]
+
name = "bumpalo"
+
version = "3.13.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
+
+
[[package]]
+
name = "bytes"
+
version = "1.4.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+
+
[[package]]
+
name = "cc"
+
version = "1.0.79"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+
+
[[package]]
+
name = "cfg-if"
+
version = "1.0.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+
[[package]]
+
name = "core-foundation"
+
version = "0.9.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+
dependencies = [
+
"core-foundation-sys",
+
"libc",
+
]
+
+
[[package]]
+
name = "core-foundation-sys"
+
version = "0.8.4"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
+
+
[[package]]
+
name = "encoding_rs"
+
version = "0.8.32"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394"
+
dependencies = [
+
"cfg-if",
+
]
+
+
[[package]]
+
name = "errno"
+
version = "0.3.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+
dependencies = [
+
"errno-dragonfly",
+
"libc",
+
"windows-sys",
+
]
+
+
[[package]]
+
name = "errno-dragonfly"
+
version = "0.1.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+
dependencies = [
+
"cc",
+
"libc",
+
]
+
+
[[package]]
+
name = "fastrand"
+
version = "2.0.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
+
+
[[package]]
+
name = "fnv"
+
version = "1.0.7"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+
[[package]]
+
name = "foreign-types"
+
version = "0.3.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+
dependencies = [
+
"foreign-types-shared",
+
]
+
+
[[package]]
+
name = "foreign-types-shared"
+
version = "0.1.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+
[[package]]
+
name = "form_urlencoded"
+
version = "1.2.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+
dependencies = [
+
"percent-encoding",
+
]
+
+
[[package]]
+
name = "futures-channel"
+
version = "0.3.28"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
+
dependencies = [
+
"futures-core",
+
]
+
+
[[package]]
+
name = "futures-core"
+
version = "0.3.28"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
+
+
[[package]]
+
name = "futures-io"
+
version = "0.3.28"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
+
+
[[package]]
+
name = "futures-sink"
+
version = "0.3.28"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
+
+
[[package]]
+
name = "futures-task"
+
version = "0.3.28"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
+
+
[[package]]
+
name = "futures-util"
+
version = "0.3.28"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
+
dependencies = [
+
"futures-core",
+
"futures-io",
+
"futures-task",
+
"memchr",
+
"pin-project-lite",
+
"pin-utils",
+
"slab",
+
]
+
+
[[package]]
+
name = "gimli"
+
version = "0.27.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
+
+
[[package]]
+
name = "h2"
+
version = "0.3.20"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049"
+
dependencies = [
+
"bytes",
+
"fnv",
+
"futures-core",
+
"futures-sink",
+
"futures-util",
+
"http",
+
"indexmap",
+
"slab",
+
"tokio",
+
"tokio-util",
+
"tracing",
+
]
+
+
[[package]]
+
name = "hashbrown"
+
version = "0.12.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+
[[package]]
+
name = "hermit-abi"
+
version = "0.3.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+
+
[[package]]
+
name = "http"
+
version = "0.2.9"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
+
dependencies = [
+
"bytes",
+
"fnv",
+
"itoa",
+
]
+
+
[[package]]
+
name = "http-body"
+
version = "0.4.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+
dependencies = [
+
"bytes",
+
"http",
+
"pin-project-lite",
+
]
+
+
[[package]]
+
name = "httparse"
+
version = "1.8.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+
[[package]]
+
name = "httpdate"
+
version = "1.0.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
+
+
[[package]]
+
name = "hyper"
+
version = "0.14.27"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
+
dependencies = [
+
"bytes",
+
"futures-channel",
+
"futures-core",
+
"futures-util",
+
"h2",
+
"http",
+
"http-body",
+
"httparse",
+
"httpdate",
+
"itoa",
+
"pin-project-lite",
+
"socket2",
+
"tokio",
+
"tower-service",
+
"tracing",
+
"want",
+
]
+
+
[[package]]
+
name = "hyper-tls"
+
version = "0.5.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+
dependencies = [
+
"bytes",
+
"hyper",
+
"native-tls",
+
"tokio",
+
"tokio-native-tls",
+
]
+
+
[[package]]
+
name = "idna"
+
version = "0.4.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
+
dependencies = [
+
"unicode-bidi",
+
"unicode-normalization",
+
]
+
+
[[package]]
+
name = "indexmap"
+
version = "1.9.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+
dependencies = [
+
"autocfg",
+
"hashbrown",
+
]
+
+
[[package]]
+
name = "ipnet"
+
version = "2.8.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
+
+
[[package]]
+
name = "iss_locator"
+
version = "0.1.0"
+
dependencies = [
+
"reqwest",
+
"serde_json",
+
]
+
+
[[package]]
+
name = "itoa"
+
version = "1.0.9"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+
+
[[package]]
+
name = "js-sys"
+
version = "0.3.64"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
+
dependencies = [
+
"wasm-bindgen",
+
]
+
+
[[package]]
+
name = "lazy_static"
+
version = "1.4.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+
[[package]]
+
name = "libc"
+
version = "0.2.147"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+
+
[[package]]
+
name = "linux-raw-sys"
+
version = "0.4.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
+
+
[[package]]
+
name = "log"
+
version = "0.4.19"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+
+
[[package]]
+
name = "memchr"
+
version = "2.5.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+
[[package]]
+
name = "mime"
+
version = "0.3.17"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+
[[package]]
+
name = "miniz_oxide"
+
version = "0.7.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+
dependencies = [
+
"adler",
+
]
+
+
[[package]]
+
name = "mio"
+
version = "0.8.8"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
+
dependencies = [
+
"libc",
+
"wasi",
+
"windows-sys",
+
]
+
+
[[package]]
+
name = "native-tls"
+
version = "0.2.11"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
+
dependencies = [
+
"lazy_static",
+
"libc",
+
"log",
+
"openssl",
+
"openssl-probe",
+
"openssl-sys",
+
"schannel",
+
"security-framework",
+
"security-framework-sys",
+
"tempfile",
+
]
+
+
[[package]]
+
name = "num_cpus"
+
version = "1.16.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+
dependencies = [
+
"hermit-abi",
+
"libc",
+
]
+
+
[[package]]
+
name = "object"
+
version = "0.31.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1"
+
dependencies = [
+
"memchr",
+
]
+
+
[[package]]
+
name = "once_cell"
+
version = "1.18.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+
+
[[package]]
+
name = "openssl"
+
version = "0.10.55"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d"
+
dependencies = [
+
"bitflags 1.3.2",
+
"cfg-if",
+
"foreign-types",
+
"libc",
+
"once_cell",
+
"openssl-macros",
+
"openssl-sys",
+
]
+
+
[[package]]
+
name = "openssl-macros"
+
version = "0.1.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"syn",
+
]
+
+
[[package]]
+
name = "openssl-probe"
+
version = "0.1.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+
[[package]]
+
name = "openssl-sys"
+
version = "0.9.90"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6"
+
dependencies = [
+
"cc",
+
"libc",
+
"pkg-config",
+
"vcpkg",
+
]
+
+
[[package]]
+
name = "percent-encoding"
+
version = "2.3.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+
+
[[package]]
+
name = "pin-project-lite"
+
version = "0.2.10"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"
+
+
[[package]]
+
name = "pin-utils"
+
version = "0.1.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+
[[package]]
+
name = "pkg-config"
+
version = "0.3.27"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+
+
[[package]]
+
name = "proc-macro2"
+
version = "1.0.66"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+
dependencies = [
+
"unicode-ident",
+
]
+
+
[[package]]
+
name = "quote"
+
version = "1.0.32"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
+
dependencies = [
+
"proc-macro2",
+
]
+
+
[[package]]
+
name = "redox_syscall"
+
version = "0.3.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+
dependencies = [
+
"bitflags 1.3.2",
+
]
+
+
[[package]]
+
name = "reqwest"
+
version = "0.11.18"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55"
+
dependencies = [
+
"base64",
+
"bytes",
+
"encoding_rs",
+
"futures-core",
+
"futures-util",
+
"h2",
+
"http",
+
"http-body",
+
"hyper",
+
"hyper-tls",
+
"ipnet",
+
"js-sys",
+
"log",
+
"mime",
+
"native-tls",
+
"once_cell",
+
"percent-encoding",
+
"pin-project-lite",
+
"serde",
+
"serde_json",
+
"serde_urlencoded",
+
"tokio",
+
"tokio-native-tls",
+
"tower-service",
+
"url",
+
"wasm-bindgen",
+
"wasm-bindgen-futures",
+
"web-sys",
+
"winreg",
+
]
+
+
[[package]]
+
name = "rustc-demangle"
+
version = "0.1.23"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
+
[[package]]
+
name = "rustix"
+
version = "0.38.4"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5"
+
dependencies = [
+
"bitflags 2.3.3",
+
"errno",
+
"libc",
+
"linux-raw-sys",
+
"windows-sys",
+
]
+
+
[[package]]
+
name = "ryu"
+
version = "1.0.15"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+
+
[[package]]
+
name = "schannel"
+
version = "0.1.22"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
+
dependencies = [
+
"windows-sys",
+
]
+
+
[[package]]
+
name = "security-framework"
+
version = "2.9.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+
dependencies = [
+
"bitflags 1.3.2",
+
"core-foundation",
+
"core-foundation-sys",
+
"libc",
+
"security-framework-sys",
+
]
+
+
[[package]]
+
name = "security-framework-sys"
+
version = "2.9.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+
dependencies = [
+
"core-foundation-sys",
+
"libc",
+
]
+
+
[[package]]
+
name = "serde"
+
version = "1.0.177"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "63ba2516aa6bf82e0b19ca8b50019d52df58455d3cf9bdaf6315225fdd0c560a"
+
+
[[package]]
+
name = "serde_json"
+
version = "1.0.104"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
+
dependencies = [
+
"itoa",
+
"ryu",
+
"serde",
+
]
+
+
[[package]]
+
name = "serde_urlencoded"
+
version = "0.7.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+
dependencies = [
+
"form_urlencoded",
+
"itoa",
+
"ryu",
+
"serde",
+
]
+
+
[[package]]
+
name = "slab"
+
version = "0.4.8"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+
dependencies = [
+
"autocfg",
+
]
+
+
[[package]]
+
name = "socket2"
+
version = "0.4.9"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
+
dependencies = [
+
"libc",
+
"winapi",
+
]
+
+
[[package]]
+
name = "syn"
+
version = "2.0.27"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"unicode-ident",
+
]
+
+
[[package]]
+
name = "tempfile"
+
version = "3.7.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998"
+
dependencies = [
+
"cfg-if",
+
"fastrand",
+
"redox_syscall",
+
"rustix",
+
"windows-sys",
+
]
+
+
[[package]]
+
name = "tinyvec"
+
version = "1.6.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+
dependencies = [
+
"tinyvec_macros",
+
]
+
+
[[package]]
+
name = "tinyvec_macros"
+
version = "0.1.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+
[[package]]
+
name = "tokio"
+
version = "1.29.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da"
+
dependencies = [
+
"autocfg",
+
"backtrace",
+
"bytes",
+
"libc",
+
"mio",
+
"num_cpus",
+
"pin-project-lite",
+
"socket2",
+
"windows-sys",
+
]
+
+
[[package]]
+
name = "tokio-native-tls"
+
version = "0.3.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
+
dependencies = [
+
"native-tls",
+
"tokio",
+
]
+
+
[[package]]
+
name = "tokio-util"
+
version = "0.7.8"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d"
+
dependencies = [
+
"bytes",
+
"futures-core",
+
"futures-sink",
+
"pin-project-lite",
+
"tokio",
+
"tracing",
+
]
+
+
[[package]]
+
name = "tower-service"
+
version = "0.3.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+
[[package]]
+
name = "tracing"
+
version = "0.1.37"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+
dependencies = [
+
"cfg-if",
+
"pin-project-lite",
+
"tracing-core",
+
]
+
+
[[package]]
+
name = "tracing-core"
+
version = "0.1.31"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
+
dependencies = [
+
"once_cell",
+
]
+
+
[[package]]
+
name = "try-lock"
+
version = "0.2.4"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+
+
[[package]]
+
name = "unicode-bidi"
+
version = "0.3.13"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+
+
[[package]]
+
name = "unicode-ident"
+
version = "1.0.11"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+
+
[[package]]
+
name = "unicode-normalization"
+
version = "0.1.22"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+
dependencies = [
+
"tinyvec",
+
]
+
+
[[package]]
+
name = "url"
+
version = "2.4.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb"
+
dependencies = [
+
"form_urlencoded",
+
"idna",
+
"percent-encoding",
+
]
+
+
[[package]]
+
name = "vcpkg"
+
version = "0.2.15"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+
[[package]]
+
name = "want"
+
version = "0.3.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+
dependencies = [
+
"try-lock",
+
]
+
+
[[package]]
+
name = "wasi"
+
version = "0.11.0+wasi-snapshot-preview1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+
[[package]]
+
name = "wasm-bindgen"
+
version = "0.2.87"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
+
dependencies = [
+
"cfg-if",
+
"wasm-bindgen-macro",
+
]
+
+
[[package]]
+
name = "wasm-bindgen-backend"
+
version = "0.2.87"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
+
dependencies = [
+
"bumpalo",
+
"log",
+
"once_cell",
+
"proc-macro2",
+
"quote",
+
"syn",
+
"wasm-bindgen-shared",
+
]
+
+
[[package]]
+
name = "wasm-bindgen-futures"
+
version = "0.4.37"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03"
+
dependencies = [
+
"cfg-if",
+
"js-sys",
+
"wasm-bindgen",
+
"web-sys",
+
]
+
+
[[package]]
+
name = "wasm-bindgen-macro"
+
version = "0.2.87"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
+
dependencies = [
+
"quote",
+
"wasm-bindgen-macro-support",
+
]
+
+
[[package]]
+
name = "wasm-bindgen-macro-support"
+
version = "0.2.87"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"syn",
+
"wasm-bindgen-backend",
+
"wasm-bindgen-shared",
+
]
+
+
[[package]]
+
name = "wasm-bindgen-shared"
+
version = "0.2.87"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
+
+
[[package]]
+
name = "web-sys"
+
version = "0.3.64"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
+
dependencies = [
+
"js-sys",
+
"wasm-bindgen",
+
]
+
+
[[package]]
+
name = "winapi"
+
version = "0.3.9"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+
dependencies = [
+
"winapi-i686-pc-windows-gnu",
+
"winapi-x86_64-pc-windows-gnu",
+
]
+
+
[[package]]
+
name = "winapi-i686-pc-windows-gnu"
+
version = "0.4.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+
[[package]]
+
name = "winapi-x86_64-pc-windows-gnu"
+
version = "0.4.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+
[[package]]
+
name = "windows-sys"
+
version = "0.48.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+
dependencies = [
+
"windows-targets",
+
]
+
+
[[package]]
+
name = "windows-targets"
+
version = "0.48.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+
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]]
+
name = "windows_aarch64_gnullvm"
+
version = "0.48.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
+
[[package]]
+
name = "windows_aarch64_msvc"
+
version = "0.48.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
+
[[package]]
+
name = "windows_i686_gnu"
+
version = "0.48.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
+
[[package]]
+
name = "windows_i686_msvc"
+
version = "0.48.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
+
[[package]]
+
name = "windows_x86_64_gnu"
+
version = "0.48.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
+
[[package]]
+
name = "windows_x86_64_gnullvm"
+
version = "0.48.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+
+
[[package]]
+
name = "windows_x86_64_msvc"
+
version = "0.48.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+
+
[[package]]
+
name = "winreg"
+
version = "0.10.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
+
dependencies = [
+
"winapi",
+
]
+10
Cargo.toml
···
+
[package]
+
name = "iss_locator"
+
version = "0.1.0"
+
edition = "2021"
+
+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+
[dependencies]
+
reqwest = { version = "0.11.18",features = ["json","blocking"]}
+
serde_json = "1.0.104"
+9
LICENSE
···
+
MIT License
+
+
Copyright (c) <year> <copyright holders>
+
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+5
README.md
···
+
# ISS locator
+
+
Borne out of an idea about Amature Radio, i wanted to have a utility that can quickly check if ISS is in visible and amature radio range to listen to.
+
+
Your location is recieved from IP, ISS location from an API, plagiarized Haversine formula to check the distance between.
+74
src/lib.rs
···
+
use serde_json::Value;
+
+
+
pub struct Location {
+
pub lat: f64,
+
pub long: f64,
+
}
+
+
impl Location {
+
pub fn build(args: &[String]) -> Result<Location, &'static str> {
+
if args.len() < 2{
+
println!("{}",args.len());
+
return Err("Not enough arguments");
+
}
+
+
let lat: f64 = match args[0].parse::<f64>() {
+
Ok(num) =>
+
if num >= -90.0 && num <= 90.0 {
+
num
+
} else {
+
panic!("Invalid Lattitude: {num}")
+
},
+
Err(e) => panic!("{:?}",e),
+
};
+
+
let long: f64 = match args[1].parse::<f64>() {
+
Ok(num) =>
+
if num >= -180.0 && num <= 180.0 {
+
num
+
} else {
+
panic!("Invalid Longitude: {num}")
+
},
+
Err(e) => panic!("{:?}",e),
+
};
+
+
Ok(Location { lat,long })
+
}
+
}
+
+
pub fn get_distance(local: Location, distant: Location) -> f64 {
+
let r:f64 = 6367.45;
+
let delta_long = (local.long - distant.long).to_radians();
+
let delta_lat = (local.lat - distant.lat).to_radians();
+
+
let ang_inner = (delta_lat / 2.0).sin().powi(2)
+
+ local.lat.to_radians().cos() * distant.lat.to_radians().cos() * (delta_long / 2.0).sin().powi(2);
+
let ang = 2.0 * ang_inner.sqrt().asin();
+
r*ang
+
}
+
+
pub fn get_iss_location() -> Result<[String;2],Box<dyn std::error::Error>>{
+
let object: Value = match reqwest::blocking::get("http://api.open-notify.org/iss-now.json")?.json::<serde_json::Value>() {
+
Ok(object) => object["iss_position"].clone(),
+
Err(e) => panic!("Error serializing json data: {e}"),
+
};
+
+
let mut lat = object["latitude"].to_string();
+
lat.retain(|c| !r#"()":'"#.contains(c));
+
let mut long = object["longitude"].to_string();
+
long.retain(|c| !r#"()":'"#.contains(c));
+
Ok([lat,long])
+
}
+
+
+
pub fn get_local_location() -> Result<[String;2],Box<dyn std::error::Error>>{
+
let object: Value = match reqwest::blocking::get("http://ip-api.com/json/")?.json::<serde_json::Value>() {
+
Ok(object) => object.clone(),
+
Err(e) => panic!("Error serializing json data: {e}"),
+
};
+
+
let (lat,long) = (object["lat"].to_string(),object["lon"].to_string());
+
Ok([lat,long])
+
}
+
+35
src/main.rs
···
+
use std::process;
+
use iss_locator::Location;
+
+
fn main() {
+
+
let iss_location = match iss_locator::get_iss_location() {
+
Ok(string) => string,
+
Err(e) => panic!("Iss location aquisition failure: {e}"),
+
};
+
let local_location = match iss_locator::get_local_location() {
+
Ok(string) => string,
+
Err(e) => panic!("Local location aquisition failure: {e}"),
+
};
+
+
let iss: Location = Location::build(&iss_location).unwrap_or_else(|err| {
+
eprintln!("{err}");
+
process::exit(1);
+
});
+
let local: Location = Location::build(&local_location).unwrap_or_else(|err| {
+
eprintln!("{err}");
+
process::exit(1);
+
});
+
+
+
+
println!("local:{},{}",local.lat,local.long);
+
println!(" iss :{},{}",iss.lat,iss.long);
+
let distance = iss_locator::get_distance(local,iss);
+
println!("distance: {:.3} km",distance);
+
if distance < 2246.6449 {
+
println!("You are within ISS range");
+
} else {
+
println!("Outside of ISS range");
+
}
+
}