36 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
| from django.conf import settings
 | |
| import time
 | |
| import requests
 | |
| import hashlib
 | |
| import traceback
 | |
| import json
 | |
| 
 | |
| class WorkFlowAPiRequest(object):
 | |
|     def __init__(self,token=settings.WORKFLOW_TOKEN, appname=settings.WORKFLOW_APP, username='admin', workflowurl=settings.WORKFLOW_URL):
 | |
|         self.token = token
 | |
|         self.appname = appname
 | |
|         self.username = username
 | |
|         self.workflowurl = workflowurl
 | |
|     
 | |
|     def getrequestheader(self):
 | |
|         timestamp = str(time.time())[:10]
 | |
|         ori_str = timestamp + self.token
 | |
|         signature = hashlib.md5(ori_str.encode(encoding='utf-8')).hexdigest()
 | |
|         headers = dict(signature=signature, timestamp=timestamp, appname=self.appname, username=self.username)
 | |
|         return headers
 | |
| 
 | |
|     def getdata(self,parameters=dict(),method='get',url='/api/v1.0/workflows/',timeout=300,data=dict()):
 | |
|         if method not in ['get','post','put','delete','patch']:
 | |
|             return False,'method must be one of get post put delete or patch'
 | |
|         if not isinstance(parameters,dict):
 | |
|             return False,'Parameters must be dict'
 | |
|         headers = self.getrequestheader()
 | |
|         try:
 | |
|             r = getattr(requests,method)('{0}{1}'.format(self.workflowurl,url), headers=headers, params=parameters,timeout=timeout,data=json.dumps(data))
 | |
|             result = r.json()
 | |
|             return True,result
 | |
|         except:
 | |
|             return False,traceback.format_exc()
 | |
| 
 | |
| # ins = WorkFlowAPiRequest()
 | |
| # print (ins.getdata(parameters=dict(username='admin', per_page=20, name=''),method='get',url='/api/v1.0/workflows')) |