{"id":18973340,"url":"https://github.com/cyangle/google_cloud_storage","last_synced_at":"2025-08-13T17:18:05.039Z","repository":{"id":119846628,"uuid":"433638433","full_name":"cyangle/google_cloud_storage","owner":"cyangle","description":"Google Cloud Storage v1 crystal lang client generated by OpenAPI Generator","archived":false,"fork":false,"pushed_at":"2024-09-07T20:31:43.000Z","size":509,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-01T08:41:43.688Z","etag":null,"topics":["crystal","crystal-lang","google-cloud-storage","openapi-generator"],"latest_commit_sha":null,"homepage":"","language":"Crystal","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/cyangle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2021-12-01T01:05:25.000Z","updated_at":"2024-09-07T20:31:47.000Z","dependencies_parsed_at":"2024-11-08T15:11:52.721Z","dependency_job_id":null,"html_url":"https://github.com/cyangle/google_cloud_storage","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyangle%2Fgoogle_cloud_storage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyangle%2Fgoogle_cloud_storage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyangle%2Fgoogle_cloud_storage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyangle%2Fgoogle_cloud_storage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cyangle","download_url":"https://codeload.github.com/cyangle/google_cloud_storage/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239970678,"owners_count":19727014,"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":["crystal","crystal-lang","google-cloud-storage","openapi-generator"],"created_at":"2024-11-08T15:11:47.077Z","updated_at":"2025-02-21T07:15:36.054Z","avatar_url":"https://github.com/cyangle.png","language":"Crystal","funding_links":[],"categories":[],"sub_categories":[],"readme":"# google_cloud_storage\n\nThe Crystal module for the Cloud Storage JSON API\n\nStores and retrieves potentially large, immutable data objects.\n\nThis SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project with CUSTOM templates:\n\n- API version: v1\n- Package version: 0.5.1\n- Build package: org.openapitools.codegen.languages.CrystalClientCodegen\n- Custom templates: [crystal_client_generator](https://github.com/cyangle/crystal_client_generator)\n\nFor more information, please visit [https://google.com](https://google.com)\n\n## Installation\n\n### Install from Git\n\nAdd the following to shard.yaml\n\n```yaml\ndependencies:\n  google_cloud_storage:\n    github: cyangle/google_cloud_storage\n    version: ~\u003e 0.5.1\n```\n\n## Usage\n\nCheck [here](https://cloud.google.com/storage/docs/json_api) for more information about how to use google cloud storage v1 json APIs.\n\nBelow only lists API usages that are covered by tests. Please report broken APIs by creating github issues.\n\nThe client should support all APIs provided by google cloud storage v1 json APIs as it's generated from the OpenAPI v3 specification `./google_cloud_storage_v1.yml`.\n\n### Require this shard in your project\n\nFirst you need to require it.\n\n```crystal\nrequire \"google_cloud_storage\"\n\n# Or Require specific apis\nrequire \"google_cloud_storage/api/buckets_api\"\nrequire \"google_cloud_storage/api/objects_api\"\n```\n\n### Get OAuth2 access token\n\nYou can get google cloud OAuth2 access token with service account credentials in a json file with shard [google-auth](https://github.com/cyangle/google-auth).\n\nCheck [here](https://cloud.google.com/iam/docs/creating-managing-service-accounts) for how to create a service account.\n\n### Configure client with google OAuth2 access token\n\n```crystal\nGoogleDrive.configure do |config|\n  config.access_token = \"Google OAuth2 Access Token\"\nend\n```\n\n### BucketsApi\n\n```crystal\nbuckets_api = GoogleCloudStorage::BucketsApi.new\n```\n\n#### List buckets from a project\n\n```crystal\nbuckets : GoogleCloudStorage::Buckets = buckets_api.list(project: \"google-cloud-project-id\")\n```\n\n#### Get bucket metadata\n\n```crystal\nbucket : GoogleCloudStorage::Bucket = buckets_api.get(bucket: \"my_bucket\")\npp bucket\n```\n\n#### Create a new bucket\n\n```crystal\nbucket = GoogleCloudStorage::Bucket.new(name: \"unique_bucket_name\")\nresult_bucket : GoogleCloudStorage::Bucket = buckets_api.insert(project: \"google-cloud-project-id\", bucket: bucket)\npp result_bucket\n```\n\n#### Delete empty bucket from a project\n\n```crystal\nbuckets_api.delete(bucket: \"empty-bucket-name\")\n```\n\n### ObjectsApi\n\n```crystal\nobjects_api = GoogleCloudStorage::ObjectsApi.new\n```\n\n#### List objects from bucket\n\n```crystal\nobjects : GoogleCloudStorage::Objects = objects_api.list(bucket: \"my_bucket\", prefix: \"crystal\", delimiter: \"/\")\n```\n\n#### Get object metadata\n\n```crystal\nobject : GoogleCloudStorage::Object = objects_api.get(bucket: \"my_bucket\", object: \"test.json\")\n```\n\n#### Download object from bucket\n\n```crystal\nresponse = objects_api.build_api_request_for_get(bucket: \"my_bucket\", object: \"test.json\", alt: \"media\").execute\nFile.write(\"./test.json\", response.body)\n```\n\nOr stream download\n\n```crystal\nobjects_api.get(bucket: \"my_bucket\", object: \"test.json\", alt: \"media\") do |response|\n  File.open(\"./test.json\", \"w\") do |file|\n    IO.copy(response.body_io, file)\n  end\nend\n```\n\n#### Upload file to bucket\n\n##### Simple upload\n\nUpload file content as String\n\n```crystal\nfile_content = File.read(\"./test.json\")\nobject : GoogleCloudStorage::Object = objects_api.insert(bucket: \"my_bucket\", name: \"test.json\", upload_type: \"media\", body: file_content)\npp object\n```\n\nOr stream upload\n\n```crystal\nFile.open(\"./test.json\") do |file|\n  object : GoogleCloudStorage::Object = objects_api.insert(bucket: \"my_bucket\", name: \"test.json\", upload_type: \"media\", body: file)\n  pp object\nend\n```\n\n#### Delete object from bucket\n\n```crystal\nobjects_api.delete(bucket: \"my_bucket\", object: \"test.json\")\n```\n\n## Development\n\nInstall dependencies\n\n```shell\nshards\n```\n\nRun the tests:\n\n```shell\ncrystal spec\n```\n\nRun lints\n\n```shell\n./bin/ameba\ncrystal tool format --check\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyangle%2Fgoogle_cloud_storage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyangle%2Fgoogle_cloud_storage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyangle%2Fgoogle_cloud_storage/lists"}