Ejemplo de código C# usando el API compatible con DreamObjects S3

Este artículo enlista muchos códigos de C# para interactuar con DreamObjects.

 

Crear una Conexión

Crea una conexión para que puedas interactuar con el servidor.

using System;
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;

string accessKey = "put your access key here!";
string secretKey = "put your secret key here!";

AmazonS3Config config = new AmazonS3Config();
config.ServiceURL = "objects-us-east-1.dream.io";

AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(
        accessKey,
        secretKey,
        config
        );
 

Enlistar Buckets Propios

Obtiene una lista de Buckets que posees. Esto también imprime el nombre del Bucket y la fecha de creación de cada uno.

ListBucketResponse response = client.ListBuckets();
foreach (S3Bucket b in response.Buckets)
{
        Console.WriteLine("{0}\t{1}", b.BucketName, b.CreationDate);
}

La salida se verá más o menos así

mahbuckat1   2011-04-21T18:05:39.000Z
mahbuckat2   2011-04-21T18:05:48.000Z
mahbuckat3   2011-04-21T18:07:18.000Z
 

Crear un Bucket

Crea un nuevo Bucket llamado my-new-bucket.

PutBucketRequest request = new PutBucketRequest();
request.BucketName = "my-new-bucket";
client.PutBucket(request);
 

Enlistar Contenido de un Bucket

Obtiene una lista de los objetos en el bucket. Esto también imprime el nombre del object, el tamaño del archivo, y la última fecha de modificación.

ListObjectsRequest request = new ListObjectsRequest();
request.BucketName = "my-new-bucket";
ListObjectsResponse response = client.ListObjects(request);
foreach (S3Object o in response.S3Objects)
{
        Console.WriteLine("{0}\t{1}\t{2}", o.Key, o.Size, o.LastModified);
}

La salida se vería más o menos así:

myphoto1.jpg 251262  2011-08-08T21:35:48.000Z
myphoto2.jpg 262518  2011-08-08T21:38:01.000Z
 

Eliminar un Bucket

El bucket debe estar vacío, si no, no funcionará.

DeleteBucketRequest request = new DeleteBucketRequest();
request.BucketName = "my-new-bucket";
client.DeleteBucket(request);
 

Forzar Eliminación para Buckets No vacíos

no disponible

 

Crear un Object

Crea un archivo hello.txt con la cadena "Hello World!"

PutObjectRequest request = new PutObjectRequest();
request.Bucket      = "my-new-bucket";
request.Key         = "hello.txt";
request.ContentType = "text/plain";
request.ContentBody = "Hello World!";
client.PutObject(request);
 

Cambiar el ACL de un Object

Hace al object hello.txt legíble para el público y secret_plans.txt que sea privado.

SetACLRequest request = new SetACLRequest();
request.BucketName = "my-new-bucket";
request.Key        = "hello.txt";
request.CannedACL  = S3CannedACL.PublicRead;
client.SetACL(request);

SetACLRequest request2 = new SetACLRequest();
request2.BucketName = "my-new-bucket";
request2.Key        = "secret_plans.txt";
request2.CannedACL  = S3CannedACL.Private;
client.SetACL(request2);
 

Descargar un Object (a un archivo)

Descarga el object perl_poetry.pdf y lo guarda en C:\Users\larry\Documents.

GetObjectRequest request = new GetObjectRequest();
request.BucketName = "my-new-bucket";
request.Key        = "perl_poetry.pdf"
GetObjectResponse response = client.GetObject(request);
response.WriteResponseStreamToFile("C:\\Users\\larry\\Documents\\perl_poetry.pdf");
 

Eliminar un Object

Elimina el object goodbye.txt.

DeleteObjectRequest request = new DeleteObjectRequest();
request.BucketName = "my-new-bucket";
request.Key        = "goodbye.txt";
client.DeleteObject(request);
 

Generar URL de Descarga de un Object (firmado y sin firmar)

Esto genera una URL de descarga sin firmar para hello.txt. Esto funciona por que hello.txt fue hecho público por la confuguración de ACL de arriba. Esto entonces genera una URL de descarga firmada para secret_plans.txt que funcionará por 1 hora. URL de descarga funcionarán por el periodo de tiempo aún si el object es privado (cuando el periodo se acaba, la URL dejará de funcionar).

La biblioteca C# S3 no tiene un método para generar URL sin firmar, por lo que el siguiente ejemplo solo muestra la generación de URL firmadas.

GetPreSignedUrlRequest request = new GetPreSignedUrlRequest();
request.BucketName = "my-bucket-name";
request.Key        = "secret_plans.txt";
request.Expires    = DateTime.Now.AddHours(1);
request.Protocol   = Protocol.HTTP;
string url = client.GetPreSignedURL(request);
Console.WriteLine(url);

La salida de esto se verá más o menos así:

https://objects-us-east-1.dream.io/my-bucket-name/secret_plans.txt?Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXX&Expires=1316027075&AWSAccessKeyId=XXXXXXXXXXXXXXXXXXX
 

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?