コード例 #1
0
ファイル: api.py プロジェクト: harlo/InformaCam-Service
	def get(self):
		"""Lists all Submissions in the database.
		
		If query parameters are set, api will return matches.
		"""
		
		res = ServerResponse()
		
		if(len(self.request.query) > 3):
			search = DerivativeSearch(
				parseRequest(self.request.query), 
				remove=['_rev','rt_']
			)			
			res.data = search.submissions
		else:
			res.data = db.query(
				"_design/submissions/_view/getSubmissions",
				remove=['_rev','rt_']
			)
		if len(res.data) > 0 and res.data[0]:
			res.result = 200
		else:
			del res.data
			
		self.write(res.emit())
コード例 #2
0
ファイル: api.py プロジェクト: harlo/InformaCam-Service
	def post(self):
		"""Add a new Source to the database.
		
		Only the server may utilize this method.
		
		required parameters in post:
			_id
			package_name
			package_content
		"""
		
		res = ServerResponse()		
		params = parseRequest(self.request.body)
		
		if params is not None:
			source = ICSource(inflate={'_id' : params['_id']})
			if source.addFile(params['package_name'], params['package_content']):				
				if source.importAssets(params['package_name']):
					res.result = 200
					res.data = source.emit()
				else:
					source.invalidate(
						invalidate['codes']['source_invalid_public_credentials'],
						invalidate['reasons']['source_invalid_public_credentials']
					)
					res.reason = source.invalid
			
		self.write(res.emit())
コード例 #3
0
ファイル: api.py プロジェクト: harlo/InformaCam-Service
	def get(self, submission_id):
		"""Returns the specified Submission.
		
		required:
			_id
		"""
		res = ServerResponse()
		
		if passesParameterFilter(submission_id):
			submission = ICSubmission(_id = submission_id)
			
			if not hasattr(submission, 'invalid'):
				res.data = submission.emit()
				res.result = 200
			else:
				res.reason = submission.invalid
				
			if len(self.request.query) > 3:
				with_query = submission.search(parseRequest(self.request.query))
				res.data['refined_search'] = {}
				
				if hasattr(with_query, 'annotations'):
					res.data['refined_search']['annotations'] = with_query.annotations

		self.write(res.emit())
コード例 #4
0
ファイル: api.py プロジェクト: harlo/InformaCam-Service
	def post(self):
		"""Add a new Submission to the database.
		
		Only the server may utilize this method.
		
		required parameters in post:
			_id
			package_name
			package_content
		"""
		
		res = ServerResponse()		
		params = parseRequest(self.request.body)

		if params is not None:
			submission = ICSubmission(inflate={'_id' : params['_id']})
			if submission.addFile(params['package_name'], params['package_content']):
				if submission.importAssets(params['package_name']):
					submission.setMimeType(params['mime_type'])
					
					res.result = 200
					res.data = submission.emit()
				else:
					submission.invalidate(
						invalidate['codes']['asset_non_existent'],
						invalidate['reasons']['asset_non_existent']
					)
					res.reason = submission.invalid
		
		self.write(res.emit())
コード例 #5
0
ファイル: api.py プロジェクト: SuicideSin/UnveillanceEngine
	def post(self, _id):
		res = Res()
		
		if passesParameterFilter(_id):
			source = ICSource(_id=_id)
			
			for k,v in parseRequest(self.request.body).iteritems():
				if k not in source.locked_fields:
					setattr(source, k, v)
			
			if source.save():
				res.data = source.emit()
				res.result = 200
			
		self.finish(res.emit())
コード例 #6
0
ファイル: api.py プロジェクト: n8fr8/Unveillance
	def post(self, _id):
		res = Res()
		
		if passesParameterFilter(_id):
			source = ICSource(_id=_id)
			
			for k,v in parseRequest(self.request.body).iteritems():
				if k not in source.locked_fields:
					setattr(source, k, v)
			
			if source.save():
				res.data = source.emit()
				res.result = 200
			
		self.finish(res.emit())
コード例 #7
0
ファイル: api.py プロジェクト: SuicideSin/UnveillanceEngine
	def post(self, _id):
		res = Res()
		
		if passesParameterFilter(_id):
			submission = ICSubmission(_id=_id)
			
			if not hasattr(submission, "invalid"):
				for k,v in parseRequest(self.request.body).iteritems():
					if k not in submission.locked_fields:
						setattr(source, k, v)
				
				if submission.save():
					res.data = submission.emit()
					res.result = 200
			
		self.finish(res.emit())
コード例 #8
0
ファイル: api.py プロジェクト: n8fr8/Unveillance
	def post(self, _id):
		res = Res()
		
		if passesParameterFilter(_id):
			submission = ICSubmission(_id=_id)
			
			if not hasattr(submission, "invalid"):
				for k,v in parseRequest(self.request.body).iteritems():
					if k not in submission.locked_fields:
						setattr(source, k, v)
				
				if submission.save():
					res.data = submission.emit()
					res.result = 200
			
		self.finish(res.emit())
コード例 #9
0
ファイル: api.py プロジェクト: SuicideSin/UnveillanceEngine
	def get(self):
		res = Res()
		q = False
		
		clauses = []
		op = None
		
		print urllib2.unquote(self.request.query)
		for k,v in parseRequest(urllib2.unquote(self.request.query)).iteritems():
			if k == "operator":
				op = v
			else:
				clauses.append({
					"field" : k,
					k : v
				})
		
		el = Elasticsearch(river="j3m")
		#el = Elasticsearch(river="j3m,submissions")
		
		if len(clauses) == 1:
			q = el.query({"clauses" : clauses})
		elif len(clauses) == 0:
			q = el.query({
				"clauses": [
					{
						"field" : "get_all",
						"get_all" : False
					}
				]
			})
		else:
			if op is None: op = "and"
			q = el.query({
				"operator" : op,
				"clauses" : clauses
			})

		if q is not False:
			res.data = q
			res.result = 200

		self.finish(res.emit())
コード例 #10
0
ファイル: api.py プロジェクト: n8fr8/Unveillance
	def get(self):
		res = Res()
		q = False
		
		clauses = []
		op = None
		
		print urllib2.unquote(self.request.query)
		for k,v in parseRequest(urllib2.unquote(self.request.query)).iteritems():
			if k == "operator":
				op = v
			else:
				clauses.append({
					"field" : k,
					k : v
				})
		
		el = Elasticsearch(river="j3m")
		#el = Elasticsearch(river="j3m,submissions")
		
		if len(clauses) == 1:
			q = el.query({"clauses" : clauses})
		elif len(clauses) == 0:
			q = el.query({
				"clauses": [
					{
						"field" : "get_all",
						"get_all" : False
					}
				]
			})
		else:
			if op is None: op = "and"
			q = el.query({
				"operator" : op,
				"clauses" : clauses
			})

		if q is not False:
			res.data = q
			res.result = 200

		self.finish(res.emit())
コード例 #11
0
ファイル: api.py プロジェクト: harlo/InformaCam-Service
	def get(self):
		"""List all Sources in database"""
		res = ServerResponse()

		if(len(self.request.query) > 3):
			search = SourceSearch(parseRequest(self.request.query))
			res.data = search.sources
		else:
			res.data = db.query(
				"_design/sources/_view/getSources",
				remove=['_rev','rt_']
			)
			
		if len(res.data) > 0 and res.data[0]:
			res.result = 200
		else:
			del res.data
		
		self.write(res.emit())