Jump to content
Main menu
Main menu
move to sidebar
hide
Social
Discord
Facebook
Twitter
Explore
Languages
Tasks
Random page
Rosetta Code
Search
Search
Create account
Log in
Personal tools
Dark mode
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Category talk:Apex User: Difference between revisions
Category
Discussion
English
Read
View source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
View source
View history
Refresh
General
What links here
Related changes
Special pages
Printable version
Permanent link
Page information
Get shortened URL
Help
From Rosetta Code
Content added
Content deleted
Inline
Revision as of 08:39, 26 May 2016
(
view source
)
rosettacode>Abdelhakim
No edit summary
← Older edit
Latest revision as of 08:44, 26 May 2016
(
view source
)
rosettacode>Abdelhakim
(Blanked the page)
Line 1:
{{omit from|Apex}}
<lang Apex>
public class amazon{
public amazon(){}
public void sendTXTToAmazon(Blob b,String docname,String bucket){
Datetime currentDate = DateTimeHelper.getGMTDate(Datetime.now());
/* Send to Amazon S3 */
HttpRequest req = new HttpRequest();
AWSAccess__c CS = AWSAccess__c.getOrgDefaults();
string amz_content_sha256 = EncodingUtil.convertToHex(Crypto.generateDigest('SHA-256', b));
/*Set HTTPRequest Method*/
req.setMethod('PUT');
/*Set HTTPRequest header properties*/
req.setHeader('content-type', 'text/plain;charset=utf-8');
req.setHeader('Content-Length',String.valueOf(b.size()));
req.setHeader('Host','s3-eu-central-1.amazonaws.com');
req.setHeader('Connection','keep-alive');
req.setEndpoint('https://s3-eu-central-1.amazonaws.com/'+bucket+'/'+docname);
req.setHeader('x-amz-content-sha256',amz_content_sha256);
req.setHeader('x-amz-storage-class','REDUCED_REDUNDANCY');
String todayformat = currentDate.format('yyyyMMdd');
req.setHeader('Date',currentDate.format('EEE, d MMM yyyy HH:mm:ss Z'));
req.setHeader('x-amz-date',currentDate.format('yyyyMMdd')+'T'+currentDate.format('HHmmss')+'Z');
String key = 'AWS4' +CS.secret__c;
Blob DateKey = Crypto.generateMac('hmacSHA256',Blob.valueOf(todayformat),Blob.valueOf(key));
Blob DateRegionKey = Crypto.generateMac('hmacSHA256',Blob.valueOf('eu-central-1'),DateKey);
Blob DateRegionServiceKey = Crypto.generateMac('hmacSHA256',Blob.valueOf('s3'),DateRegionKey);
Blob SigningKey = Crypto.generateMac('hmacSHA256',Blob.valueOf('aws4_request'),DateRegionServiceKey);
String canonical = 'PUT\n'+
'/'+bucket+'/'+docname+'\n\n'+
'date:' + currentDate.format('EEE, d MMM yyyy HH:mm:ss Z')+'\n'+
'host:s3-eu-central-1.amazonaws.com\n'+
'x-amz-content-sha256:'+amz_content_sha256+'\n'+
'x-amz-date:'+currentDate.format('yyyyMMdd')+'T'+currentDate.format('HHmmss')+'Z'+'\n'+
'x-amz-storage-class:REDUCED_REDUNDANCY\n\n'+
'date;host;x-amz-content-sha256;x-amz-date;x-amz-storage-class\n'
+amz_content_sha256;
Blob canonicalsign = Crypto.generateDigest('SHA-256', Blob.valueOf(canonical));
Blob StringToSign = Blob.valueOf('AWS4-HMAC-SHA256\n'+
currentDate.format('yyyyMMdd')+'T'+currentDate.format('HHmmss')+'Z'+'\n'+
currentDate.format('yyyyMMdd')+'/eu-central-1/s3/aws4_request\n'+
EncodingUtil.convertToHex(canonicalsign));
Blob bsig = Crypto.generateMac('hmacSHA256',StringToSign,SigningKey);
req.setHeader('Authorization', 'AWS4-HMAC-SHA256 Credential='+CS.Key__c+'/'+todayformat+'/eu-central-1/s3/aws4_request,SignedHeaders=date;host;x-amz-content-sha256;x-amz-date;x-amz-storage-class,Signature='+EncodingUtil.convertToHex(bsig));
String docBody = EncodingUtil.convertToHex(b);
/*Set the HTTPRequest body */
req.setBodyAsBlob(b);
Http http = new Http();
try {
HTTPResponse res = http.send(req);
System.debug(res.getBody());
//System.debug(res.toString());
System.debug('STATUS:'+res.getStatus());
System.debug('STATUS_CODE:'+res.getStatusCode());
} catch(System.CalloutException e) {
System.debug('erreur : '+e);
}
}
public void sendPDFToAmazon(Blob b,String docname,String bucket){
Datetime currentDate = DateTimeHelper.getGMTDate(Datetime.now());
/* Send to Amazon S3 */
HttpRequest req = new HttpRequest();
AWSAccess__c CS = AWSAccess__c.getOrgDefaults();
string amz_content_sha256 = EncodingUtil.convertToHex(Crypto.generateDigest('SHA-256', b));
/*Set HTTPRequest Method*/
req.setMethod('PUT');
/*Set HTTPRequest header properties*/
req.setHeader('content-type', 'application/pdf');
req.setHeader('Content-Length',String.valueOf(b.size()));
req.setHeader('Host','s3-eu-central-1.amazonaws.com');
req.setHeader('Connection','keep-alive');
req.setEndpoint('https://s3-eu-central-1.amazonaws.com/'+bucket+'/'+docname);
req.setHeader('x-amz-content-sha256',amz_content_sha256);
req.setHeader('x-amz-storage-class','REDUCED_REDUNDANCY');
String todayformat = currentDate.format('yyyyMMdd');
req.setHeader('Date',currentDate.format('EEE, d MMM yyyy HH:mm:ss Z'));
req.setHeader('x-amz-date',currentDate.format('yyyyMMdd')+'T'+currentDate.format('HHmmss')+'Z');
String key = 'AWS4' +CS.secret__c;
Blob DateKey = Crypto.generateMac('hmacSHA256',Blob.valueOf(todayformat),Blob.valueOf(key));
Blob DateRegionKey = Crypto.generateMac('hmacSHA256',Blob.valueOf('eu-central-1'),DateKey);
Blob DateRegionServiceKey = Crypto.generateMac('hmacSHA256',Blob.valueOf('s3'),DateRegionKey);
Blob SigningKey = Crypto.generateMac('hmacSHA256',Blob.valueOf('aws4_request'),DateRegionServiceKey);
String canonical = 'PUT\n'+
'/'+bucket+'/'+docname+'\n\n'+
'date:' + currentDate.format('EEE, d MMM yyyy HH:mm:ss Z')+'\n'+
'host:s3-eu-central-1.amazonaws.com\n'+
'x-amz-content-sha256:'+amz_content_sha256+'\n'+
'x-amz-date:'+currentDate.format('yyyyMMdd')+'T'+currentDate.format('HHmmss')+'Z'+'\n'+
'x-amz-storage-class:REDUCED_REDUNDANCY\n\n'+
'date;host;x-amz-content-sha256;x-amz-date;x-amz-storage-class\n'
+amz_content_sha256;
Blob canonicalsign = Crypto.generateDigest('SHA-256', Blob.valueOf(canonical));
Blob StringToSign = Blob.valueOf('AWS4-HMAC-SHA256\n'+
currentDate.format('yyyyMMdd')+'T'+currentDate.format('HHmmss')+'Z'+'\n'+
currentDate.format('yyyyMMdd')+'/eu-central-1/s3/aws4_request\n'+
EncodingUtil.convertToHex(canonicalsign));
Blob bsig = Crypto.generateMac('hmacSHA256',StringToSign,SigningKey);
req.setHeader('Authorization', 'AWS4-HMAC-SHA256 Credential='+CS.Key__c+'/'+todayformat+'/eu-central-1/s3/aws4_request,SignedHeaders=date;host;x-amz-content-sha256;x-amz-date;x-amz-storage-class,Signature='+EncodingUtil.convertToHex(bsig));
String docBody = EncodingUtil.convertToHex(b);
/*Set the HTTPRequest body */
req.setBodyAsBlob(b);
Http http = new Http();
try {
HTTPResponse res = http.send(req);
System.debug(res.getBody());
//System.debug(res.toString());
System.debug('STATUS:'+res.getStatus());
System.debug('STATUS_CODE:'+res.getStatusCode());
} catch(System.CalloutException e) {
System.debug('erreur : '+e);
MailingHelper.sendToAdminMail('Erreur SEND PDF Amazon : '+docname, e.getMessage());
}
}
public string GetObjectUrl(String docname,String bucket){
String url;
Datetime currentDate = DateTimeHelper.getGMTDate(Datetime.now());
string exipredFormat = '1600';
String todayformat = currentDate.format('yyyyMMdd');
AWSAccess__c CS = AWSAccess__c.getOrgDefaults();
String key = 'AWS4' +CS.secret__c;
Blob DateKey = Crypto.generateMac('hmacSHA256',Blob.valueOf(todayformat),Blob.valueOf(key));
Blob DateRegionKey = Crypto.generateMac('hmacSHA256',Blob.valueOf('eu-central-1'),DateKey);
Blob DateRegionServiceKey = Crypto.generateMac('hmacSHA256',Blob.valueOf('s3'),DateRegionKey);
Blob SigningKey = Crypto.generateMac('hmacSHA256',Blob.valueOf('aws4_request'),DateRegionServiceKey);
String canonical = 'GET\n'+
'/'+docname+'\n'+
'X-Amz-Algorithm=AWS4-HMAC-SHA256&'+
'X-Amz-Credential='+CS.Key__c+'%2F'+todayformat+'%2Feu-central-1%2Fs3%2Faws4_request&'+
'X-Amz-Date='+todayformat+'T'+currentDate.format('HHmmss')+'Z&'+
'X-Amz-Expires='+exipredFormat+'&X-Amz-SignedHeaders=host\n'+
'host:'+bucket+'.s3.amazonaws.com\n\n'+
'host\n'+
'UNSIGNED-PAYLOAD';
system.debug(canonical);
Blob canonicalsign = Crypto.generateDigest('SHA-256', Blob.valueOf(canonical));
Blob StringToSign = Blob.valueOf('AWS4-HMAC-SHA256\n'+
todayformat+'T'+currentDate.format('HHmmss')+'Z'+'\n'+
todayformat+'/eu-central-1/s3/aws4_request\n'+
EncodingUtil.convertToHex(canonicalsign));
system.debug(StringToSign);
Blob bsig = Crypto.generateMac('hmacSHA256',StringToSign,SigningKey);
url = 'https://'+bucket+'.s3.amazonaws.com/'+docname+'?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential='+CS.Key__c+'/'+todayformat+'/eu-central-1/s3/aws4_request&X-Amz-Date='+todayformat+'T'+currentDate.format('HHmmss')+'Z&X-Amz-Expires='+exipredFormat+'&X-Amz-SignedHeaders=host&X-Amz-Signature='+EncodingUtil.convertToHex(bsig);
return url;
}
}
</lang>
Latest revision as of 08:44, 26 May 2016
Cookies help us deliver our services. By using our services, you agree to our use of cookies.
More information
OK
Toggle limited content width