Merge branch 'master' of bitbucket.org:venbaittech/sparqapi

This commit is contained in:
VE10-Sanjeev 2022-04-04 10:26:01 +05:30
commit 81c8e2a797
3 changed files with 99 additions and 252 deletions

View File

@ -11,7 +11,8 @@ class Test extends REST_Controller {
$this->load->helper(array('form', 'url'));
//$this->load->model('test_model');
$this->load->library('asynclibrary');
$this->load->library('aws_rekonition');
$this->load->library('AWS_REKONITION');
$this->load->helper('MYUTIL');
}
@ -78,20 +79,69 @@ class Test extends REST_Controller {
public function compareFaces_post()
{
//$fk_entity_id = $this->uri->segment(2);//die();
$pdid = $this->post('pdid');
$url1 = $this->post('url1');
$url2 = $this->post('url2');
$data= $this->aws_rekonition->comparePhotos($url1,$url2);
//print_r($data);
$fin_data = array();
foreach($data as $k => $v)
$src = $this->post('src');
$dest = $this->post('dest');
$src_url_type = $this->post('src_url_type');
$dest_url_type = $this->post('dest_url_type');
$res_data = array('nxt_action' => null);
// echo $src;die();
if($src_url_type == 'base64')//make local img
{
$fin_data[$k] = $v;
// echo '***********************';
$src_local_file = APPPATH.'docs/'.MYUTIL::getRandomString(10).'-'.date('Y-m-d-H-i-s').'.png';
$ifp = fopen( $src_local_file, 'wb' );
//$data = explode( ',', $src );
fwrite( $ifp, base64_decode( $src ) );
fclose( $ifp );
$src = $src_local_file;
}
if($dest_url_type == 'base64')//make local img
{
$dest_local_file = APPPATH.'docs/'.MYUTIL::getRandomString(10).'-'.date('Y-m-d-H-i-s').'.png';
$ifp = fopen( $dest_local_file, 'wb' );
//$data = explode( ',', $src );
fwrite( $ifp, base64_decode( $dest ) );
fclose( $ifp );
$dest = $dest_local_file;
}
//check no of faces in src img
$no_of_faces_in_src_img = $this->aws_rekonition->detectFaces($src);
if(is_object($no_of_faces_in_src_img) && isset($no_of_faces_in_src_img['FaceDetails']) && count($no_of_faces_in_src_img['FaceDetails']) > 1)
{
foreach($no_of_faces_in_src_img as $k => $v)
{
$res_data[$k] = $v;
// echo '***********************';
}
$res_data['nxt_action'] = 'pick_src_img';
//if no faces more than two then return all face details to
//front end and let user pick the src img
$this->response($res_data,REST_Controller::HTTP_OK);
}
$this->response($fin_data,REST_Controller::HTTP_OK);
$compare_analysis_data = $this->aws_rekonition->comparePhotos($src,$dest);
if(is_object($compare_analysis_data))
{
foreach($compare_analysis_data as $k => $v)
{
$res_data[$k] = $v;
// echo '***********************';
}
}
//delete local files if created
if($dest_url_type == 'base64')
{
unlink($dest);
}
if($src_url_type == 'base64')
{
unlink($src);
}
$this->response($res_data,REST_Controller::HTTP_OK);
}
}

View File

@ -277,6 +277,19 @@ class MYUTIL
//echo $different;
return ($different >= $days_to_compare);
}
public static function getRandomString($strlen = 6)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $strlen; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
}

View File

@ -41,7 +41,7 @@ class AWS_REKONITION
public function comparePhotos($url1,$url2)
{
// echo "listAllBuckets";
$result = array('aksj'=>'sana');
$result = null;
$sourceImg = 'will1.jpg';
$targetImg = 'will2.jpg';
//echo $url1;die();
@ -78,253 +78,37 @@ class AWS_REKONITION
return $result;
}
public function createNewBucket($BUCKET_NAME)
public function detectFaces($imgurl)
{
try {
$result = $this->S3->createBucket(['ACL' => 'private','Bucket' => $BUCKET_NAME]);
return $result;
} catch (AwsException $e) {
//output error message if fails
log_message('ERROR', $e->getMessage());
return $e->getMessage();
//echo "\n";
}
}
public function uploadFileToS3Bucket($data)
{
$result = "";
try {
$result = $this->S3->putObject([
'Bucket' => $data['bucket_name'],
'Key' => $data['key'],
'SourceFile' => $data['sourcefile'],
'ContentType' => '*/*',
'StorageClass' => 'STANDARD',
'ACL'=>'private'
]);
} catch (AwsException $e)
$result = null;
try
{
$result = false;
log_message('ERROR',$e);
$result = $this->RekognitionClient->detectFaces([
'Attributes' => ["DEFAULT"],
'Image' => [ // REQUIRED
'Bytes' => file_get_contents($imgurl),
// 'S3Object' => [
// 'Bucket' => '<string>',
// 'Name' => '<string>',
// 'Version' => '<string>',
// ],
],
]);
}
catch(AwsException $e)
{
print_r($e->getMessage());
//echo "ex";
// echo "\n"; .
die();
}
return $result;
}
/* This Function return signed URI of single S3 Object*/
public function getSingleObjectInaBucketAsSignedURI($bucket_name,$folder_name,$time = '+5 minutes')//get as singed url
{
$result = array();
try {
// $result = $this->S3->getObject([
// 'Bucket' => 'thecucumber',
// 'Key' => 'byapi/woodgrass1.jpg'
// //'ResponseContentType' => 'image/png'
// //'ResponseContentDisposition' => 'attachment; woodgrass1.jpg',
// ]);
$cmd = $this->S3->getCommand('GetObject', [
'Bucket' => $bucket_name,
'Key' => $folder_name
]);
$request = $this->S3->createPresignedRequest($cmd, $time);
$presignedUrl = (string) $request->getUri();
}
catch(AwsException $e)
{
return $e->getMessage();
}
return $presignedUrl;
}
public function getS3SingleObj($bucket_name,$folder_name,$time = '+5 minutes')
{
//echo $time;die();
$result = $this->S3->getObject([
'Bucket' => $bucket_name,
'Key' => $folder_name
//'ResponseContentType' => 'image/png'
//'ResponseContentDisposition' => 'attachment; woodgrass1.jpg',
]);
return result;
}
// Get List of objetcs as byte(Raw file).
public function getAllObjectsInaBucket($bucket_name,$folder_name)
{
$objects = array();
try {
$objects = $this->S3->getIterator('ListObjects', [
'Bucket' => $bucket_name,
'Prefix' => $folder_name
]);
// echo "Keys retrieved!" ;
// //print_r($objects);
// foreach ($objects as $object) {
// print_r($object) ;
// }
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
return $objects;
}
// Delete an object from the bucket.
public function deleteSingleObjFromBucket($bucket,$key)
{
$result = $this->S3->deleteObject([
'Bucket' => $bucket,
'Key' => $key
]);
return $result;
}
public function setCors($BUCKETNAME)
{
$result = $this->S3->putBucketCors([
'Bucket' => $BUCKETNAME,
'CORSConfiguration' => [
'CORSRules' => [
[
'AllowedHeaders' => [
'*',
],
'AllowedMethods' => [
'PUT',
'POST',
'DELETE',
],
'AllowedOrigins' => [
'*',
],
'ExposeHeaders' => [
'x-amz-server-side-encryption',
],
'MaxAgeSeconds' => 3000,
],
[
'AllowedHeaders' => [
'Authorization',
],
'AllowedMethods' => [
'GET',
],
'AllowedOrigins' => [
'*',
],
'MaxAgeSeconds' => 3000,
],
],
]
]);
return $result;
}
public function getCORES($BUCKETNAME)
{
$result = $this->S3->getBucketCors([
'Bucket' => $BUCKETNAME]);
//////print_r($result);
}
public function copyS3Object($targetBucket,$sourceBucket,$sourceKeyname,$tagetKeyname)
{
//echo $sourceBucket.'/'.$sourceKeyname;
// Copy an object.
$res = $this->S3->copyObject([
'Bucket' => $targetBucket,
'Key' => $tagetKeyname.'/'.$tagetKeyname.'.png',
'CopySource' => $sourceBucket.'/'.$sourceKeyname.'/v4MLA2019-01-12-18:01:21.png'
]);
print($res);
}
public function dupSinglePDImages($bucketName,$sourceKey,$targetKey)
{
//first get all images/s3 obj from source bucket$objects = array();
$existingS3Objects = array();
$copied_objects = 0;
try {
$existingS3Objects =$this->S3->listObjects(['Bucket' => $bucketName,'Prefix' => $sourceKey]);
if(isset($existingS3Objects['Contents']) && count($existingS3Objects['Contents']))
{
// Perform a batch of CopyObject operations.
$batch = array();
foreach($existingS3Objects['Contents'] as $obj_key => $obj_vale)
{
$key = ($obj_vale['Key']);
$fulltargetKey = (function() use ($targetKey,$key){
$res = '';
$t = explode('/',$key);unset($t[0]);
foreach ($t as $index => $value) { $res .= (count($t) == ($index+1) ? $value.'/' : $value); }
return $targetKey.'/'.$res;
});
$fulltargetKey = $fulltargetKey();
//echo $fulltargetKey.'###'.$bucketName.'/'.$key.'~~~';
$batch[] = $this->S3->getCommand('CopyObject', [
'Bucket' => $bucketName,
'Key' => $fulltargetKey,
'CopySource' => "$bucketName/$key",
'MetadataDirective' => 'REPLACE'
]);
}
try {
$results = CommandPool::batch($this->S3, $batch);
foreach($results as $result) {
if ($result instanceof ResultInterface)
{
$copied_objects++;
echo 'DONE';
}
if ($result instanceof AwsException) {
log_message('ERROR','###Error in Batch result - '.$result->getAwsErrorMessage());
}
}
} catch (Exception $e)
{
log_message('ERROR','###Error in executing Copy Batch Operation');
log_message('ERROR',$e->getMessage());
echo $e->getMessage() . PHP_EOL;
}
}
}catch (S3Exception $e)
{
log_message('ERROR','###Error in getting all exist s3 keys');
log_message('ERROR',$e->getMessage());
//echo $e->getMessage() . PHP_EOL;
}
echo $copied_objects;
}
}
?>