def updateLocalRecordRelations(self, jobItems): oidIdentifierMap = HashMap() for jobItem in jobItems: oidIdentifierMap.put(jobItem.get("oid"),jobItem.get("required_identifiers")[0].get("identifier")) for jobItem in jobItems: type = jobItem.get("type"); targetSystem = self.systemConfig.getString(None, "curation", "supported-types", type); if targetSystem == "redbox": oid = jobItem.get("oid") digitalObject = StorageUtils.getDigitalObject(self.services.getStorage(), oid) tfPackagePid = self.getPackageData(digitalObject) metadataJsonPayload = digitalObject.getPayload(tfPackagePid) metadataJsonInstream = metadataJsonPayload.open() metadataJson = JsonSimple(metadataJsonInstream) metadataJsonPayload.close() relationships = metadataJson.getArray("relationships") if relationships is not None: for relationship in relationships: system = relationship.get("system") if system != "redbox" or system != None: url = self.systemConfig.getString("can't find it", "curation","external-system-urls","get-oid-for-identifier",system) client = BasicHttpClient(url+ "&identifier="+relationship.get("identifier")) get = GetMethod(url+ "&identifier="+relationship.get("identifier")) client.executeMethod(get) if get.getStatusCode() == 200: response = JsonSimple(get.getResponseBodyAsString()) relationship.put("curatedPid",oidIdentifierMap.get(response.getString(None,"oid"))) relationship.put("isCurated",True) #Now update the relationship on Mint's side break istream = ByteArrayInputStream(String(metadataJson.toString(True)).getBytes()) StorageUtils.createOrUpdatePayload(digitalObject,tfPackagePid,istream)
def urlPost(self, url, postBody): try: client = BasicHttpClient(url) post = PostMethod(url) ####### # Which will work? #post.setRequestBody(postBody) post.addParameter("xml", postBody) ####### sharedSecret = self.doiConfig("sharedSecret") if (sharedSecret): apiKey = self.doiConfig("apiKey") if (apiKey is not None): client.authenticate(apiKey, sharedSecret) else: raise EnvironmentError("Cannot have shared secret without an api key") code = client.executeMethod(post) if str(code) == "302": locationHeader = post.getResponseHeader("location") if locationHeader is not None: redirectLocation = locationHeader.getValue() self.log.info("302 Redirection was requested: '{}'", redirectLocation) ##return self.urlPost(redirectLocation, postBody) body = str(post.getResponseBodyAsString()).strip() return (str(code), body) except Exception, e: self.log.error("Error during HTTP request: ", e) return (None, None)
def urlGet(self, url): try: client = BasicHttpClient(url) get = GetMethod(url) code = client.executeMethod(get) body = get.getResponseBodyAsString().strip() return (str(code), body) except Exception, e: self.log.error("Error during HTTP request: ", e) return (None, None)
def notifyExternalRelationship(self, relationship,pid,system,identifier): try: url = self.systemConfig.getString(None, "curation","external-system-urls","notify-curation",system) self.writer.println(url+ "&relationship=isCollectedBy&curatedPid="+pid+"&identifier="+relationship.get("identifier")+"&system="+self.systemConfig.getString(None,"system")+"&sourceIdentifier="+identifier) client = BasicHttpClient(url+ "&relationship=isCollectedBy&curatedPid="+pid+"&identifier="+relationship.get("identifier")+"&system="+self.systemConfig.getString(None,"system")+"&sourceIdentifier="+identifier) get = GetMethod(url+ "&relationship=isCollectedBy&curatedPid="+pid+"&identifier="+relationship.get("identifier")+"&system="+self.systemConfig.getString(None,"system")+"&sourceIdentifier="+identifier) client.executeMethod(get) status = get.getStatusCode() if status != 200: text = get.getStatusText() self.log.error(String.format("Error accessing ReDBox: %s %s",status, text)); return None; except Exception, ex: return None;
def __activate__(self, context): self.vc = context self.url = self.vc["formData"].get("url") self.method = self.vc["formData"].get("method") self.payload = self.vc["formData"].get("json") self.writer = self.vc["response"].getPrintWriter( "text/html; charset=UTF-8") self.client = BasicHttpClient(self.url) #response = self.process() responseMsg = "Hi" self.writer.println(responseMsg) self.writer.close()
def notifyExternalRelationship(self,relationship,pid,system,identifier): try: url = self.systemConfig.getString(None, "curation","external-system-urls","notify-curation",system) url = "http://localhost:9001/default/api/notifyCuration.script?apiKey=1412412412241" completeUrl = url+ "&relationship=isCollectorOf&curatedPid="+pid+"&identifier="+relationship.get("identifier")+"&system="+self.systemConfig.getString("redbox","system")+"&sourceIdentifier="+identifier self.writer.println("the completeUrl: "+ completeUrl) client = BasicHttpClient(completeUrl) get = GetMethod(completeUrl) client.executeMethod(get) status = get.getStatusCode() if status != 200: text = get.getStatusText() self.log.error(String.format("Error accessing Mint",status, text)); return None; except Exception, ex: return None;
def queryJobStatus(self, curationJob): relations = ArrayList() get = None try: url = self.systemConfig.getString(None, "curation","curation-manager-url") client = BasicHttpClient(url + "/job/"+ curationJob.getCurationJobId()) get = GetMethod(url+ "/job/"+ curationJob.getCurationJobId()) client.executeMethod(get) status = get.getStatusCode() if status != 200: text = get.getStatusText() self.log.error(String.format("Error accessing Curation Manager, status code '%d' returned with message: %s",status, text)); return None; except Exception, ex: return None;
def __activate__(self, context): self.vc = context responseType = "text/html; charset=UTF-8" responseMsg = "" func = self.vc("formData").get("func") if func == "placeName": try: placeName = self.vc("formData").get("q") url = "http://ws.geonames.org/searchJSON?fuzzy=0.7&q=" + placeName client = BasicHttpClient(url) get = GetMethod(url) statusInt = client.executeMethod(get) r = str(statusInt) json = JsonSimple(get.getResponseBodyAsString().strip()) for geoName in json.getJsonSimpleList("geonames"): responseMsg += "%s, %s|%s \n" % (geoName.getString(None, "name"), geoName.getString(None, "countryName"), geoName.getString(None, "geonameId")) except Exception, e: print "exception: ", str(e) r = str(e), None responseType = "text/plain; charset=UTF-8"
def urlPost(self, url, postBody): try: client = BasicHttpClient(url) post = PostMethod(url) ####### # Which will work? #post.setRequestBody(postBody) post.addParameter("xml", postBody) ####### code = client.executeMethod(post) if str(code) == "302": locationHeader = post.getResponseHeader("location"); if locationHeader is not None: redirectLocation = locationHeader.getValue(); self.log.info("302 Redirection was requested: '{}'", redirectLocation) ##return self.urlPost(redirectLocation, postBody) body = post.getResponseBodyAsString().strip() return (str(code), body) except Exception, e: self.log.error("Error during HTTP request: ", e) return (None, None)
def urlPost(self, url, postBody): try: client = BasicHttpClient(url) post = PostMethod(url) ####### # Which will work? #post.setRequestBody(postBody) post.addParameter("xml", postBody) ####### code = client.executeMethod(post) if str(code) == "302": locationHeader = post.getResponseHeader("location") if locationHeader is not None: redirectLocation = locationHeader.getValue() self.log.info("302 Redirection was requested: '{}'", redirectLocation) ##return self.urlPost(redirectLocation, postBody) body = post.getResponseBodyAsString().strip() return (str(code), body) except Exception, e: self.log.error("Error during HTTP request: ", e) return (None, None)
def __activate__(self, context): self.vc = context self.url = self.vc["formData"].get("url") self.method = self.vc["formData"].get("method") self.payload = self.vc["formData"].get("json") self.writer = self.vc["response"].getPrintWriter("text/html; charset=UTF-8") self.client = BasicHttpClient(self.url) #response = self.process() responseMsg = "Hi" self.writer.println(responseMsg) self.writer.close()
def queryJobStatus(self, curationJob): relations = ArrayList() get = None try: url = self.systemConfig.getString(None, "curation", "curation-manager-url") client = BasicHttpClient(url + "/job/" + curationJob.getCurationJobId()) get = GetMethod(url + "/job/" + curationJob.getCurationJobId()) client.executeMethod(get) status = get.getStatusCode() if status != 200: text = get.getStatusText() self.log.error( String.format( "Error accessing Curation Manager, status code '%d' returned with message: %s", status, text)) return None except Exception, ex: return None
def notifyExternalRelationship(self, relationship, pid, system, identifier): try: url = self.systemConfig.getString(None, "curation", "external-system-urls", "notify-curation", system) url = "http://localhost:9001/default/api/notifyCuration.script?apiKey=1412412412241" completeUrl = url + "&relationship=isCollectorOf&curatedPid=" + pid + "&identifier=" + relationship.get( "identifier") + "&system=" + self.systemConfig.getString( "redbox", "system") + "&sourceIdentifier=" + identifier self.writer.println("the completeUrl: " + completeUrl) client = BasicHttpClient(completeUrl) get = GetMethod(completeUrl) client.executeMethod(get) status = get.getStatusCode() if status != 200: text = get.getStatusText() self.log.error( String.format("Error accessing Mint", status, text)) return None except Exception, ex: return None
def __activate__(self, context): self.vc = context responseType = "text/html; charset=UTF-8" responseMsg = "" func = self.vc("formData").get("func") if func == "placeName": try: placeName = self.vc("formData").get("q") url = "http://ws.geonames.org/searchJSON?fuzzy=0.7&q=" + placeName client = BasicHttpClient(url) get = GetMethod(url) statusInt = client.executeMethod(get) r = str(statusInt) json = JsonSimple(get.getResponseBodyAsString().strip()) for geoName in json.getJsonSimpleList("geonames"): responseMsg += "%s, %s|%s \n" % (geoName.getString( None, "name"), geoName.getString(None, "countryName"), geoName.getString( None, "geonameId")) except Exception, e: print "exception: ", str(e) r = str(e), None responseType = "text/plain; charset=UTF-8"
class AnotarProxyData: def __init__(self): pass def __activate__(self, context): self.vc = context self.url = self.vc["formData"].get("url") self.method = self.vc["formData"].get("method") self.payload = self.vc["formData"].get("json") self.writer = self.vc["response"].getPrintWriter( "text/html; charset=UTF-8") self.client = BasicHttpClient(self.url) #response = self.process() responseMsg = "Hi" self.writer.println(responseMsg) self.writer.close() def process(self): print "***** " + self.method switch = { "DELETE": self.__delete, "GET": self.__get, "POST": self.__post, "PUT": self.__put } status, reply = switch.get(self.method)() if status.startswith("2"): json = reply[:-1] + ', "status":"%s"}' % status return json else: return "{\"status\": \"" + status + "\"}" def __get(self): try: get = GetMethod(self.url) statusInt = self.client.executeMethod(get) r = str(statusInt), get.getResponseBodyAsString().strip() except Exception, e: r = str(e), None return r
class AnotarProxyData: def __init__(self): pass def __activate__(self, context): self.vc = context self.url = self.vc["formData"].get("url") self.method = self.vc["formData"].get("method") self.payload = self.vc["formData"].get("json") self.writer = self.vc["response"].getPrintWriter("text/html; charset=UTF-8") self.client = BasicHttpClient(self.url) #response = self.process() responseMsg = "Hi" self.writer.println(responseMsg) self.writer.close() def process(self): print "***** " + self.method switch = { "DELETE" : self.__delete, "GET" : self.__get, "POST" : self.__post, "PUT" : self.__put } status, reply = switch.get(self.method)() if status.startswith("2"): json = reply[:-1] + ', "status":"%s"}' % status return json else: return "{\"status\": \""+status+"\"}" def __get(self): try: get = GetMethod(self.url) statusInt = self.client.executeMethod(get) r = str(statusInt), get.getResponseBodyAsString().strip() except Exception, e: r = str(e), None return r
def __wget(self, url): client = BasicHttpClient(url) m = GetMethod(url) client.executeMethod(m) return IOUtils.toString(m.getResponseBodyAsStream(), "UTF-8")