import httplib
import json
import urllib

import os
import sys
print(sys.version)

from ij import IJ

host = '127.0.0.1'
port = 8001
uri = 'http://{}:{}/'.format(host, port)

abspath = IJ.getImage().getProp('Location')
input_filename = os.path.split(abspath)[-1]

outpath = 'C:\\Users\\rhodes\\projects\\proj0015-model-server\\resources\\testdata'

def hit_endpoint(method, endpoint, params=None, verbose=False):
    connection = httplib.HTTPConnection(host, port)
    if not method in ['GET', 'PUT']:
        raise Exception('Can only handle GET and PUT requests')
    if params:
        url = endpoint + '?' + urllib.urlencode(params)
    else:
        url = endpoint
    connection.request(method, url)
    resp = connection.getresponse()
    resp_str = resp.read()
    if verbose:
    	print(method + ' ' + url + ', status ' + str(resp.status) + ':\n' + resp_str)
    return json.loads(resp_str)

#hit_endpoint('GET', '/')
#hit_endpoint('GET', '/models')
#hit_endpoint('PUT', '/bounce_back', {'par1': 'ghij'})
resp = hit_endpoint('PUT', '/models/ilastik/pixel_classification/load/', {'project_file': 'demo_px.ilp'})
pxmid = resp['model_id']
resp = hit_endpoint('GET', '/models', verbose=True)

infer_params = {
	'model_id': pxmid,
	'input_filename': input_filename,
	'channel': 0
	}

hit_endpoint('PUT', '/infer/from_image_file', infer_params)