{"id":22254052,"url":"https://github.com/teddy-van-jerry/doi-rs","last_synced_at":"2026-02-13T23:33:27.673Z","repository":{"id":254550057,"uuid":"846895505","full_name":"Teddy-van-Jerry/doi-rs","owner":"Teddy-van-Jerry","description":"Digital Object Identifier (DOI) resolver for Rust","archived":false,"fork":false,"pushed_at":"2024-09-08T21:52:34.000Z","size":57,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-28T05:51:14.393Z","etag":null,"topics":["doi","resolver","rust"],"latest_commit_sha":null,"homepage":"https://docs.rs/doi","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Teddy-van-Jerry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-24T08:55:03.000Z","updated_at":"2024-09-08T21:52:37.000Z","dependencies_parsed_at":"2024-09-08T22:39:18.662Z","dependency_job_id":"dfa90286-b7f6-4a12-831e-ee5a98370407","html_url":"https://github.com/Teddy-van-Jerry/doi-rs","commit_stats":null,"previous_names":["teddy-van-jerry/doi-rs"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Teddy-van-Jerry/doi-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Teddy-van-Jerry%2Fdoi-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Teddy-van-Jerry%2Fdoi-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Teddy-van-Jerry%2Fdoi-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Teddy-van-Jerry%2Fdoi-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Teddy-van-Jerry","download_url":"https://codeload.github.com/Teddy-van-Jerry/doi-rs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Teddy-van-Jerry%2Fdoi-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272971405,"owners_count":25024093,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["doi","resolver","rust"],"created_at":"2024-12-03T07:21:56.333Z","updated_at":"2025-09-25T16:42:41.882Z","avatar_url":"https://github.com/Teddy-van-Jerry.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DOI for Rust\nDigital Object Identifier (DOI) resolver for Rust\n\nThis crate provides a simple way to resolve DOIs and retrieve metadata\nusing the [DOI](https://www.doi.org) APIs.\n\n## Basic Usage\nThe following is a basic example of using this library:\n```rust\nuse doi::Doi;\nlet doi = Doi::new(\"10.1109/TCSII.2024.3366282\");\nmatch doi.resolve() {\n    Ok(resolved) =\u003e println!(\"Resolved Link: {}\", resolved),\n    Err(e) =\u003e eprintln!(\"Error: {}\", e),\n}\n```\nPlease refer to the API documentation for more information.\nMore complicated constructions can be done using the `DoiBuilder` struct.\n\n## Metadata\nThis library also provides a way to retrieve metadata for a DOI.\nThe `metadata` feature is required to use this functionality (enabled by default).\n\n### Structured Metadata\nThe structured metadata can be retrieved using the `metadata` method.\n```rust\nuse doi::Doi;\nlet doi = Doi::new(\"10.1109/TCSII.2024.3366282\");\nmatch doi.metadata() {\n    Ok(metadata) =\u003e println!(\"Paper Title: {}\", metadata.title.unwrap_or(\"\u003cunknown\u003e\".to_string())),\n    Err(e) =\u003e eprintln!(\"Error: {}\", e),\n}\n```\n\nSupported metadata fields:\n| Field | Type | Description |\n| --- | --- | --- |\n| `title` | `Option\u003cString\u003e` | Title of the document |\n| `authors` | `Option\u003cVec\u003cDoiMetadataPerson\u003e\u003e` | Author(s) of the document |\n| `r#type` | `Option\u003cDoiMetadataType\u003e` | Type of the document (e.g., journal, conference) |\n\nThe `DoiMetadataPerson` struct has the fields `given`, `family`, and `suffix`, which are all `Option\u003cString\u003e`.\nThe `DoiMetadataType` enum has the `as_str` method to get the string representation.\n\n### Raw JSON Metadata\nThe raw JSON metadata can be retrieved using the `metadata_json` method,\npowered by `serde_json`.\n```rust\nuse doi::Doi;\nlet doi = Doi::new(\"10.1109/TCSII.2024.3366282\");\nmatch doi.metadata_json() {\n    Ok(metadata) =\u003e println!(\"Metadata: {}\", metadata),\n    Err(e) =\u003e eprintln!(\"Error: {}\", e),\n}\n```\n\nThe raw JSON string can be obtained via the `metadata_json_string` method.\n\n## Blocking Requests\nThis library is designed to use blocking I/O,\ndepending on the [`ureq` library](https://docs.rs/ureq) for HTTP requests.\n\n## License\nThis project is licensed under the [MIT license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteddy-van-jerry%2Fdoi-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteddy-van-jerry%2Fdoi-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteddy-van-jerry%2Fdoi-rs/lists"}