Advertisement
Guest User

Untitled

a guest
Aug 29th, 2015
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. <?php
  2. use Aura\Router\RouterFactory;
  3. use Zend\Expressive\AppFactory;
  4. use Zend\Expressive\Router\Aura as AuraBridge;
  5. use RestBeer\Auth;
  6. use RestBeer\Format;
  7.  
  8. $loader = require __DIR__.'/vendor/autoload.php';
  9. $loader->add('RestBeer', __DIR__.'/src');
  10.  
  11.  
  12. $auraRouter = (new RouterFactory())->newInstance();
  13. $router = new AuraBridge($auraRouter);
  14. $api = AppFactory::create(null, $router);
  15.  
  16. $db = new PDO('sqlite:beers.db');
  17.  
  18. $beers = array(
  19. 'brands' => array('Heineken', 'Guinness', 'Skol', 'Colorado'),
  20. 'styles' => array('Pilsen' , 'Stout')
  21. );
  22.  
  23. $api->get('/', function ($request, $response, $next) {
  24. $response->getBody()->write('Hello, beers of world!');
  25. return $response;
  26. });
  27.  
  28. $api->get('/brand', function ($request, $response, $next) use ($beers) {
  29. $response->getBody()->write(implode(',', $beers['brands']));
  30.  
  31. return $next($request, $response);
  32. });
  33.  
  34. $api->get('/style', function ($request, $response, $next) use ($beers) {
  35. $response->getBody()->write(implode(',', $beers['styles']));
  36.  
  37. return $next($request, $response);
  38. });
  39.  
  40. $api->get('/beer{/id}', function ($request, $response, $next) use ($beers) {
  41. $id = $request->getAttribute('id');
  42. if ($id == null) {
  43. $response->getBody()->write(implode(',', $beers['brands']));
  44. return $next($request, $response);
  45. }
  46.  
  47. $key = array_search($id, $beers['brands']);
  48. if ($key === false) {
  49. return $response->withStatus(404);
  50. }
  51. $response->getBody()->write($beers['brands'][$key]);
  52.  
  53. return $next($request, $response);
  54.  
  55. });
  56.  
  57. $api->post('/beer', function ($request, $response, $next) use ($db) {
  58. $db->exec(
  59. "create table if not exists beer (id INTEGER PRIMARY KEY AUTOINCREMENT, name text not null, style text not null)"
  60. );
  61. $data = $request->getParsedBody();
  62. if (! isset($data['name']) || ! isset($data['style'])) {
  63. return new JsonResponse('Missing parameters', 400);
  64. }
  65. //@TODO: clean form data before insert into the database ;)
  66. $stmt = $db->prepare('insert into beer (name, style) values (:name, :style)');
  67. $stmt->bindParam(':name',$data['name']);
  68. $stmt->bindParam(':style', $data['style']);
  69. $stmt->execute();
  70. $data['id'] = $db->lastInsertId();
  71.  
  72. $response->getBody()->write(implode(',', $data));
  73.  
  74. return $next($request, $response);
  75.  
  76. });
  77.  
  78. $app = AppFactory::create();
  79. $app->pipe(new Auth());
  80. $app->pipe($api);
  81. $app->pipe(new Format());
  82. $app->run();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement