def load(context, url, callback): # type: (Context, str, Callable[..., Any]) -> None source_type, encoded_url = separate_url_and_source_type(url) actual_url = base64.urlsafe_b64decode(urllib.parse.unquote(encoded_url)).decode('utf-8') if source_type not in (THUMBOR_S3_TYPE, THUMBOR_LOCAL_FILE_TYPE, THUMBOR_EXTERNAL_TYPE): callback(get_not_found_result()) logging.warning('INVALID SOURCE TYPE: ' + source_type) return if source_type == THUMBOR_S3_TYPE: if actual_url.startswith('/user_uploads/'): actual_url = actual_url[len('/user_uploads/'):] else: raise AssertionError("Unexpected s3 file.") s3_loader.load(context, actual_url, callback) elif source_type == THUMBOR_LOCAL_FILE_TYPE: if actual_url.startswith('/user_uploads/'): actual_url = actual_url[len('/user_uploads/'):] local_file_path_prefix = 'files/' else: raise AssertionError("Unexpected local file.") patched_local_url = local_file_path_prefix + actual_url file_loader.load(context, patched_local_url, callback) elif source_type == THUMBOR_EXTERNAL_TYPE: https_loader.load(context, actual_url, callback)
def load(context, url, callback): # type: (Context, str, Callable[..., Any]) -> None source_type, encoded_url = separate_url_and_source_type(url) actual_url = base64.urlsafe_b64decode(urllib.parse.unquote(encoded_url)) if source_type not in (THUMBOR_S3_TYPE, THUMBOR_LOCAL_FILE_TYPE, THUMBOR_EXTERNAL_TYPE): callback(get_not_found_result()) logging.warning('INVALID SOURCE TYPE: ' + source_type) return if source_type == THUMBOR_S3_TYPE: if actual_url.startswith('/user_uploads/'): # type: ignore # python 2 type differs from python 3 type actual_url = actual_url[len('/user_uploads/'):] else: raise AssertionError("Unexpected s3 file.") s3_loader.load(context, actual_url, callback) elif source_type == THUMBOR_LOCAL_FILE_TYPE: if actual_url.startswith('/user_uploads/'): # type: ignore # python 2 type differs from python 3 type actual_url = actual_url[len('/user_uploads/'):] local_file_path_prefix = 'files/' else: raise AssertionError("Unexpected local file.") patched_local_url = local_file_path_prefix + actual_url # type: ignore # python 2 type differs from python 3 type file_loader.load(context, patched_local_url, callback) elif source_type == THUMBOR_EXTERNAL_TYPE: https_loader.load(context, actual_url, callback)
def topic(self, callback): url = self.get_url('/') loader.http_client = self._http_client config = Config() config.ALLOWED_SOURCES = ['s.glbimg.com'] ctx = Context(None, config, None) loader.load(ctx, url, callback)
def topic(self, callback): url = self.get_url('/') loader.http_client = self._http_client config = Config() config.HTTP_LOADER_FORWARD_USER_AGENT = True ctx = Context(None, config, None, HandlerMock({"User-Agent": "test-user-agent"})) loader.load(ctx, url, callback)
def topic(self, callback): url = self.get_url('/') loader.http_client = self._http_client config = Config() config.HTTP_LOADER_FORWARD_USER_AGENT = True config.HTTP_LOADER_DEFAULT_USER_AGENT = "DEFAULT_USER_AGENT" ctx = Context(None, config, None, HandlerMock({})) loader.load(ctx, url, callback)
def test_load_with_user_agent(self): url = self.get_url('/') config = Config() config.HTTP_LOADER_FORWARD_USER_AGENT = True ctx = Context(None, config, None, HandlerMock({"User-Agent": "test-user-agent"})) loader.load(ctx, url, self.stop) result = self.wait() expect(result).to_be_instance_of(LoaderResult) expect(result.buffer).to_equal('test-user-agent')
def test_load_with_callback(self): url = self.get_url('/') config = Config() ctx = Context(None, config, None) loader.load(ctx, url, self.stop) result = self.wait() expect(result).to_be_instance_of(LoaderResult) expect(result.buffer).to_equal('Hello') expect(result.successful).to_be_true()
def test_load_with_curl(self): url = self.get_url('/') config = Config() config.HTTP_LOADER_CURL_ASYNC_HTTP_CLIENT = True ctx = Context(None, config, None) loader.load(ctx, url, self.stop) result = self.wait() expect(result).to_be_instance_of(LoaderResult) expect(result.buffer).to_equal('Hello') expect(result.successful).to_be_true()
def test_load_with_default_user_agent(self): url = self.get_url("/") config = Config() config.HTTP_LOADER_FORWARD_USER_AGENT = True config.HTTP_LOADER_DEFAULT_USER_AGENT = "DEFAULT_USER_AGENT" ctx = Context(None, config, None, HandlerMock({})) loader.load(ctx, url, self.stop) result = self.wait() expect(result).to_be_instance_of(LoaderResult) expect(result.buffer).to_equal("DEFAULT_USER_AGENT")
def test_should_return_a_future(self): url = self.get_url('/') config = Config() ctx = Context(None, config, None) future = loader.load(ctx, url) expect(isinstance(future, Future)).to_be_true()
def load(context, url, callback): # type: (Context, str, Callable[..., Any]) -> None source_type, encoded_url = separate_url_and_source_type(url) actual_url = base64.urlsafe_b64decode(urllib.parse.unquote(encoded_url)) if source_type not in (THUMBOR_S3_TYPE, THUMBOR_LOCAL_FILE_TYPE, THUMBOR_EXTERNAL_TYPE): callback(get_not_found_result()) logging.warning('INVALID SOURCE TYPE: ' + source_type) return if source_type == THUMBOR_S3_TYPE: s3_loader.load(context, actual_url, callback) elif source_type == THUMBOR_LOCAL_FILE_TYPE: patched_local_url = 'files/' + actual_url # type: ignore # python 2 type differs from python 3 type file_loader.load(context, patched_local_url, callback) elif source_type == THUMBOR_EXTERNAL_TYPE: https_loader.load(context, actual_url, callback)