aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2018-08-16 09:42:55 -0700
committerBryan Newbold <bnewbold@robocracy.org>2018-08-16 09:42:55 -0700
commitb83347388d17dfd58c9f3d123d3d96d050ca6e9b (patch)
treeb07cfd936e1e405e88e5003fcf022e778161dd5c
parent68e847aadc728d63057be5b8d547c851b02a0008 (diff)
downloadfatcat-b83347388d17dfd58c9f3d123d3d96d050ca6e9b.tar.gz
fatcat-b83347388d17dfd58c9f3d123d3d96d050ca6e9b.zip
ORCIDs can end in X character
-rw-r--r--fatcat-openapi2.yml2
-rw-r--r--python/fatcat_client/api/default_api.py4
-rw-r--r--python/fatcat_client/models/creator_entity.py4
-rw-r--r--rust/fatcat-api/README.md2
-rw-r--r--rust/fatcat-api/api.yaml2
-rw-r--r--rust/fatcat-api/api/swagger.yaml6
-rw-r--r--rust/src/api_helpers.rs10
7 files changed, 19 insertions, 11 deletions
diff --git a/fatcat-openapi2.yml b/fatcat-openapi2.yml
index 7ec91bad..524333ce 100644
--- a/fatcat-openapi2.yml
+++ b/fatcat-openapi2.yml
@@ -37,7 +37,7 @@ x-issn: &FATCATISSN
x-orcid: &FATCATORCID
type: string
example: "0000-0002-1825-0097"
- pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{4}"
+ pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]"
minLength: 19
maxLength: 19
diff --git a/python/fatcat_client/api/default_api.py b/python/fatcat_client/api/default_api.py
index b7f23e25..acd33c88 100644
--- a/python/fatcat_client/api/default_api.py
+++ b/python/fatcat_client/api/default_api.py
@@ -3255,8 +3255,8 @@ class DefaultApi(object):
if ('orcid' in params and
len(params['orcid']) < 19):
raise ValueError("Invalid value for parameter `orcid` when calling `lookup_creator`, length must be greater than or equal to `19`") # noqa: E501
- if 'orcid' in params and not re.search('\\d{4}-\\d{4}-\\d{4}-\\d{4}', params['orcid']): # noqa: E501
- raise ValueError("Invalid value for parameter `orcid` when calling `lookup_creator`, must conform to the pattern `/\\d{4}-\\d{4}-\\d{4}-\\d{4}/`") # noqa: E501
+ if 'orcid' in params and not re.search('\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]', params['orcid']): # noqa: E501
+ raise ValueError("Invalid value for parameter `orcid` when calling `lookup_creator`, must conform to the pattern `/\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]/`") # noqa: E501
collection_formats = {}
path_params = {}
diff --git a/python/fatcat_client/models/creator_entity.py b/python/fatcat_client/models/creator_entity.py
index a9e459ee..de096281 100644
--- a/python/fatcat_client/models/creator_entity.py
+++ b/python/fatcat_client/models/creator_entity.py
@@ -139,8 +139,8 @@ class CreatorEntity(object):
raise ValueError("Invalid value for `orcid`, length must be less than or equal to `19`") # noqa: E501
if orcid is not None and len(orcid) < 19:
raise ValueError("Invalid value for `orcid`, length must be greater than or equal to `19`") # noqa: E501
- if orcid is not None and not re.search('\\d{4}-\\d{4}-\\d{4}-\\d{4}', orcid): # noqa: E501
- raise ValueError("Invalid value for `orcid`, must be a follow pattern or equal to `/\\d{4}-\\d{4}-\\d{4}-\\d{4}/`") # noqa: E501
+ if orcid is not None and not re.search('\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]', orcid): # noqa: E501
+ raise ValueError("Invalid value for `orcid`, must be a follow pattern or equal to `/\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]/`") # noqa: E501
self._orcid = orcid
diff --git a/rust/fatcat-api/README.md b/rust/fatcat-api/README.md
index af4e6a5b..1e382370 100644
--- a/rust/fatcat-api/README.md
+++ b/rust/fatcat-api/README.md
@@ -13,7 +13,7 @@ To see how to make this your own, look here:
[README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md)
- API version: 0.1.0
-- Build date: 2018-08-15T00:04:03.771Z
+- Build date: 2018-08-16T16:42:27.600Z
This autogenerated project defines an API crate `fatcat` which contains:
* An `Api` trait defining the API in Rust.
diff --git a/rust/fatcat-api/api.yaml b/rust/fatcat-api/api.yaml
index 7ec91bad..524333ce 100644
--- a/rust/fatcat-api/api.yaml
+++ b/rust/fatcat-api/api.yaml
@@ -37,7 +37,7 @@ x-issn: &FATCATISSN
x-orcid: &FATCATORCID
type: string
example: "0000-0002-1825-0097"
- pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{4}"
+ pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]"
minLength: 19
maxLength: 19
diff --git a/rust/fatcat-api/api/swagger.yaml b/rust/fatcat-api/api/swagger.yaml
index c572fd29..021594c0 100644
--- a/rust/fatcat-api/api/swagger.yaml
+++ b/rust/fatcat-api/api/swagger.yaml
@@ -612,7 +612,7 @@ paths:
type: "string"
maxLength: 19
minLength: 19
- pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{4}"
+ pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]"
formatString: "\\\"{}\\\""
example: "\"orcid_example\".to_string()"
responses:
@@ -2061,7 +2061,7 @@ definitions:
example: "0000-0002-1825-0097"
minLength: 19
maxLength: 19
- pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{4}"
+ pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]"
surname:
type: "string"
given_name:
@@ -3180,7 +3180,7 @@ x-issn:
x-orcid:
type: "string"
example: "0000-0002-1825-0097"
- pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{4}"
+ pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]"
minLength: 19
maxLength: 19
x-entity-props:
diff --git a/rust/src/api_helpers.rs b/rust/src/api_helpers.rs
index 489631b3..020aad76 100644
--- a/rust/src/api_helpers.rs
+++ b/rust/src/api_helpers.rs
@@ -181,7 +181,7 @@ pub fn check_issn(raw: &str) -> Result<()> {
pub fn check_orcid(raw: &str) -> Result<()> {
lazy_static! {
- static ref RE: Regex = Regex::new(r"^\d{4}-\d{4}-\d{4}-\d{4}$").unwrap();
+ static ref RE: Regex = Regex::new(r"^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$").unwrap();
}
if RE.is_match(raw) {
Ok(())
@@ -193,6 +193,14 @@ pub fn check_orcid(raw: &str) -> Result<()> {
}
}
+#[test]
+fn test_check_orcid() {
+ assert!(check_orcid("0123-4567-3456-6789").is_ok());
+ assert!(check_orcid("0123-4567-3456-678X").is_ok());
+ assert!(check_orcid("01234567-3456-6780").is_err());
+ assert!(check_orcid("0x23-4567-3456-6780").is_err());
+}
+
// TODO: make the above checks "more correct"
// TODO: check ISBN-13
// TODO: check hashes (SHA-1, etc)