view mergeclient.py @ 68:4645e50539ff

Add support for posting files with own form names for each file Add a multi param to mergeclient to show example of posting each file as its own formular parameter.
author Björn Ricks <bjoern.ricks@intevation.de>
date Tue, 02 Dec 2014 17:06:33 +0100
parents 3918c3c69485
children 349d49bb69f4
line wrap: on
line source
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import optparse
import sys

import requests


def main():
    usage = "usage: %prog [options] file1 file2 [ file3, ...]"
    parser = optparse.OptionParser(usage=usage)
    parser.add_option("-s", "--host", default="localhost")
    parser.add_option("-p", "--port", default="5000")
    parser.add_option("-o", "--out", default="merged.pdf", dest="out")
    parser.add_option("-i", "--ignore-file-errors", action="store_true",
                      default=False, dest="ignorefileerrors")
    parser.add_option("-m", "--multi", action="store_true",
                      default=False, dest="multi")
    (options, args) = parser.parse_args()

    if len(args) < 2:
        parser.print_usage()
        sys.exit(1)

    service = "merge"
    url = "http://%s:%s/%s/" % (options.host, options.port, service)

    if options.ignorefileerrors:
        url += "?ignore_file_errors=1"

    files = []

    if options.multi:
        for i, filename in enumerate(args):
            files.append(("file%s" % i, open(filename, 'rb')))
    else:
        for filename in args:
            files.append(('files', open(filename, 'rb')))

    r = requests.post(url, files=files)

    if r.status_code == 200:
        with open(options.out, "wb") as f:
            f.write(r.content)
        print "OK"
    else:
        print "An error has occured"
        print r.status_code, r.headers
        print r.text
        sys.exit(2)

if __name__ == "__main__":
    main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)