コード例 #1
0
        public async Task <OperationResult> SetReadPolicy(string key, ReadAccess access)
        {
            try
            {
                Bucket bucket = await _client.GetBucketAsync(key);

                PredefinedBucketAcl bacl = access == ReadAccess.Public
                    ? PredefinedBucketAcl.PublicRead
                    : PredefinedBucketAcl.Private;
                PredefinedObjectAcl oacl = access == ReadAccess.Public
                    ? PredefinedObjectAcl.PublicRead
                    : PredefinedObjectAcl.Private;
                _client.UpdateBucket(bucket, new UpdateBucketOptions()
                {
                    PredefinedAcl = bacl,
                    PredefinedDefaultObjectAcl = oacl
                });
                var buckets = _client.ListObjects(key).ReadPage(Int32.MaxValue / 2);
                IEnumerable <Task> tasks = buckets.Select(s =>
                                                          _client.UpdateObjectAsync(s, new UpdateObjectOptions()
                {
                    PredefinedAcl = oacl
                }));
                await Task.WhenAll(tasks);

                return(new OperationResult(true, "", HttpStatusCode.OK));
            }
            catch (GoogleApiException e)
            {
                return(new OperationResult(false, e.Message, (HttpStatusCode)e.Error.Code));
            }
        }
コード例 #2
0
        public override async Task <string> SaveAsync(FileSetOptions fileSetOptions)
        {
            GoogleCredential credential = await AuthorizedAsync(fileSetOptions);

            StorageClient storageClinet = await StorageClient.CreateAsync(credential);

            PredefinedObjectAcl predefinedObjectAcl = PredefinedObjectAcl.ProjectPrivate;
            PredefinedBucketAcl predefinedBucketAcl = PredefinedBucketAcl.ProjectPrivate;

            switch (fileSetOptions.FileAccess)
            {
            case FileAccessLevel._private:
                predefinedObjectAcl = PredefinedObjectAcl.AuthenticatedRead;
                predefinedBucketAcl = PredefinedBucketAcl.AuthenticatedRead;
                break;

            case FileAccessLevel._public:
                predefinedObjectAcl = PredefinedObjectAcl.PublicRead;
                predefinedBucketAcl = PredefinedBucketAcl.PublicRead;
                break;
            }


            if (fileSetOptions.folderOptions == FolderOptions.CreateIfNull)
            {
                var folder = await storageClinet.GetBucketAsync(fileSetOptions.Folder);

                if (folder == null)
                {
                    await storageClinet.CreateBucketAsync(fileSetOptions.ProjectId, fileSetOptions.Folder, new CreateBucketOptions()
                    {
                        PredefinedAcl = predefinedBucketAcl, PredefinedDefaultObjectAcl = predefinedObjectAcl
                    });
                }
            }

            fileSetOptions._stream.Position = 0;

            await storageClinet.UploadObjectAsync(fileSetOptions.Folder, fileSetOptions.Key, fileSetOptions.ContentType, fileSetOptions._stream, new UploadObjectOptions()
            {
                PredefinedAcl = predefinedObjectAcl
            });

            return(fileSetOptions.Key);
        }