Example #1
0
def test_upload_file_custom_filename():
    """Test uploading a file with a custom filename."""

    src_file = './testdata/file1'
    skylink = 'testskylinkcustomname'
    sialink = Skynet.uri_skynet_prefix() + skylink

    custom_name = 'testname'
    opts = Skynet.default_upload_options()
    opts.custom_filename = custom_name

    # upload a file with custom filename

    responses.add(responses.POST,
                  'https://siasky.net/skynet/skyfile',
                  json={'skylink': skylink},
                  status=200)

    print("Uploading file " + src_file)
    sialink2 = Skynet.upload_file(src_file, opts)
    if sialink != sialink2:
        sys.exit("ERROR: expected returned sialink " + sialink +
                 ", received " + sialink2)
    print("File upload successful, sialink: " + sialink2)

    body = responses.calls[0].request.body
    assert str(body).find('Content-Disposition: form-data; name="file"; \
filename="' + custom_name + '"') != -1
    with open(src_file, 'r') as fd:
        contents = fd.read().strip()
        assert str(body).find(contents) != -1

    assert len(responses.calls) == 1
Example #2
0
 async def post(self):
     import zipfile
     from requests.auth import HTTPBasicAuth
     from siaskynet import Skynet
     uploaded_file = self.request.files['file'][0]
     filename = self.get_query_argument('filename')
     local_filename = '/tmp/{}'.format(filename)
     with open(uploaded_file['filename'], 'wb') as f:
         f.write(uploaded_file['body'])
     with zipfile.ZipFile(uploaded_file['filename'], 'r') as zip_ref:
         zip_ref.extractall(local_filename + '/dir')
     try:
         opts = Skynet.default_upload_options()
         opts.portal_url = 'http://0.0.0.0:9980'
         skylink = Skynet.upload_directory(local_filename + '/dir')
     except Exception as e:
         self.set_status(400)
         return self.render_as_json({
             'status': 'error',
             'message': 'sia node not responding'
         })
     return self.render_as_json({
         'status': 'success',
         'skylink': Skynet.strip_prefix(skylink)
     })
Example #3
0
async def skyup(ctx, *args):
    try:
        ts = datetime.now().strftime("-%H:%M:%S:%f")
        if ctx.message.attachments:
            url = ctx.message.attachments[0].url
            r = requests.get(url)
            file_name = url.split('/')[-1] + ts
            with open(file_name, 'wb') as new_file:
                new_file.write(r.content)
        else:
            if not args:
                return
            file_name = 'text_message.txt' + ts
            with open(file_name, 'wt') as new_file:
                new_file.write(ctx.message.content[7:])
        opts = Skynet.default_upload_options()
        opts.custom_filename = file_name[:-16]
        skylink = upload_file(file_name, opts)
        embed = Embed(title='Upload successful')
        embed.add_field(name='Sia link', value=skylink, inline=False)
        embed.add_field(name='Web link',
                        value=skylink.replace('sia://', 'https://siasky.net/'),
                        inline=False)
        embed.add_field(name='Requested by',
                        value=ctx.message.author.mention,
                        inline=False)
        await ctx.send(embed=embed)
        new_file.close()
        os.remove(file_name)
    except Exception as ex:
        traceback.print_exc()
        logging.error('Exception of type {%s}: {%s}' %
                      (type(ex).__name__, str(ex)))
Example #4
0
def sia_upload_options(custom_filename='', portal=None):
    options = Skynet.default_upload_options()
    if portal:
        options.portal_url = SIA_API_BASEPATH
        options.custom = True
    else:
        options.custom = False
    options.custom_filename = custom_filename
    return options
Example #5
0
def upload_file_request(path, opts=None):
    if opts is None:
        opts = Skynet.default_upload_options()

    with open(path, 'rb') as f:
        host = opts.portal_url
        path = opts.portal_upload_path
        url = f'{host}/{path}'
        filename = opts.custom_filename if opts.custom_filename else os.path.basename(
            f.name)
        r = requests.post(url,
                          files={opts.portal_file_fieldname: (filename, f)})
    return r
Example #6
0
def post_upload_file(filename):
    options = Skynet.default_upload_options()

    host = options.portal_url
    path = options.portal_upload_path
    url = f'{host}/{path}'

    res = requests.get(filename)
    filename = filename.split("/")[-1]
    f = open(filename, "w+")
    f.write(res.text)
    f.close()
    f = open(filename, "rb")
    r = requests.post(url, files={options.portal_file_fieldname: (filename, f)})
    f.close()
    return r
Example #7
0
def handle_message(**payload):
    data = payload['data']
    web_client = payload['web_client']
    rtm_client = payload['rtm_client']
    text = None
    if 'text' in data:
        channel_id = data['channel']
        thread_ts = data['ts']
        user = data['user']
        text = data.get('text', [])
        match =  re.match(MENTION_REGEX, text)
        if match:
            user_id, message = match.groups()
            message = message.strip(" ")
        else:
            message = text
        
        message = message.replace(u'\xa0', u' ')
        split_message = message.split(" ")
        command = split_message.pop(0)
        files = split_message

        files_options = {
        "token": os.environ['SLACK_BOT_TOKEN'],
        "channel": channel_id,
        "user": user,
        }


        #res = requests.get('https://slack.com/api/files.list', files_options)
        #print(res.text)
        
        res = requests.get(files[0][1:-1])

        if command in acceptable_commands:
            options = Skynet.default_upload_options()
            #for filename in files:
            filename = files[0][1:-1]
            skylink = upload_file(filename, options)
            response = web_client.chat_postMessage(
                    channel=channel_id,
                    text=str(skylink),
                    thread_ts=thread_ts
                    )