Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Overall;
- use Aws\S3\S3Client;
- use Respect\Validation\Validator as v;
- use Overall\Interfaces\apiProvider;
- class s3Scan{
- protected $s3;
- protected $apiProvider;
- public function __construct($s3Client,apiProvider $apiProvider){
- $this->s3 = $s3Client;
- $this->apiProvider = $apiProvider;
- }
- public function moveObject($bucket, $key, $source){
- $this->s3->copyObject([
- 'Bucket' => $bucket,
- 'Key' => $key,
- 'CopySource' => "{$bucket}/{$source}",
- ]);
- $this->s3->deleteObject(['Bucket' => $bucket,'Key' => $source]);
- }
- public function getBucketFiles($bucket){
- $iterator = $this->s3->getIterator('ListObjects', ['Bucket' => $bucket]);
- foreach ($iterator as $object) {
- $files[] = $object['Key'];
- }
- return $files;
- }
- public function scanBucket($bucket){
- $files = $this->getBucketFiles($bucket);
- foreach ($files as $file) {
- $isPending = v::contains('/pendientes/')->validate($file);
- if($isPending){
- $this->sendData($bucket, $file);
- }
- }
- }
- public function sendData($bucket, $file){
- $bucketObject = $this->s3->getObject(['Bucket' => $bucket,'Key'=> $file]);
- $data = json_decode($bucketObject['Body']);
- $response = $this->apiProvider->request($data);
- if( !isset($response->errors) ){
- $key = str_replace('/pendientes/','/enviados/',$file);
- $this->moveObject($bucket, $key, $file);
- }else{
- $key = str_replace('/pendientes/','/errores/',$file);
- $this->moveObject($bucket, $key, $file);
- }
- return $response;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement