Mercurial > repos > pieterlukasse > nist_wrapper
diff nist_controller.py @ 0:cce6989ed423
new NIST wrapper demo tools
author | pieter.lukasse@wur.nl |
---|---|
date | Thu, 22 Jan 2015 16:14:57 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nist_controller.py Thu Jan 22 16:14:57 2015 +0100 @@ -0,0 +1,54 @@ +""" +Controller for integration with NIST data. + +Place this in: <galaxy_home>/lib/galaxy/webapps/galaxy/controllers +and then it can be accessed via URL: + + http://<galaxy_url>/nist_controller/get_nistdata + e.g. + http://dev1.ab.wurnet.nl:8088/nist_controller/get_nistdata + +""" + +import urllib2 +from galaxy.web.base.controller import BaseUIController, url_for, error, web + + +class NistController( BaseUIController ): + """ + Provides some services for the NIST html report + """ + + @web.expose + def get_nistdata( self, trans, casnr=None ): + """ + Generate a redirect to NIST webbook web app + casNr example: "C537268" + + """ + + nist_response = _fire_query_and_return_content("http://webbook.nist.gov/cgi/cbook.cgi?JCAMP="+ casnr + "&Index=0&Type=Mass") + peak_table = nist_response.split("##PEAK TABLE=(XY..XY)")[1].split("##END=")[0] + peak_table = peak_table.replace("\n", " ").strip() + return peak_table + + + + + +def _fire_query_and_return_content(url): + ''' + This method will fire the HTTP call and + return the results + ''' + + try: + data = urllib2.urlopen(url).read() + + return data + + except urllib2.HTTPError, e: + raise Exception( "HTTP error for URL: " + url + " : %s - " % e.code + e.reason) + except urllib2.URLError, e: + raise Exception( "Network error: %s" % e.reason.args[1] + ". Error accessing remote service [" + url + "] ") + \ No newline at end of file