Advertisement
Guest User

Untitled

a guest
Dec 6th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. import requests
  2. import xml.etree.ElementTree as ET
  3.  
  4. headers = {'Content-Type': 'text'}
  5.  
  6. request_data = {"login": "<Login><Mode>0</Mode><Certification><UserID>%s</UserID><Password>%s</Password><SessionID/><Result/></Certification></Login>",
  7. "logout": "<Login><Mode>-1</Mode></Login>",
  8. "start": "<Event><Method><PumpBT>1</PumpBT></Method></Event>",
  9. "stop": "<Event><Method><PumpBT>0</PumpBT></Method></Event>",
  10. "get": "<Method><No>0</No><Pumps></Pumps></Method>",
  11. "set": "<Method><No>0</No><Pumps><Pump><UnitID>A</UnitID><Usual><%(name)s>%(value).4f</%(name)s></Usual></Pump></Pumps></Method>"}
  12.  
  13. parameters = {"Flow": "Pumps/Pump/Usual/Flow"}
  14.  
  15.  
  16. def extract_element(name, response):
  17. xml = ET.fromstring(response)
  18. return xml.find(name).text
  19.  
  20. class ShimadzuCbm20(object):
  21. def __init__(self, host="129.129.221.105"):
  22. self.host = host
  23.  
  24. self.endpoints = {"login": "http://%s/cgi-bin/Login.cgi" % self.host,
  25. "event": "http://%s/cgi-bin/Event.cgi" % self.host,
  26. "method": "http://%s/cgi-bin/Method.cgi" % self.host}
  27.  
  28.  
  29. def login(self, user="Admin", password="Admin"):
  30. login_data = request_data["login"] % (user, password)
  31.  
  32. response_text = requests.get(self.endpoints["login"], data=login_data, headers=headers).text
  33.  
  34. session_id = extract_element("Certification/SessionID", response_text)
  35.  
  36. if not session_id:
  37. raise ValueError("You are already logged in. Please logout first.")
  38.  
  39. return session_id
  40.  
  41. def logout(self):
  42. logout_data = request_data["logout"]
  43. response_text = requests.get(self.endpoints["login"], data=logout_data, headers=headers).text
  44.  
  45. def start(self):
  46. start_data = request_data["start"]
  47. response_text = requests.get(self.endpoints["event"], data=start_data, headers=headers).text
  48.  
  49. def stop(self):
  50. stop_data = request_data["stop"]
  51. response_text = requests.get(self.endpoints["event"], data=stop_data, headers=headers).text
  52.  
  53. def set(self, name, value):
  54. if name not in parameters:
  55. raise ValueError("Parameter name '%s' not recognized. Available parameters: %s" % (name, list(parameters.keys())))
  56.  
  57. set_flow_data = request_data["set"] % {"name": name, "value": value}
  58. response_text = requests.get(self.endpoints["method"], data=set_flow_data, headers=headers).text
  59.  
  60. return extract_element(parameters[name], response_text)
  61.  
  62. def get(self, name):
  63. if name not in parameters:
  64. raise ValueError("Parameter name '%s' not recognized. Available parameters: %s" % (name, list(parameters.keys())))
  65.  
  66. get_data = request_data["get"]
  67. response_text = requests.get(self.endpoints['method'], data=get_data, headers=headers).text
  68.  
  69. return extract_element(parameters[name], response_text)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement