Przeglądaj źródła

removing most of the payload stuff and adding exceptions

Tim Millwood 10 lat temu
rodzic
commit
1dca174627

+ 5 - 16
src/Packagist/WebBundle/Controller/ApiController.php

@@ -62,32 +62,21 @@ class ApiController extends Controller
      */
     public function createPackageAction(Request $request)
     {
-        // parse the payload
-        $payload = json_decode($request->request->get('payload'), true);
-        if (!$payload && $request->headers->get('Content-Type') === 'application/json') {
-            $payload = json_decode($request->getContent(), true);
-        }
 
+        $payload = json_decode($request->getContent(), true);
         if (!$payload) {
             return new JsonResponse(array('status' => 'error', 'message' => 'Missing payload parameter'), 406);
         }
-
-        if (isset($payload['repository']['url'])) { // github/gitlab/anything hook
-            $urlRegex = '{^(?:ssh://git@|https?://|git://|git@)?(?P<host>[a-z0-9.-]+)[:/](?P<path>[\w.-]+/[\w.-]+?)(?:\.git)?$}i';
-            $url = $payload['repository']['url'];
-        } elseif (isset($payload['canon_url']) && isset($payload['repository']['absolute_url'])) { // bitbucket hook
-            $urlRegex = '{^(?:https?://|git://|git@)?(?P<host>bitbucket\.org)[/:](?P<path>[\w.-]+/[\w.-]+?)(\.git)?/?$}i';
-            $url = $payload['canon_url'].$payload['repository']['absolute_url'];
-        } else {
-            return new JsonResponse(array('status' => 'error', 'message' => 'Missing or invalid payload'), 406);
-        }
-
+        $url = $payload['repository']['url'];
         $package = new Package;
         $package->setEntityRepository($this->getDoctrine()->getRepository('PackagistWebBundle:Package'));
         $package->setRouter($this->get('router'));
         $user = $this->findUser($request);
         $package->addMaintainer($user);
         $package->repository = $url;
+        if ($this->get('validator')->validate($package)) {
+            return new JsonResponse(array('status' => 'error', 'message' => 'Invalid package'), 406); 
+        }
         try {
             $em = $this->getDoctrine()->getManager();
             $em->persist($package);