Esempio n. 1
0
 def download(self):
     response = yield from aiohttp.request('GET', self.url)
     if response.status >= 400:
         raise exceptions.ProviderError(
             'Unable to download the requested file, please try again later.',
             code=response.status)
     return streams.ResponseStreamReader(response)
 def _fetch_download_url(self):
     if not self.download_url:
         # make request to osf, don't follow, store waterbutler download url
         request = yield from self._make_request(
             'GET',
             self.url,
             allow_redirects=False,
             headers={'Content-Type': 'application/json'})
         if request.status != 302:
             raise exceptions.ProviderError(request.reason, request.status)
         self.download_url = request.headers['location']
     return self.download_url
 def download(self):
     download_url = yield from self._fetch_download_url()
     response = yield from self._make_request('GET',
                                              download_url,
                                              allow_redirects=False)
     if response.status >= 400:
         raise exceptions.ProviderError(
             'Unable to download the requested file, please try again later.',
             code=response.status)
     if response.status in (302, 301):
         response = yield from aiohttp.request('GET',
                                               response.headers['location'])
     return streams.ResponseStreamReader(response, unsizable=True)
Esempio n. 4
0
    def __init__(self, request, url):
        self.request = request
        url_netloc = furl.furl(url).netloc
        if url_netloc not in settings.ALLOWED_PROVIDER_NETLOCS:
            raise exceptions.ProviderError(
                message="{} is not a permitted provider domain.".format(
                    markupsafe.escape(url_netloc)),
                code=400)
        self.url = url
        self.provider_metrics = MetricsRecord('provider')
        self.metrics = self.provider_metrics.new_subrecord(self.NAME)

        self.provider_metrics.merge({
            'type': self.NAME,
            'url': str(self.url),
        })