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; }
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()); }
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()); }
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; }
} 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;