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')) |