def get(self): acct = self.request.get("acct") if acct == "": self.error(400) self.response.out.write("error: acct not provided") return key = self.request.get("xmlid") if key: link = XRD.get_link_by_key(key) if link == None: self.error(404) self.response.out.write("link not found for id: " + key) return else: links = [link] else: query = self.read_link_params() links = XRD.get_links(acct, query) logging.info(str(links)) xrd = XRD.make_XRD(links, acct) if self.request.get("suppress_response_type"): self.response.headers['Content-Type'] = 'text/html' else: self.response.headers['Content-Type'] = 'application/xrd+xml' self.response.out.write(xrd)
def put(self): acct = self.request.get("acct") if acct == "": self.error(400) self.response.out.write("error: acct not provided") return key = self.request.get("xmlid") if key: link = XRD.get_link_by_key(key) if link == None: self.error(404) self.response.out.write("link not found for id: " + key) return else: query = self.read_link_params() links = XRD.get_links(acct, query) if links == None or links.count() == 0: self.error(404) self.response.out.write("link not found") return elif links.count() > 1: self.error(400) self.response.out.write("more than one match found") return link = links[0] link.delete() newlink = XRD.parse_link(self.request.body) newlink.acct = acct newlink.put() xrd = XRD.make_XRD(XRD.get_links(acct), acct) if self.request.get("suppress_response_type"): self.response.headers['Content-Type'] = 'text/html' else: self.response.headers['Content-Type'] = 'application/xrd+xml' self.response.out.write(xrd)
def delete(self): acct = self.request.get("acct") if acct == "": self.error(400) self.response.out.write("error: acct not provided") return key = self.request.get("xmlid") if key: link = XRD.get_link_by_key(key) if link == None: self.error(404) self.response.out.write("link not found for id: " + key) return else: links = [link] else: query = self.read_link_params() links = XRD.get_links(acct, query) if links == None or links.count() == 0: self.error(404) self.response.out.write("error: link matching your params not found") return for link in links: link.delete() xrd = XRD.make_XRD(XRD.get_links(acct), acct) if self.request.get("suppress_response_type"): self.response.headers['Content-Type'] = 'text/html' else: self.response.headers['Content-Type'] = 'application/xrd+xml' self.response.out.write(xrd)