add GET /interface/images
This commit is contained in:
parent
be6bec92c0
commit
a1978f5a16
2 changed files with 65 additions and 0 deletions
64
src/Api/InterfaceControllerProvider.php
Normal file
64
src/Api/InterfaceControllerProvider.php
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
namespace EmotionHero\Api;
|
||||||
|
|
||||||
|
use EmotionHero\Application as EH;
|
||||||
|
use Silex\Application;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
use Silex\Api\ControllerProviderInterface;
|
||||||
|
use EmotionHero\Models;
|
||||||
|
use EmotionHero\Server\Websockets;
|
||||||
|
|
||||||
|
class InterfaceControllerProvider implements ControllerProviderInterface
|
||||||
|
{
|
||||||
|
/** @var EH */
|
||||||
|
protected $_eh;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->_eh = EH::getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function connect(Application $app)
|
||||||
|
{
|
||||||
|
// creates a new controller based on the default route
|
||||||
|
$controllers = $app['controllers_factory'];
|
||||||
|
|
||||||
|
$controllers->get('/images', function (Application $app) {
|
||||||
|
|
||||||
|
$getEmoBlocks = function($emotion, $feature, $steps = 6) use($em) {
|
||||||
|
$hitRepo = $this->_em->getEm()->getRepository(EmotionHero\Models\Hit::class);
|
||||||
|
$blocks = [];
|
||||||
|
foreach(range(0, 100, 100/($steps-1)) as $i) {
|
||||||
|
/* @var $hitRepo EmotionHero\Models\HitRepository */
|
||||||
|
$hit = $hitRepo->getClosestHitWithImage($emotion, $i);
|
||||||
|
$img = "data:image/x-icon;base64,".$hit->getFeatureImgAsString($feature);
|
||||||
|
$score = $hit->getEmotions()->getEmotionScore($emotion);
|
||||||
|
$percentage = sprintf("%.0f %%",$score);
|
||||||
|
$blocks[] = [
|
||||||
|
'hit_id' => $hit->getId(),
|
||||||
|
'img_data' => $img,
|
||||||
|
'percentage' => $percentage,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
return $blocks;
|
||||||
|
};
|
||||||
|
|
||||||
|
$features = ['brows' => 6, 'nose' => 5, 'mouth' => 8];
|
||||||
|
|
||||||
|
$output = [];
|
||||||
|
|
||||||
|
foreach($features as $feature => $steps) {
|
||||||
|
foreach(Models\Emotions::$EMOTIONS as $emotion) {
|
||||||
|
$output[$feature][$emotion] = $getEmoBlocks(
|
||||||
|
$emotion,
|
||||||
|
$feature == 'mouth' ? 'mouth_left':$feature,
|
||||||
|
$steps
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $app['serializer']->serialize($output, 'json');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -165,6 +165,7 @@ $app->get('/api/protected_resource', function() use ($app){
|
||||||
|
|
||||||
|
|
||||||
$app->mount('/', new EmotionHero\Api\ScoreControllerProvider());
|
$app->mount('/', new EmotionHero\Api\ScoreControllerProvider());
|
||||||
|
$app->mount('/interface', new EmotionHero\Api\InterfaceControllerProvider());
|
||||||
|
|
||||||
// middlewares
|
// middlewares
|
||||||
$appStack = new EmotionHero\Api\ThrottleMiddleware($app, ['pdo'=>$eh->getEm()->getConnection()->getWrappedConnection()] );
|
$appStack = new EmotionHero\Api\ThrottleMiddleware($app, ['pdo'=>$eh->getEm()->getConnection()->getWrappedConnection()] );
|
||||||
|
|
Loading…
Reference in a new issue