{"id":18477195,"url":"https://github.com/noxf/oss-rust-sdk","last_synced_at":"2025-04-06T06:14:03.146Z","repository":{"id":37692355,"uuid":"160507087","full_name":"NoXF/oss-rust-sdk","owner":"NoXF","description":"Aliyun OSS SDK for Rust","archived":false,"fork":false,"pushed_at":"2023-08-28T07:58:19.000Z","size":107,"stargazers_count":93,"open_issues_count":0,"forks_count":29,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-06T06:13:59.217Z","etag":null,"topics":["aliyun-oss","oss","rust","sdk"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NoXF.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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":"2018-12-05T11:18:53.000Z","updated_at":"2025-03-09T11:55:12.000Z","dependencies_parsed_at":"2024-12-30T09:11:24.624Z","dependency_job_id":"d18ef336-dcdb-454e-a17a-a7b47bc6d672","html_url":"https://github.com/NoXF/oss-rust-sdk","commit_stats":{"total_commits":79,"total_committers":10,"mean_commits":7.9,"dds":"0.31645569620253167","last_synced_commit":"3315507cbb689bcbfc44116c1c84d3f129bdb02d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoXF%2Foss-rust-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoXF%2Foss-rust-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoXF%2Foss-rust-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoXF%2Foss-rust-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NoXF","download_url":"https://codeload.github.com/NoXF/oss-rust-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247441063,"owners_count":20939239,"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","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":["aliyun-oss","oss","rust","sdk"],"created_at":"2024-11-06T11:04:27.371Z","updated_at":"2025-04-06T06:14:03.124Z","avatar_url":"https://github.com/NoXF.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OSS-Rust-SDK\n\n[![Latest Version](https://img.shields.io/crates/v/oss-rust-sdk.svg)](https://crates.io/crates/oss-rust-sdk)\n\nIt's an unofficial Rust port for https://github.com/aliyun/aliyun-oss-cpp-sdk, just implement core APIs of https://help.aliyun.com/document_detail/31977.html, everyone is welcome to submit a PR to implement which interface you need.\n\n# Getting Started\n\n## List your_Buckets\n```rust\nuse oss_rust_sdk::prelude::*;\nlet oss_instance = OSS::new(\"your_AccessKeyId\", \"your_AccessKeySecret\", \"your_Endpoint\", \"your_Bucket\");\nlet list_buckets = oss_instance.list_bucket(None).unwrap();\n\nlet id = list_buckets.id();\nlet your_Buckets = list_buckets.buckets();\nlet your_Bucket_names: Vec\u003c\u0026str\u003e = your_Buckets.iter().map(|obj| obj.name()).collect();\n```\n\n## Get Object\n```rust\nuse oss_rust_sdk::prelude::*;\nuse std::collections::HashMap;\n\nlet oss_instance = OSS::new(\"your_AccessKeyId\", \"your_AccessKeySecret\", \"your_Endpoint\", \"your_Bucket\");\n\n/// if have extra header\nlet mut extra_header = HashMap::new();\nextra_header.insert(\"content-type\", \"text/plain\");\n/// if have oss_sub_resource\nlet mut oss_sub_resource = HashMap::new();\noss_sub_resource.insert(\"acl\", None);\noss_sub_resource.insert(\"response-content-type\", Some(\"ContentType\"));\n\nlet result = oss_instance.get_object(\"object\", extar_header, oss_sub_resource);\n/// or you may just get object\n/// let result = oss_instance.get_object(\"object\", None, None);\nassert_eq!(result.is_ok(), true);\nlet buffer = result.unwrap();\n```\n\n## Get Object async\n```rust\nuse oss_rust_sdk::oss::OSS;\nuse oss_rust_sdk::async_object::*;\nuse tokio::runtime::Runtime;\n\nfn async_get_object_demo() {\n    let oss_instance = OSS::new(\"your_AccessKeyId\", \"your_AccessKeySecret\", \"your_Endpoint\", \"your_Bucket\");\n\n    let mut rt = Runtime::new().expect(\"failed to start runtime\");\n\n    rt.block_on(async move {\n        let _ = oss_instance.get_object(\"objectName\", None::\u003cHashMap\u003c\u0026str, \u0026str\u003e\u003e, None).await.unwrap();\n        println!(\"buffer = {:?}\", String::from_utf8(result.unwrap()));\n    });\n}\n\nor\n\nasync fn async_get_object_demo() -\u003e Reuslt\u003cString, Error\u003e {\n    let oss_instance = OSS::new(\"your_AccessKeyId\", \"your_AccessKeySecret\", \"your_Endpoint\", \"your_Bucket\");\n    let buf = oss_instance.async_get_object(\"objectName\", None, None).await?;\n    String::from_utf8(buf)?\n}\n```\n\n## Put Object by file\n```rust\nuse oss_rust_sdk::prelude::*;\nlet filename = \"filename\";\nlet oss_instance = OSS::new(\"your_AccessKeyId\", \"your_AccessKeySecret\", \"your_Endpoint\", \"your_Bucket\");\nlet result = oss_instance.put_object_from_file(filename, \"object\", None, None);\nassert_eq!(result.is_ok(), true)\n```\n\n## Put Ojbect by buffer\n```rust\nlet buffer = \"some thing you want put to oss\";\nlet oss_instance = OSS::new(\"your_AccessKeyId\", \"your_AccessKeySecret\", \"your_Endpoint\", \"your_Bucket\");\nlet result = oss_instance.put_object_from_buffer(buffer.as_bytes(), \"object\", None, None);\nassert_eq!(result.is_ok(), true)\n```\n\n## Pub Object Async\n```rust\nuse oss_rust_sdk::oss::OSS;\nuse oss_rust_sdk::async_object::*;\n\nlet buffer = \"test async put object from buffer\";\nlet oss_instance = OSS::new(\"your_AccessKeyId\", \"your_AccessKeySecret\", \"your_Endpoint\", \"your_Bucket\");\nlet mut headers = HashMap::new();\nheaders.insert(\"content-type\", \"text/plain\");\n\noss_instance.put_object(buffer.as_bytes(),\"your_object_name\", headers,None).await?;\n```\n\n## Copy Object\n```rust\nuse oss_rust_sdk::prelude::*;\nlet oss_instance = OSS::new(\"your_AccessKeyId\", \"your_AccessKeySecret\", \"your_Endpoint\", \"your_Bucket\");\nlet result = oss_instance.copy_object_from_object(\"src_object\", \"dest_object\", None, None);\nassert_eq!(result.is_ok(), true)\n```\n\n## Delete Ojbect\n```rust\nuse oss_rust_sdk::prelude::*;\nlet oss_instance = OSS::new(\"your_AccessKeyId\", \"your_AccessKeySecret\", \"your_Endpoint\", \"your_Bucket\");\nlet result = oss_instance.delete_object(\"object\");\nassert_eq!(result.is_ok(), true)\n```\n\nYou can use `oss_instance.set_bucket(\"your_Bucket\")` to change specific bucket after create the oss instance.\n\n## License\n\n- Apache License 2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoxf%2Foss-rust-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoxf%2Foss-rust-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoxf%2Foss-rust-sdk/lists"}