Source code for nuka.tasks.http

# -*- coding: utf-8 -*-
"""
"""
import os
import tempfile
import posixpath
from nuka.task import Task


[docs]class fetch(Task): """fetch content from internet""" def __init__(self, src=None, dst=None, **kwargs): kwargs.setdefault('name', src) super(fetch, self).__init__(src=src, dst=dst, **kwargs) def fetch(self, dst, src): if os.path.isfile('/usr/bin/curl'): res = self.sh(['curl', '-so', dst, src]) elif os.path.isfile('/usr/bin/wget'): res = self.sh(['wget', '-qO', dst, src]) else: from nuka.utils import urlretrieve urlretrieve(src, dst) res = {'rc': 0} return res def do(self): src = self.args['src'] dst = self.args['dst'] if dst is None: filename = posixpath.split(src.strip('/'))[-1] if not filename: with tempfile.NamedTemporaryFile(prefix='http_fetch_') as fd: dst = fd.name else: dst = os.path.join(tempfile.gettempdir(), filename) res = self.fetch(dst, src) res.update(dst=dst) return res