Exemple #1
0
class T1Client(BasicT1Client):
	def __init__(self, url, prefix = None, serializer = None, certfile = None, keyfile = None, *args, **kw):
		if not serializer:
			from T1Serializer import T1Serializer
			serializer = T1Serializer(self)
		super(T1Client, self).__init__(url = url, prefix = prefix, serializer = serializer, *args, **kw)
		self.result_serializer = ResultSerializer()
		self.__t1 = RestClient(url, cache = False, content_type = "text/xml", certfile = certfile, keyfile = keyfile)
		self.logger.debug("Created T1 client: url=%s prefix=%s certfile=%s keyfile=%s", url, prefix, certfile, keyfile)
	
	@property
	def uri(self):
		return self.__t1.uri
	
	def _get_path(self, identifier):
		return unicode(identifier)

	@_t1method
	def _add_resource(self, parent, xml):
		with self.__t1.post(self._get_path(parent) + "/", xml) as resp:
			_tn, cfg, _act = self.serializer.unserialize(resp)
		return self._make_entity(cfg.pop("identifier"), _tn, cfg)

	@_t1method
	def _update_resource(self, identifier, xml):
		with self.__t1.put(self._get_path(identifier), xml) as resp:
			_tn, cfg, _act = self.serializer.unserialize(resp)
		return self._make_entity(identifier, _tn, cfg)
		
	@_t1method
	def _get_resource(self, identifier):
		with self.__t1.get(self._get_path(identifier)) as cfg:
			_tn, cfg, _act = self.serializer.unserialize(cfg)
		identifier = self._convert_identifier(cfg.get("identifier", identifier))
		return self._make_entity(identifier, _tn, cfg)

	@_t1method
	def list_resources(self, identifier, typename = None):
		identifier = self._convert_identifier(identifier)
		try:
			response = self.__t1.get(self._get_path(identifier))
		except HTTPError, e:
			if e.reason.startswith("No adapters found for") or e.reason.startswith("NoAdapterFound"):
				return []
			raise
		with response:
			xml = parse(response)
			
		try:
			l = []
			child = xml.firstChild.childNodes
	
			for node in child:
				if node.nodeName != "#text":
					identifier = node.firstChild.data
					identifier = Identifier(identifier, default_prefix = self.prefix)
					l.append(self._make_entity(identifier, None, None))
			return l
		finally:
			xml.unlink()	
Exemple #2
0
	def __init__(self, url, prefix = None, serializer = None, *args, **kw):
		super(T1Client, self).__init__(*args, **kw)
		self.__t1 = RestClient(url, cache = False)
		if not serializer:
			serializer = T1EntitySerializer(self, prefix = prefix)
		self.serializer = serializer
		self.__prefix = prefix
Exemple #3
0
	def __init__(self, url, prefix = None, serializer = None, certfile = None, keyfile = None, *args, **kw):
		if not serializer:
			from T1Serializer import T1Serializer
			serializer = T1Serializer(self)
		super(T1Client, self).__init__(url = url, prefix = prefix, serializer = serializer, *args, **kw)
		self.result_serializer = ResultSerializer()
		self.__t1 = RestClient(url, cache = False, content_type = "text/xml", certfile = certfile, keyfile = keyfile)
		self.logger.debug("Created T1 client: url=%s prefix=%s certfile=%s keyfile=%s", url, prefix, certfile, keyfile)
Exemple #4
0
class LegacyRequestProcessorClient(AbstractRequestProcessorClient):
	def __init__(self, url, *args, **kw):
		super(LegacyRequestProcessorClient, self).__init__(*args, **kw)
		self.__rp = RestClient(url, cache = False)
		self.serializer = LegacyRPRequestSerializer()
	
	def book_vct(self, user, vct):
		request = LegagyRPRequest("booking", "book_vct", user, vct)
		with self.__rp.post("/", self.serializer.dumps(request)) as result:
			return result.read()
Exemple #5
0
 def __init__(self, url, *args, **kw):
     super(LegacyRequestProcessorClient, self).__init__(*args, **kw)
     self.__rp = RestClient(url, cache=False)
     self.serializer = LegacyRPRequestSerializer()
Exemple #6
0
class T1Client(object):
	def __init__(self, url, prefix = None, serializer = None, *args, **kw):
		super(T1Client, self).__init__(*args, **kw)
		self.__t1 = RestClient(url, cache = False)
		if not serializer:
			serializer = T1EntitySerializer(self, prefix = prefix)
		self.serializer = serializer
		self.__prefix = prefix
		
	@property
	def prefix(self):
		return self.__prefix

	def add(self, parent, name, typename, config):
		parent = GlobalIdentifier(parent, prefix = self.prefix).identifier
		wfile = StringIO.StringIO()
		
		self.serializer.assist_serialize(typename, None, config, wfile)
		xml = wfile.getvalue()
		print xml
		wfile.close()
		#self.conn.request("POST", parent, params, headers)
		with self.__t1.post(parent, xml) as resp:
			_tn, cfg, _act = self.serializer.unserialize(resp)
		return T1Entity(cfg.pop("identifier"), self, cfg)
	add_resource = add

	def update(self, identifier, config):
		identifier = GlobalIdentifier(identifier, prefix = self.prefix)
		#wfile = StringIO.StringIO()
		req = self.serializer.assist_serialize(identifier.typename, None, config, None, "update")
		with self.__t1.put(identifier, req) as resp:
			_tn, cfg, _act = self.serializer.unserialize(resp)
		return T1Entity(identifier, self, cfg)
	update_resource = update
		
	def get_entity(self, identifier):
		#raise Exception("hjhu", identifier, self.prefix)
		#raise Exception(identifier, type(identifier))
		identifier = unicode(GlobalIdentifier(identifier, prefix = self.prefix))
		#raise Exception("hjhu", identifier, self.prefix)
		if identifier.endswith("/"):
			identifier = identifier[:-1]
		with self.__t1.get(identifier) as cfg:
			_tn, cfg, _act = self.serializer.unserialize(cfg)
		#raise Exception("huu", identifier, cfg)
		identifier = GlobalIdentifier(cfg.get("identifier", identifier), default_prefix = self.prefix)
		return T1Entity(identifier, self, cfg)
	get_resource = get_entity

	def list_entities(self, identifier):
		identifier = GlobalIdentifier(identifier, prefix = self.prefix)
		try:
			response = self.__t1.get(unicode(identifier))
		except HTTPError, e:
			if e.reason.startswith("No adapters found for") or e.reason.startswith("NoAdapterFoundError"):
				raise NoAdapterFoundError(identifier)
			raise
		with response:
			xml = parse(response)
			
		try:
			l = []
			child = xml.firstChild.childNodes
	
			for node in child:
				if node.nodeName != "#text":
					identifier = node.firstChild.data
					identifier = GlobalIdentifier(identifier, prefix = self.prefix)
					l.append(T1Entity(identifier, self, None))
			return l
		finally:
			xml.unlink()