You need to sign in to do that
Don't have an account?
dke01
Amzon S3 getObject
I have been using Force for AWS (http://wiki.developerforce.com/index.php/Installing_Force_for_Amazon_Web_Services)
But it seems most of the methods are not fully finished. Has any one completed the sections in S3.cls that are commented out. Inparticular getObject?
If you have it would be greatly appreciated if you could post your soultion.
Guess no one else is using AWS, so I updates the APEX for S3 class myself It was very easy in the end. Here is what I did.
In GetObject comment out the request_x.Credential line
public S3.GetObjectResult GetObject(String Bucket,String Key,Boolean GetMetadata,Boolean GetData ,Boolean InlineData ,String AWSAccessKeyId, DateTime Timestamp, String Signature) { S3.GetObject_element request_x = new S3.GetObject_element(); S3.GetObjectResponse_element response_x; request_x.Bucket = Bucket; request_x.Key = Key; request_x.GetMetadata = GetMetadata; request_x.GetData = GetData; request_x.InlineData = InlineData; request_x.AWSAccessKeyId = AWSAccessKeyId; request_x.Timestamp = Timestamp; request_x.Signature = Signature; // request_x.Credential = Credential;
Map<String, S3.GetObjectResponse_element> response_map_x = new Map<String, S3.GetObjectResponse_element>(); response_map_x.put('response_x', response_x); System.debug(request_x); WebServiceCallout.invoke( this, request_x, response_map_x, new String[]{endpoint_x, '', 'http://s3.amazonaws.com/doc/2006-03-01/', 'GetObject', 'http://s3.amazonaws.com/doc/2006-03-01/', 'GetObjectResponse', 'S3.GetObjectResponse_element'} ); response_x = response_map_x.get('response_x'); return response_x.GetObjectResponse; }
Chage GetObjectResult orginal code to also get status and field_order
public class GetObjectResult { public S3.MetadataEntry[] Metadata; public String Data; public DateTime LastModified; public String ETag; public Status Status; private String[] Status_type_info = new String[]{'Status','http://s3.amazonaws.com/doc/2006-03-01/','Status','1','1','false'}; private String[] Metadata_type_info = new String[]{'Metadata','http://s3.amazonaws.com/doc/2006-03-01/','MetadataEntry','0','-1','false'}; private String[] Data_type_info = new String[]{'Data','http://www.w3.org/2001/XMLSchema','base64Binary','1','1','true'}; private String[] LastModified_type_info = new String[]{'LastModified','http://www.w3.org/2001/XMLSchema','dateTime','1','1','false'}; private String[] ETag_type_info = new String[]{'ETag','http://www.w3.org/2001/XMLSchema','string','1','1','false'}; private String[] apex_schema_type_info = new String[]{'http://s3.amazonaws.com/doc/2006-03-01/','true'}; private String[] field_order_type_info = new String[]{'Status','Metadata','Data','LastModified','ETag'}; }
Uncomment GetObjectResponse_element class
public class GetObjectResponse_element { public S3.GetObjectResult GetObjectResponse; private String[] GetObjectResponse_type_info = new String[]{'GetObjectResponse','http://s3.amazonaws.com/doc/2006-03-01/','GetObjectResult','1','1','false'}; private String[] apex_schema_type_info = new String[]{'http://s3.amazonaws.com/doc/2006-03-01/','true'}; private String[] field_order_type_info = new String[]{'GetObjectResponse'}; }
Un comment the Status class
public class Status { public Integer Code {get;set;} public String Description {get;set;} private String[] Code_type_info = new String[]{'Code','http://www.w3.org/2001/XMLSchema','int','1','1','false'}; private String[] Description_type_info = new String[]{'Description','http://www.w3.org/2001/XMLSchema','string','1','1','false'}; private String[] apex_schema_type_info = new String[]{'http://s3.amazonaws.com/doc/2006-03-01/','true'}; private String[] field_order_type_info = new String[]{'Code','Description'}; }
All Answers
Guess no one else is using AWS, so I updates the APEX for S3 class myself It was very easy in the end. Here is what I did.
In GetObject comment out the request_x.Credential line
public S3.GetObjectResult GetObject(String Bucket,String Key,Boolean GetMetadata,Boolean GetData ,Boolean InlineData ,String AWSAccessKeyId, DateTime Timestamp, String Signature) { S3.GetObject_element request_x = new S3.GetObject_element(); S3.GetObjectResponse_element response_x; request_x.Bucket = Bucket; request_x.Key = Key; request_x.GetMetadata = GetMetadata; request_x.GetData = GetData; request_x.InlineData = InlineData; request_x.AWSAccessKeyId = AWSAccessKeyId; request_x.Timestamp = Timestamp; request_x.Signature = Signature; // request_x.Credential = Credential;
Map<String, S3.GetObjectResponse_element> response_map_x = new Map<String, S3.GetObjectResponse_element>(); response_map_x.put('response_x', response_x); System.debug(request_x); WebServiceCallout.invoke( this, request_x, response_map_x, new String[]{endpoint_x, '', 'http://s3.amazonaws.com/doc/2006-03-01/', 'GetObject', 'http://s3.amazonaws.com/doc/2006-03-01/', 'GetObjectResponse', 'S3.GetObjectResponse_element'} ); response_x = response_map_x.get('response_x'); return response_x.GetObjectResponse; }
Chage GetObjectResult orginal code to also get status and field_order
public class GetObjectResult { public S3.MetadataEntry[] Metadata; public String Data; public DateTime LastModified; public String ETag; public Status Status; private String[] Status_type_info = new String[]{'Status','http://s3.amazonaws.com/doc/2006-03-01/','Status','1','1','false'}; private String[] Metadata_type_info = new String[]{'Metadata','http://s3.amazonaws.com/doc/2006-03-01/','MetadataEntry','0','-1','false'}; private String[] Data_type_info = new String[]{'Data','http://www.w3.org/2001/XMLSchema','base64Binary','1','1','true'}; private String[] LastModified_type_info = new String[]{'LastModified','http://www.w3.org/2001/XMLSchema','dateTime','1','1','false'}; private String[] ETag_type_info = new String[]{'ETag','http://www.w3.org/2001/XMLSchema','string','1','1','false'}; private String[] apex_schema_type_info = new String[]{'http://s3.amazonaws.com/doc/2006-03-01/','true'}; private String[] field_order_type_info = new String[]{'Status','Metadata','Data','LastModified','ETag'}; }
Uncomment GetObjectResponse_element class
public class GetObjectResponse_element { public S3.GetObjectResult GetObjectResponse; private String[] GetObjectResponse_type_info = new String[]{'GetObjectResponse','http://s3.amazonaws.com/doc/2006-03-01/','GetObjectResult','1','1','false'}; private String[] apex_schema_type_info = new String[]{'http://s3.amazonaws.com/doc/2006-03-01/','true'}; private String[] field_order_type_info = new String[]{'GetObjectResponse'}; }
Un comment the Status class
public class Status { public Integer Code {get;set;} public String Description {get;set;} private String[] Code_type_info = new String[]{'Code','http://www.w3.org/2001/XMLSchema','int','1','1','false'}; private String[] Description_type_info = new String[]{'Description','http://www.w3.org/2001/XMLSchema','string','1','1','false'}; private String[] apex_schema_type_info = new String[]{'http://s3.amazonaws.com/doc/2006-03-01/','true'}; private String[] field_order_type_info = new String[]{'Code','Description'}; }
I'm using this toolkit now, as well. Are you using the GetObject method for retrieving a file out of an S3 bucket? This is what I'd like to do, but I'm not sure if this is the correct way of going about it.
Hi dke01 and jg@hhs,
i'm new with this toolkit and i would know if with it is possible download and save on pc the file stored on S3.
Now i'am able to upload file from my web app write in Apex and Visualforce but i don't know if is possible download the file that i have saved on S3.