X-Git-Url: http://andersk.mit.edu/gitweb/jira-zephyrbot.git/blobdiff_plain/b9916fe5530f86c7f61bb92915d08cf8d46a2553..a41187bdd525d10fd5a5e1c3b2524736eb761480:/jirabot.py diff --git a/jirabot.py b/jirabot.py index bf05517..45eeb4d 100644 --- a/jirabot.py +++ b/jirabot.py @@ -1,6 +1,7 @@ import zephyr import feedparser import pycurl +from BeautifulSoup import BeautifulSoup """Screen scrapes jira.mit.edu. Supposedly. Doesn't actually work yet. @@ -30,6 +31,27 @@ class Browser(object): self.lastResult = '' c.perform() return self.lastResult + def getPage(self, url): + return Page(url, self.get(url), self) + +class Page(object): + def __init__(self, url, contents, browser): + self.url = url + self.soup = BeautifulSoup(contents) + self.browser = browser + def submitForm(self, name, args ={}): + form = self.soup.find(name='form', attrs={"name": name}) + if form == None: return False + dest = form.get('action', self.url) + # this has a lot of edge-cases that don't work + inputs = form.findAll(name='input') + vals = {} + for input in inputs: + vals[input[name]] = input[value] + for k,v in args.items(): + vals[k] = v + return self.browser.getPage() + b = Browser( SSLCERT = "cert.pem", @@ -37,10 +59,14 @@ b = Browser( SSL_VERIFYPEER = 0, COOKIEJAR = "jirabot.cookie", FOLLOWLOCATION = 1, + AUTOREFERER = 1, + HTTPHEADER = ["Accept-Language: en-us,en;q=0.5"], ) b.get("https://jira.mit.edu/jira/secure/Dashboard.jspa") -print b.get("https://jira.mit.edu/jira/secure/mit_login.jsp?os_destination=/secure/Dashboard.jspa") +page = b.getPage("https://jira.mit.edu/jira/secure/mit_login.jsp?os_destination=/secure/Dashboard.jspa") + +print page.submitForm('wayfForm1') #c.setopt(c.URL, "https://jira.mit.edu/jira/sr/jira.issueviews:searchrequest-rss/temp/SearchRequest.xml?&pid=10185&updated%3Aprevious=-1w&sorter/field=updated&sorter/order=DESC&tempMax=1000")