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 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 post(self): acct = self.request.get("acct") if acct == "": self.error(400) self.response.out.write("error: acct not provided") return type = self.request.headers['Content-Type'] if type == "application/x-www-form-urlencoded": logging.info("formencoded") params = self.read_link_params(True); logging.info("link params: " + str(params)) if params == None: # error already sent by get_link() return link = XRD.new_link(params) else: link = XRD.parse_link(self.request.body) if link == None: self.error(400) self.response.out.write("error: could not parse a link from request body") return link.acct = acct existing = XRD.get_link(acct, link.rel, link.type, link.href, link.template) if existing: # conflict self.error(409) self.response.out.write("error: a link with the same rel, type, href/template already exists") return link.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)
def get(self): acct = self.request.get("acct") if acct == None: self.error(400) return links = XRD.get_links(acct) xrd = XRD.make_XRD(links, acct) # self.response.headers['Content-Type'] = 'application/xrd+xml' self.response.out.write(xrd)