diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2018-08-16 09:42:55 -0700 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-08-16 09:42:55 -0700 | 
| commit | b83347388d17dfd58c9f3d123d3d96d050ca6e9b (patch) | |
| tree | b07cfd936e1e405e88e5003fcf022e778161dd5c | |
| parent | 68e847aadc728d63057be5b8d547c851b02a0008 (diff) | |
| download | fatcat-b83347388d17dfd58c9f3d123d3d96d050ca6e9b.tar.gz fatcat-b83347388d17dfd58c9f3d123d3d96d050ca6e9b.zip | |
ORCIDs can end in X character
| -rw-r--r-- | fatcat-openapi2.yml | 2 | ||||
| -rw-r--r-- | python/fatcat_client/api/default_api.py | 4 | ||||
| -rw-r--r-- | python/fatcat_client/models/creator_entity.py | 4 | ||||
| -rw-r--r-- | rust/fatcat-api/README.md | 2 | ||||
| -rw-r--r-- | rust/fatcat-api/api.yaml | 2 | ||||
| -rw-r--r-- | rust/fatcat-api/api/swagger.yaml | 6 | ||||
| -rw-r--r-- | rust/src/api_helpers.rs | 10 | 
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) | 
