コード例 #1
0
    def _register_one(self, resource: Resource, schema_id: str) -> None:
        context = self.model_context or self.context
        data = as_jsonld(resource,
                         "compacted",
                         False,
                         model_context=context,
                         metadata_context=None,
                         context_resolver=self.service.resolve_context,
                         na=nan)

        try:
            schema = quote_plus(schema_id) if schema_id else "_"
            url_base = f"{self.service.url_resources}/{schema}"
            url = f"{url_base}/{quote_plus(data['@id'])}" if hasattr(
                data, "@id") else url_base
            params_register = copy.deepcopy(
                self.service.params.get("register", None))
            response = requests.post(url,
                                     headers=self.service.headers,
                                     data=json.dumps(data, ensure_ascii=True),
                                     params=params_register)
            response.raise_for_status()

        except nexus.HTTPError as e:
            raise RegistrationError(_error_message(e))
        else:
            response_json = response.json()
            resource.id = response_json['@id']
            # If resource had no context, update it with the one provided by the store.
            if not hasattr(resource, "context"):
                resource.context = data["@context"]
            self.service.sync_metadata(resource, response_json)
コード例 #2
0
 def _register_one(self, resource: Resource, schema_id: str) -> None:
     context = self.model_context or self.context
     data = as_jsonld(resource,
                      "compacted",
                      False,
                      model_context=context,
                      metadata_context=None,
                      context_resolver=self.service.resolve_context)
     try:
         response = nexus.resources.create(org_label=self.organisation,
                                           project_label=self.project,
                                           data=data,
                                           schema_id=schema_id)
     except nexus.HTTPError as e:
         raise RegistrationError(_error_message(e))
     else:
         resource.id = response['@id']
         # If resource had no context, update it with the one provided by the store.
         if not hasattr(resource, "context"):
             resource.context = data["@context"]
         self.service.sync_metadata(resource, response)