aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErin2018-05-15 20:50:18 -0500
committerErin2018-05-15 20:50:18 -0500
commit91592718aa3d6ae102ae31ee08bd3ae7bd57adec (patch)
tree224f28e955f1ece791742d5b3858a54ef9a03a11
parent4658e5303d3dc5aa3579119b0d0724cab3e98308 (diff)
downloadvalidator-91592718aa3d6ae102ae31ee08bd3ae7bd57adec.tar.bz2
feature gate card validator
-rw-r--r--validator/Cargo.toml3
-rw-r--r--validator/src/lib.rs2
-rw-r--r--validator/src/validation/mod.rs1
-rw-r--r--validator_derive/Cargo.toml1
-rw-r--r--validator_derive/src/lib.rs1
-rw-r--r--validator_derive/src/quoting.rs1
-rw-r--r--validator_derive/src/validation.rs1
7 files changed, 9 insertions, 1 deletions
diff --git a/validator/Cargo.toml b/validator/Cargo.toml
index 079fefb..1d57814 100644
--- a/validator/Cargo.toml
+++ b/validator/Cargo.toml
@@ -16,8 +16,9 @@ idna = "0.1"
serde = "1"
serde_derive = "1"
serde_json = "1"
-card-validate = "2.1"
+card-validate = { version = "2.1", optional = true }
phonenumber = { version = "0.2.0+8.7.0", optional = true }
[features]
phone = ["phonenumber"]
+card = ["card-validate"] \ No newline at end of file
diff --git a/validator/src/lib.rs b/validator/src/lib.rs
index 2cea387..b020026 100644
--- a/validator/src/lib.rs
+++ b/validator/src/lib.rs
@@ -7,6 +7,7 @@ extern crate serde;
extern crate serde_json;
#[macro_use]
extern crate serde_derive;
+#[cfg(feature = "card")]
extern crate card_validate;
#[cfg(feature = "phone")]
pub extern crate phonenumber;
@@ -22,6 +23,7 @@ pub use validation::range::{validate_range};
pub use validation::urls::{validate_url};
pub use validation::must_match::{validate_must_match};
pub use validation::contains::{validate_contains};
+#[cfg(feature = "card")]
pub use validation::cards::{validate_credit_card};
#[cfg(feature = "phone")]
pub use validation::phone::{validate_phone};
diff --git a/validator/src/validation/mod.rs b/validator/src/validation/mod.rs
index 93a9ec3..b244108 100644
--- a/validator/src/validation/mod.rs
+++ b/validator/src/validation/mod.rs
@@ -5,6 +5,7 @@ pub mod range;
pub mod urls;
pub mod must_match;
pub mod contains;
+#[cfg(feature = "card")]
pub mod cards;
#[cfg(feature = "phone")]
pub mod phone;
diff --git a/validator_derive/Cargo.toml b/validator_derive/Cargo.toml
index b52c8b5..ee0d468 100644
--- a/validator_derive/Cargo.toml
+++ b/validator_derive/Cargo.toml
@@ -13,6 +13,7 @@ proc-macro = true
[features]
phone = ["validator/phone"]
+card = ["validator/card"]
[dependencies]
syn = { version = "0.13", features = ["extra-traits"] }
diff --git a/validator_derive/src/lib.rs b/validator_derive/src/lib.rs
index 4aa37d0..ed7669f 100644
--- a/validator_derive/src/lib.rs
+++ b/validator_derive/src/lib.rs
@@ -272,6 +272,7 @@ fn find_validators_for_field(field: &syn::Field, field_types: &HashMap<String, S
assert_string_type("phone", field_type);
validators.push(FieldValidation::new(Validator::Phone));
},
+ #[cfg(feature = "card")]
"credit_card" => {
assert_string_type("credit_card", field_type);
validators.push(FieldValidation::new(Validator::CreditCard));
diff --git a/validator_derive/src/quoting.rs b/validator_derive/src/quoting.rs
index a3e25cb..6e010d7 100644
--- a/validator_derive/src/quoting.rs
+++ b/validator_derive/src/quoting.rs
@@ -165,6 +165,7 @@ pub fn quote_range_validation(field_quoter: &FieldQuoter, validation: &FieldVali
unreachable!()
}
+#[cfg(feature = "card")]
pub fn quote_credit_card_validation(field_quoter: &FieldQuoter, validation: &FieldValidation) -> quote::Tokens {
let field_name = &field_quoter.name;
let validator_param = field_quoter.quote_validator_param();
diff --git a/validator_derive/src/validation.rs b/validator_derive/src/validation.rs
index b5c7b78..bd59428 100644
--- a/validator_derive/src/validation.rs
+++ b/validator_derive/src/validation.rs
@@ -173,6 +173,7 @@ pub fn extract_argless_validation(validator_name: String, field: String, meta_it
let validator = match validator_name.as_ref() {
"email" => Validator::Email,
+ #[cfg(feature = "card")]
"credit_card" => Validator::CreditCard,
#[cfg(feature = "phone")]
"phone" => Validator::Phone,