docs: def get_object(self, resource_url):
          """Get remote resource information. Creates a local directory for the
          resource if this is the first access to the resource. Downloads the
          resource Json representation and writes it into a .json file in the
          cache directory.
  
          Raises ValueError if resource is not cached and does not exist. If the
          resource no longer exists on the server but in the local cache, a
          reference to the local copy is returned and the value of the is_active
          flag is False.
  
          Parameters
          ----------
          cache_id : string
              Unique cache identifier
          resource_url : string
              Url of the resource
  
          Returns
          -------
          (string, Json, Boolean, string)
              Returns a 4-tuple containing local resource directory, the Json
              object representing the resource, an active flag indicating if
              the resource still exists on the remote server or only in the local
              cache, and the resource unique cache identifier.
          """
          # Check if resource is in local cache. If not, create a new cache
          # identifier and set is_cached flag to false
          if resource_url in self.cache:
              cache_id = self.cache[resource_url]
          else:
              cache_id = str(uuid.uuid4())
          # The local cahce directory for resource is given by cache identifier
          obj_dir = os.path.join(self.directory, cache_id)
          # File for local copy of object's Json representation
          f_json = os.path.join(obj_dir, '.json')
          # Object active flag
          is_active = True
          # Read the remote resource representation
          try:
              obj_json = sco.JsonResource(resource_url).json
              # Save local copy of Json object. Create local resource directory if
              # it doesn't exist
              if not os.path.isdir(obj_dir):
                  os.mkdir(obj_dir)
              with open(f_json, 'w') as f:
                  json.dump(obj_json, f)
          except ValueError as ex:
              # If the resource does not exists but we have a local copy then read
              # object from local disk. Set is_active flag to false. Raise
              # ValueError if no local copy exists
              if os.path.isfile(f_json):
                  with open(f_json, 'r') as f:
                      obj_json = json.load(f)
                  is_active = False
              else:
                  raise ex
          # Return object directory, Json, active flag, and cache identifier
          return obj_dir, obj_json, is_active, cache_id