This commit is contained in:
Philip Jenvey 2020-03-27 13:00:40 -07:00
parent 0930a84f6f
commit ec1b73a630
No known key found for this signature in database
GPG Key ID: 5B9F83DE4F7EB7FA
3 changed files with 94 additions and 10 deletions

View File

@ -150,9 +150,9 @@ dependencies = [
[[package]]
name = "grpcio"
version = "0.5.0-alpha.5"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1463096cfc371772d59a48fbfc471e18892e197efc5867b3bd7c2e0428e97824"
checksum = "b0eb5544c0e47a603130f1159773df46eb448c5649f7b4833c51f241c4e9fcbb"
dependencies = [
"futures",
"grpcio-sys",
@ -163,14 +163,15 @@ dependencies = [
[[package]]
name = "grpcio-sys"
version = "0.5.0-alpha.5"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8aebf59fdf3668edf163c1948ceca64c4ebb733d71c9055a12219d336bd5d51"
checksum = "48b1b6365d95c795aa3840b19c5364ad0a4bf82bfd48b2f9185719b9f8e614a7"
dependencies = [
"bindgen",
"cc",
"cmake",
"libc",
"libz-sys",
"pkg-config",
"walkdir",
]
@ -193,6 +194,17 @@ dependencies = [
"quick-error",
]
[[package]]
name = "idna"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
dependencies = [
"matches",
"unicode-bidi",
"unicode-normalization",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
@ -215,6 +227,18 @@ dependencies = [
"winapi",
]
[[package]]
name = "libz-sys"
version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "log"
version = "0.4.8"
@ -224,6 +248,12 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "matches"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
[[package]]
name = "memchr"
version = "2.3.3"
@ -246,6 +276,12 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
[[package]]
name = "percent-encoding"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "pkg-config"
version = "0.3.17"
@ -263,9 +299,9 @@ dependencies = [
[[package]]
name = "protobuf"
version = "2.7.0"
version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f00e4a3cb64ecfeac2c0a73c74c68ae3439d7a6bead3870be56ad5dd2620a6f"
checksum = "71964f34fd51cf04882d7ae3325fa0794d4cad66a03d0003f38d8ae4f63ba126"
[[package]]
name = "purge_ttl"
@ -276,6 +312,7 @@ dependencies = [
"googleapis-raw",
"grpcio",
"log",
"url",
]
[[package]]
@ -332,6 +369,12 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
[[package]]
name = "smallvec"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc"
[[package]]
name = "termcolor"
version = "1.1.0"
@ -350,12 +393,47 @@ dependencies = [
"lazy_static",
]
[[package]]
name = "unicode-bidi"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
dependencies = [
"matches",
]
[[package]]
name = "unicode-normalization"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4"
dependencies = [
"smallvec",
]
[[package]]
name = "unicode-xid"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
[[package]]
name = "url"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb"
dependencies = [
"idna",
"matches",
"percent-encoding",
]
[[package]]
name = "vcpkg"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168"
[[package]]
name = "version_check"
version = "0.1.5"

View File

@ -10,3 +10,4 @@ grpcio = { version = "0.5.0" }
cadence = "0.19.1"
log = "0.4.8"
env_logger = "0.7.1"
url = "2.1"

View File

@ -15,6 +15,7 @@ use googleapis_raw::spanner::v1::{
};
use grpcio::{CallOption, ChannelBuilder, ChannelCredentials, EnvBuilder, MetadataBuilder};
use log::{info, trace, warn};
use url::Url;
const SPANNER_ADDRESS: &str = "spanner.googleapis.com:443";
@ -95,13 +96,17 @@ fn main() -> Result<(), Box<dyn Error>> {
env_logger::try_init()?;
const DB_ENV: &str = "SYNC_DATABASE_URL";
let url = env::var(DB_ENV).map_err(|_| format!("Invalid or undefined {}", DB_ENV))?;
if !url.starts_with("spanner://") {
const INVALID_DB_ENV: String = format!("Invalid {}", DB_ENV);
let db_url = env::var(DB_ENV).map_err(|_| format!("Invalid or undefined {}", DB_ENV))?;
let url = Url::parse(&db_url).map_err(|e| format!("Invalid {}: {}", DB_ENV, e))?;
eprintln!("url: {}, host: {:?}, path: {:?}", url.to_string(), url.host(), url.path());
if url.scheme() != "spanner" {
return Err(format!("Invalid {}", DB_ENV).into());
}
let database = url["spanner://".len()..].to_owned();
info!("For {}", database);
let database = db_url["spanner://".len()..].to_owned();
let database2 = url.host().ok_or_else(|| format!("Invalid {}", DB_ENV))?.to_string() + url.path();
info!("For {} {}", database, database2);
// Set up the gRPC environment.
let env = Arc::new(EnvBuilder::new().build());