Advertisement
Guest User

Untitled

a guest
May 26th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Overall;
  4. use Aws\S3\S3Client;
  5. use Respect\Validation\Validator as v;
  6. use Overall\Interfaces\apiProvider;
  7.  
  8. class s3Scan{
  9. protected $s3;
  10. protected $apiProvider;
  11.  
  12. public function __construct($s3Client,apiProvider $apiProvider){
  13. $this->s3 = $s3Client;
  14. $this->apiProvider = $apiProvider;
  15. }
  16.  
  17. public function moveObject($bucket, $key, $source){
  18. $this->s3->copyObject([
  19. 'Bucket' => $bucket,
  20. 'Key' => $key,
  21. 'CopySource' => "{$bucket}/{$source}",
  22. ]);
  23. $this->s3->deleteObject(['Bucket' => $bucket,'Key' => $source]);
  24. }
  25.  
  26. public function getBucketFiles($bucket){
  27. $iterator = $this->s3->getIterator('ListObjects', ['Bucket' => $bucket]);
  28. foreach ($iterator as $object) {
  29. $files[] = $object['Key'];
  30. }
  31. return $files;
  32. }
  33.  
  34. public function scanBucket($bucket){
  35. $files = $this->getBucketFiles($bucket);
  36. foreach ($files as $file) {
  37. $isPending = v::contains('/pendientes/')->validate($file);
  38. if($isPending){
  39. $this->sendData($bucket, $file);
  40. }
  41. }
  42. }
  43.  
  44. public function sendData($bucket, $file){
  45. $bucketObject = $this->s3->getObject(['Bucket' => $bucket,'Key'=> $file]);
  46. $data = json_decode($bucketObject['Body']);
  47. $response = $this->apiProvider->request($data);
  48.  
  49. if( !isset($response->errors) ){
  50. $key = str_replace('/pendientes/','/enviados/',$file);
  51. $this->moveObject($bucket, $key, $file);
  52. }else{
  53. $key = str_replace('/pendientes/','/errores/',$file);
  54. $this->moveObject($bucket, $key, $file);
  55. }
  56.  
  57. return $response;
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement