Beispiel #1
0
 public function get($id)
 {
     $sql = "SELECT p.id, c.content, p.filename, p.token, datetime(p.timestamp, 'unixepoch') AS timestamp, p.ip, p.highlight " . "FROM pastes p, paste_content c " . "WHERE p.content_id = c.id AND p.token = :token";
     $this->logger->addDebug($sql);
     $stmt = $this->db->prepare($sql);
     $stmt->bindValue(':token', $id);
     $stmt->execute();
     $result = $stmt->fetch();
     // The statement failed to execute.
     if (false === $stmt->execute()) {
         // @codeCoverageIgnoreStart
         throw new \RuntimeException('SQL statement failed to execute.');
         // @codeCoverageIgnoreEnd
     }
     // There are no results.
     if (false === ($result = $stmt->fetch())) {
         return false;
     }
     // Assemble a paste model.
     $paste = new Paste();
     $paste->setId($result['id']);
     $paste->setContent($result['content']);
     $paste->setTimestamp(new \DateTime($result['timestamp']));
     $paste->setToken($result['token']);
     $paste->setFilename($result['filename']);
     $paste->setBinaryIp($result['ip']);
     $paste->setHighlight($result['highlight']);
     return $paste;
 }
Beispiel #2
0
 public function testGetLatest()
 {
     $paste = new Entity\Paste();
     $paste->setContent('This is a test.');
     $paste->setTimestamp(new \DateTime());
     $paste->setFilename('test.txt');
     $paste->setIp('127.0.0.1');
     $storage = $this->app['storage'];
     $id = $storage->save($paste);
     $this->assertEquals($id, $storage->getLatest());
 }
Beispiel #3
0
 public function testFluentInterface()
 {
     $now = new \DateTime();
     $paste = new Paste();
     $paste->setId(1)->setContent('Hello :)')->setTimestamp($now)->setToken('1')->setFilename('test.txt')->setIp('127.0.0.1')->setBinaryIp(inet_pton('127.0.0.1'))->setConvertTabs(true)->setHighlight(true);
     $this->assertInstanceOf('Paste\\Entity\\Paste', $paste);
     $this->assertEquals(1, $paste->getId());
     $this->assertEquals('Hello :)', $paste->getContent());
     $this->assertEquals($now, $paste->getTimestamp());
     $this->assertEquals('1', $paste->getToken());
     $this->assertEquals('test.txt', $paste->getFilename());
     $this->assertEquals('127.0.0.1', $paste->getIp());
     $this->assertEquals(inet_pton('127.0.0.1'), $paste->getBinaryIp());
     $this->assertTrue($paste->getConvertTabs());
     $this->assertTrue($paste->getHighlight());
 }
Beispiel #4
0
 private function getPaste()
 {
     $now = new \DateTime();
     $paste = new Paste();
     $paste->setId(1)->setContent('Hello :)')->setTimestamp($now)->setToken('1')->setFilename('test.txt')->setIp('127.0.0.1')->setBinaryIp(inet_pton('127.0.0.1'))->setConvertTabs(true)->setHighlight(true);
     return $paste;
 }
Beispiel #5
0
    }
    return new Response($paste->getContent(), 200, array('Cache-Control' => 's-maxage=' . $app['pastebin.cache.maxage'], 'Content-Disposition' => sprintf('attachment; filename="%s"', $filename)));
})->assert('id', '\\w+');
$app->get('/p/{id}/clone', function ($id) use($app) {
    $paste = $app['storage']->get($id);
    $form = $app['form.factory']->createBuilder(new Form\Paste(), $paste);
    $form = $form->getForm();
    $view = $app['twig']->render('new.html', array('form' => $form->createView()));
    return $view;
})->assert('id', '\\w+');
$app->get('/latest', function () use($app) {
    $id = $app['storage']->getLatest();
    return new RedirectResponse('/p/' . $id);
});
$app->post('/api', function (Request $request) use($app) {
    $paste = new Entity\Paste();
    $paste->setIp($request->getClientIp());
    $paste->setContent($request->request->get('content'));
    $paste->setFilename($request->request->get('filename'));
    $paste->setHighlight($request->request->get('highlight'));
    $errors = $app['validator']->validate($paste);
    if (count($errors) > 0) {
        $json = json_encode(array('success' => false, 'message' => "Missing required parameters."));
        return new Response($json, 400, array('Content-Type' => 'application/json'));
    }
    $id = $app['storage']->save($paste);
    $url = $request->getSchemeAndHttpHost() . '/p/' . $id;
    $response = new Response();
    $response->setStatusCode(201);
    $response->headers->set('Location', $url);
    return $response;