Skip to content

Instantly share code, notes, and snippets.

@pewerner
Created December 20, 2012 22:01
Show Gist options
  • Save pewerner/4348926 to your computer and use it in GitHub Desktop.
Save pewerner/4348926 to your computer and use it in GitHub Desktop.
Web request to a "rest" API
#This is the actual class
import clr
clr.AddReference('System')
clr.AddReference('System.Xml')
clr.AddReference('System.Data')
from System.Net import *
from System.IO import *
from System.Data import *
from System.Xml import *
from System.Xml.XPath import *
class RailsClient():
def __init__(self):
pass
def loadData(self, url):
# Grab Data from Rails rest api
request = HttpWebRequest.Create(url)
response = request.GetResponse()
sr = StreamReader(response.GetResponseStream())
responseText = sr.ReadToEnd()
# The DataGrid Control Requires that all data is assembled into a DataTable
datatable = DataTable()
datatable.Columns.Add("Order ID")
datatable.Columns.Add("Order Name")
datatable.Columns.Add("Order Status")
datatable.Columns.Add("Production Method")
datatable.Columns.Add("Operator")
datatable.Columns.Add("Customer")
datatable.Columns.Add("Date Created")
datatable.Columns.Add("Date Updated")
# use Xpath to parse data from rails, then add it to the DataTable.
doc = XmlDocument()
doc.LoadXml(responseText)
platesNode = doc.SelectNodes('//orders/order')
for plate in platesNode:
order_id = plate.SelectSingleNode('./order-id').InnerXml.ToString()
order_name = plate.SelectSingleNode('./order-name').InnerXml.ToString()
order_status = plate.SelectSingleNode('./order-stat').InnerXml.ToString()
production_method = plate.SelectSingleNode('./production-method').InnerXml.ToString()
operator = plate.SelectSingleNode('./operator').InnerXml.ToString()
customer = plate.SelectSingleNode('./customer').InnerXml.ToString()
created_at = plate.SelectSingleNode('./created-at').InnerXml.ToString()
updated_at = plate.SelectSingleNode('./updated-at ').InnerXml.ToString()
datatable.Rows.Add(order_id, order_name,order_status, production_method, operator,customer, created_at, updated_at)
return datatable
#This Code is launched from the Controller Software it requires the class in the file below
import clr
import sys
#append the sys path to the directory that contains your python scripts
sys.path.append("C:\\Program Files\\Agilent Technologies\\pyScripts")
import db
rs = db.RailsClient()
dataGrid1.DataSource = rs.loadData('http://shielded-fjord-4205.herokuapp.com/orders.xml')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment