Newer
Older
#!/usr/bin/env python
import os
import urllib
from dm.common.utility.encoder import Encoder
from dm.common.exceptions.dmException import DmException
from dm.common.objects.experiment import Experiment
from daqRestApi import DaqRestApi
class ExperimentRestApi(DaqRestApi):
def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
DaqRestApi.__init__(self, username, password, host, port, protocol)
@DaqRestApi.execute
def startDaq(self, experimentName, dataDirectory, daqInfo={}):
url = '%s/experiments/startDaq' % (self.getContextRoot())
if experimentName is None or not len(experimentName):
raise InvalidRequest('Experiment name must be provided.')
if dataDirectory is None or not len(dataDirectory):
raise InvalidRequest('Experiment data directory must be provided.')
daqInfo['experimentName'] = experimentName
daqInfo['dataDirectory'] = dataDirectory
Barbara B. Frosik
committed
#print json.dumps(daqInfo)
url += '?experimentName=%s' % Encoder.encode(experimentName)
url += '&dataDirectory=%s' % Encoder.encode(dataDirectory)
url += '&daqInfo=%s' % (Encoder.encode(json.dumps(daqInfo)))
responseDict = self.sendSessionRequest(url=url, method='POST')
return Experiment(responseDict)
@DaqRestApi.execute
def stopDaq(self, experimentName):
url = '%s/experiments/stopDaq' % (self.getContextRoot())
if experimentName is None or not len(experimentName):
raise InvalidRequest('Experiment name must be provided.')
url += '?experimentName=%s' % Encoder.encode(experimentName)
responseDict = self.sendSessionRequest(url=url, method='POST')
return Experiment(responseDict)
def upload(self, experimentName, dataDirectory, daqInfo={}):
url = '%s/experiments/upload' % (self.getContextRoot())
if experimentName is None or not len(experimentName):
raise InvalidRequest('Experiment name must be provided.')
if dataDirectory is None or not len(dataDirectory):
raise InvalidRequest('Experiment data directory must be provided.')
daqInfo['experimentName'] = experimentName
daqInfo['dataDirectory'] = dataDirectory
url += '?daqInfo=%s' % (Encoder.encode(json.dumps(daqInfo)))
responseDict = self.sendSessionRequest(url=url, method='POST')
return Experiment(responseDict)
#######################################################################
# Testing.
if __name__ == '__main__':
api = ExperimentRestApi('sveseli', 'sveseli', 'zagreb.svdev.net', 33336, 'http')
print api.startDaq('experiment1', '/tmp/data/experiment1')