z39/types/
oid.rs

1//! Z39.50 / Bib1 Object Identifiers and Helpers
2
3/// https://oid-base.com/get/1.2.840.10003.5.10
4pub const OID_MARC21: [u32; 6] = [1, 2, 840, 10003, 5, 10];
5
6/// https://software.indexdata.com/yaz/doc/list-oids.html
7pub const OID_MARCXML: [u32; 7] = [1, 2, 840, 10003, 5, 109, 10];
8
9/// https://oid-base.com/get/1.2.840.10003.3.1
10pub const OID_ATTR_SET_BIB1: [u32; 6] = [1, 2, 840, 10003, 3, 1];
11
12/// Local type for rasn::prelude::ObjectIdentifier
13pub type ObjectIdentifier = rasn::prelude::ObjectIdentifier;
14
15/// Create a MARC21 ObjectIdentifier;
16pub fn for_marc21() -> ObjectIdentifier {
17    ObjectIdentifier::new(&OID_MARC21).unwrap()
18}
19
20/// Create a MARCXML ObjectIdentifier;
21pub fn for_marcxml() -> ObjectIdentifier {
22    ObjectIdentifier::new(&OID_MARCXML).unwrap()
23}
24
25/// Create a Bib1 Attribute Set ObjectIdentifier;
26pub fn for_bib1() -> ObjectIdentifier {
27    ObjectIdentifier::new(&OID_ATTR_SET_BIB1).unwrap()
28}
29
30/// True if the provided identifier is a MARC21 ObjectIdentifier.
31///
32/// # Reference
33///
34/// * <https://oid-base.com/get/1.2.840.10003.5.10>
35///
36/// ```
37/// use z39::types::oid;
38/// assert!(oid::is_marcxml_identifier(&oid::for_marcxml()));
39/// ```
40pub fn is_marc21_identifier(oid: &ObjectIdentifier) -> bool {
41    **oid == OID_MARC21
42}
43
44/// True if the provided identifier is a MARCXML ObjectIdentifier.
45///
46/// # Reference
47///
48/// * <https://software.indexdata.com/yaz/doc/list-oids.html>
49///
50/// ```
51/// use z39::types::oid;
52/// assert!(oid::is_marc21_identifier(&oid::for_marc21()));
53/// ```
54pub fn is_marcxml_identifier(oid: &ObjectIdentifier) -> bool {
55    **oid == OID_MARCXML
56}
57
58/// True if the provided identifier is a Bib1 Attribute Set
59/// ObjectIdentifier.
60///
61/// # Reference
62///
63/// * <https://oid-base.com/get/1.2.840.10003.3.1>
64///
65/// ```
66/// use z39::types::oid;
67/// assert!(oid::is_bib1_identifier(&oid::for_bib1()));
68/// ```
69pub fn is_bib1_identifier(oid: &ObjectIdentifier) -> bool {
70    **oid == OID_ATTR_SET_BIB1
71}