def get()

in gnm_deliverables/views/deliverables_dash_views.py [0:0]


    def get(self, request, *args, **kwargs):
        if not hasattr(settings, "CAPI_KEY"):
            return Response({"status": "error", "detail": "You need to set capi_key in the settings"}, status=500)
        if not hasattr(settings, "CAPI_BASE"):
            return Response({"status": "error", "detail": "You need to set capi_base in the settings"}, status=500)
        if "url" not in request.GET:
            return Response({"status": "error", "detail": "No url= parameter"}, status=500)

        try:
            unquoted_url = urllib.parse.unquote(request.GET["url"])
            parsed_url = urllib.parse.urlparse(unquoted_url)
            url_to_call = "https://{base}{0}?api-key={key}&show-atoms=media".format(parsed_url.path,
                                                                                    base=settings.CAPI_BASE,
                                                                                    key=settings.CAPI_KEY)
            logger.info("CAPI url for {0} is {1}".format(request.GET["url"], url_to_call))
            response = requests.get(url_to_call)
            logger.info("CAPI response was {0}".format(response.status_code))
            if response.status_code == 200:
                capi_content = self.validate_capi_content(response.json())
                if capi_content is None:
                    logger.error(
                        "CAPI did not return enough fields that we wanted. Consult deliverables_dash_views.py for details on what's needed. We got: {0}.".format(
                            response.text))
                    return Response({
                        "status": "capi_response_error",
                        "detail": "This does not seem to be a video atom"
                    })
                elif len(capi_content["atoms"]["media"]) == 0:
                    logger.error("CAPI did not return any media atoms in the page. We got: {0}".format(response.text))
                    return Response({
                        "status": "capi_response_error",
                        "detail": "There were no video atoms on the page"
                    })
                else:
                    return Response({
                        "status": "ok",
                        "webTitle": capi_content["webTitle"],
                        "atoms": [{
                            "atomTitle": atom["title"],
                            "atomId": atom["id"],
                            "image": self.find_smallest_poster(atom),
                            "deliverable": self.find_deliverable_url_for_id(atom["id"])
                        } for atom in capi_content["atoms"]["media"]]
                    })
            else:
                logger.error("Could not access {0}: CAPI returned {1} {2}".format(url_to_call, response.status_code,
                                                                                  response.text))
                return Response({
                    "status": "capi_response_error",
                    "detail": "CAPI returned {0}".format(response.status_code)
                })
        except Exception as e:
            logger.error("Could not make proxy request to CAPI: {0}".format(str(e)))
            return Response({"status": "error", "detail": "See server logs"}, status=500)