Skip to content
Snippets Groups Projects
Commit 1ea33ddd authored by anthony.boulmier's avatar anthony.boulmier
Browse files

example SOAP/REST codes

parent cf7e0c97
Branches
No related tags found
No related merge requests found
Pipeline #
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
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)
File deleted
File deleted
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment