diff --git a/TP1/rest/rest-client.py b/TP1/rest/rest-client.py new file mode 100644 index 0000000000000000000000000000000000000000..431ec07acead056be88d83605539dc255e1a0d06 --- /dev/null +++ b/TP1/rest/rest-client.py @@ -0,0 +1,54 @@ +import urllib2 +import argparse +import pprint +import os +import json +from os.path import join +# put here your own ip +SERVER_URL = 'http://127.0.0.1:8122' + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Simple REST FTP client') + + subparsers = parser.add_subparsers(help='sub-command help', dest='which') + + parser_list = subparsers.add_parser('list',help='list directory') + parser_list.add_argument('directory', type=str) + + parser_get = subparsers.add_parser('get', help='get file') + parser_get.add_argument('file', type=str) + parser_get.add_argument('destination', type=str) + + parser_put = subparsers.add_parser('put', help='put file in ftp') + parser_put.add_argument('source', type=str) + parser_put.add_argument('destination', type=str) + + args = parser.parse_args() + + if args.which == 'list': + directory = join(args.which, args.directory) if args.directory != '.' else args.which + req = urllib2.Request(join(SERVER_URL, directory)) + pprint.pprint(join(SERVER_URL, directory)) + req.add_header('Content-Type', 'application/json') + response = json.loads(urllib2.urlopen(req).read()) + dir, sdirs, files = response['dir'], response['subdirs'], response['files'] + print "[%s]" % dir + for d in sdirs: + print "[%s/%s]" % (dir, d) + for f in files: + print "%s/%s" % (dir, f) + elif args.which == 'get': + req = urllib2.Request(join(SERVER_URL, join(args.which, args.file))) + req.add_header('Content-Type', 'application/json') + response = json.loads(urllib2.urlopen(req).read()) + directory, filename, data = response['dir'], response['file'], response['data'] + with open(args.destination, 'w+') as f: + f.write(data) + elif args.which == 'put': + req = urllib2.Request(join(SERVER_URL, args.which)) + req.add_header('Content-Type', 'application/json') + with open(args.source, 'r') as src: + data = src.read() + response = urllib2.urlopen(req, json.dumps({'destination': args.destination, 'data': data})).read() + print response + diff --git a/TP1/rest/rest-server.py b/TP1/rest/rest-server.py new file mode 100644 index 0000000000000000000000000000000000000000..56583a95ded2b8085bf8721771c134c38c5ded55 --- /dev/null +++ b/TP1/rest/rest-server.py @@ -0,0 +1,49 @@ +from flask import Flask, request, jsonify +import argparse +from os.path import expanduser, join, isdir, abspath +from os import listdir + +app = Flask(__name__) +main_directory = None + +@app.route('/list', defaults={'relative_directory': '.'}) +@app.route('/list/<path:relative_directory>') +def list(relative_directory): + global main_directory + target_directory = join(main_directory, relative_directory) if relative_directory != '.' else main_directory + dirs = listdir(target_directory) + s = [d for d in dirs if isdir(d)] + f = [f for f in dirs if not isdir(f)] + return jsonify(dir=target_directory, subdirs=s, files=f) + +@app.route('/get/<path:relative_path>') +def get(relative_path): + global main_directory + with open(join(main_directory,relative_path), 'r') as f: + data = f.read() + return jsonify(dir=main_directory, file=relative_path, data=data) + +@app.route('/put', methods=['POST']) +def put(): + from pprint import pprint + + relative_path = request.json['destination'] + data = request.json['data'] + global main_directory + new_file = join(main_directory, relative_path) + try: + with open(new_file, 'w+') as f: + f.write(data) + except: + return 'Error while writing %s :(' % new_file + return '%s added successfuly!' % new_file + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Simple REST FTP server') + parser.add_argument('-p', '--port', type=int, required=True, help='Listening port') + parser.add_argument('-d', '--directory', type=str, required=True, help='Home directory of the FTP') + parser.add_argument('-D', '--debug', action='store_true', help='Activate debug mode') + args = parser.parse_args() + main_directory = abspath(args.directory) + + app.run(host='0.0.0.0', port=args.port, debug=args.debug) diff --git a/TP1/soap/.soap-client.py.swp b/TP1/soap/.soap-client.py.swp deleted file mode 100644 index d9907ad2928ab17b24f37d2f76af56c9bf455001..0000000000000000000000000000000000000000 Binary files a/TP1/soap/.soap-client.py.swp and /dev/null differ diff --git a/TP1/soap/.soap-server.py.swp b/TP1/soap/.soap-server.py.swp deleted file mode 100644 index c8d9d2b208520ea8e793df6f52c8e0c0cb15aab9..0000000000000000000000000000000000000000 Binary files a/TP1/soap/.soap-server.py.swp and /dev/null differ diff --git a/TP1/soap/soap-server.py b/TP1/soap/soap-server.py index 77e03fb7499ad50c12c53634ebb611a88054c72b..c43384a3494c26b5648dad7c144c219bfb3530ff 100644 --- a/TP1/soap/soap-server.py +++ b/TP1/soap/soap-server.py @@ -11,21 +11,21 @@ def list(relative_directory): target_directory = join(main_directory, relative_directory) if relative_directory != '.' else main_directory dirs = listdir(target_directory) s = [d for d in dirs if isdir(d)] - f = [f for f in dirs if not isdir(d)] + f = [f for f in dirs if not isdir(f)] return (target_directory, s, f) def get(relative_path): global main_directory with open(join(main_directory,relative_path), 'r') as f: - payload = f.read() - return (main_directory, relative_path, payload) + data = f.read() + return (main_directory, relative_path, data) -def put(relative_path, payload): +def put(relative_path, data): global main_directory new_file = join(main_directory, relative_path) try: with open(new_file, 'w+') as f: - f.write(payload) + f.write(data) except: return 'Error while writing %s :(' % new_file return '%s added successfuly!' % new_file