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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
    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()
Exemplo n.º 7
0
    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;
Exemplo n.º 8
0
    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;
Exemplo n.º 9
0
    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"
Exemplo n.º 10
0
 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)
Exemplo n.º 11
0
 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)
Exemplo n.º 12
0
    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()
Exemplo n.º 13
0
    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
Exemplo n.º 14
0
    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
Exemplo n.º 15
0
    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"
Exemplo n.º 16
0
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
Exemplo n.º 17
0
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
Exemplo n.º 18
0
 def __wget(self, url):
     client = BasicHttpClient(url)
     m = GetMethod(url)
     client.executeMethod(m)
     return IOUtils.toString(m.getResponseBodyAsStream(), "UTF-8")
Exemplo n.º 19
0
 def __wget(self, url):
     client = BasicHttpClient(url)
     m = GetMethod(url)
     client.executeMethod(m)
     return IOUtils.toString(m.getResponseBodyAsStream(), "UTF-8")