Example #1
0
<?php

use site\model\Link;
use site\presenters\ErrorPresenter;
use site\presenters\LinkPresenter;
$app->post('/api/generate', function () use($app) {
    $payload = json_decode($app->request->getBody());
    //check if url is present in json
    if (empty($payload) || empty($payload->url)) {
        $app->response->setStatus(400);
        return $app->response->write(new ErrorPresenter(1001, 'A URL is required.'));
    }
    //check if url is valid
    if (!filter_var($payload->url, FILTER_VALIDATE_URL)) {
        $app->response->setStatus(400);
        return $app->response->write(new ErrorPresenter(1002, 'A valid URL is required.'));
    }
    //see if url already exists in DB and send existing code
    $link = Link::where('url', $payload->url)->first();
    if ($link) {
        $app->response->setStatus(201);
        return $app->response->write(new LinkPresenter($link));
    }
    //Create new link record
    $newLink = Link::create(['url' => $payload->url]);
    $newLink->update(['code' => $newLink->generateShortCode()]);
    $app->response->setStatus(201);
    return $app->response->write(new LinkPresenter($newLink));
});
Example #2
0
<?php

use site\model\Link;
$app->get('/:code', function ($code) use($app) {
    $link = Link::where('code', $code)->first();
    if (!$link) {
        $app->notFound();
    } else {
        $app->response->redirect($link->url);
    }
});