Category talk:Apex User: Difference between revisions
Content added Content deleted
No edit summary |
(Blanked the page) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
<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> |