예제 #1
0
  def read_file(self, object_tree_folder, path, size, offset):
    log.debug(
      u'read_file: {0}, {1}, {2}'.
      format(util.string_from_path_elements(path), size, offset)
    )

    return self._read_file(object_tree_folder, path, size, offset)
예제 #2
0
  def read_file(self, object_tree_root, path, size, offset):
    log.debug(
      u'read_file: {0}, {1}, {2}'.
      format(util.string_from_path_elements(path), size, offset)
    )

    try:
      object_tree_folder = self._object_tree.get_folder(path, object_tree_root)
    except ONEDriveException:
      pass
    else:
      if len(path) > 0:
        if path[-1] == object_tree_folder.get_help_name():
          return self._getFolderHelp(object_tree_folder, size, offset)
          #return object_tree_folder.get_help_text(size, offset)
      raise onedrive_exceptions.PathException(u'Invalid file')

    object_tree_path, root_name, controlled_path = self._split_path_by_reserved_name(
      path
    )

    try:
      object_tree_folder = self._object_tree.get_folder(
        object_tree_path, object_tree_root
      )
    except ONEDriveException:
      raise onedrive_exceptions.PathException(u'Invalid folder')

    if self._is_readme_file([root_name]):
      return self._generate_readme_text(object_tree_path)[offset:offset + size]

    return self._resolvers[root_name].read_file(
      object_tree_folder, controlled_path, size, offset
    )
예제 #3
0
 def get_directory(self, object_tree_root, path):
     log.debug(u'get_directory: {0}'.format(
         util.string_from_path_elements(path)))
     if not path:
         return self._get_directory(object_tree_root, path)
     return self._resource_map_resolver.get_directory(
         object_tree_root, path)
예제 #4
0
 def read_file(self, object_tree_root, path, size, offset):
     log.debug(u'read_file: {0}, {1}, {2}'.format(
         util.string_from_path_elements(path), size, offset))
     if self._is_readme_file(path):
         return self._get_readme_text(size, offset)
     self._object_tree.add_object_to_cache(path[-1])
     return self._resource_map_resolver.read_file(object_tree_root, path,
                                                  size, offset)
예제 #5
0
    def get_directory(self, object_tree_folder, path):
        log.debug(u'get_directory: {0}'.format(
            util.string_from_path_elements(path)))

        if len(path) <= 2:
            return self._get_directory(object_tree_folder, path)

        return self._resource_map_resolver.get_directory(path[2:])
예제 #6
0
 def read_file(self, object_tree_folder, path, size, offset):
     log.debug(u'read_file: {0}, {1}, {2}'.format(
         util.string_from_path_elements(path), size, offset))
     if self._is_readme_file(path):
         return self._get_readme_text(size, offset)
     if len(path) <= 2:
         raise onedrive_exceptions.PathException(u'Invalid file')
     return self._resource_map_resolver.read_file(path[2:], size, offset)
예제 #7
0
 def get_attributes(self, object_tree_root, path):
     log.debug(u'get_attributes: {0}'.format(
         util.string_from_path_elements(path)))
     if not path:
         return attributes.Attributes(is_dir=True)
     if self._is_readme_file(path):
         return self._get_readme_file_attributes()
     return self._resource_map_resolver.get_attributes(
         object_tree_root, path)
예제 #8
0
 def get_directory(self, object_tree_root, path):
     log.debug(u'get_directory: {0}'.format(
         util.string_from_path_elements(path)))
     if not path:
         return [self._get_readme_filename()] \
           + self._object_tree._get_individually_synced_object_pids()
     else:
         self._object_tree.add_object_to_cache(path[-1])
         return self._resource_map_resolver.get_directory(
             object_tree_root, path)
예제 #9
0
 def read_file(self, object_tree_root, path, size, offset):
     log.debug(u'read_file: {0}, {1}, {2}'.format(
         util.string_from_path_elements(path), size, offset))
     if self._is_readme_file(path):
         return self._get_readme_text(size, offset)
     if len(path) > 1 and self._is_resource_map(path[0]):
         return self._d1_object_resolver.read_file(object_tree_root,
                                                   path[1:], size, offset)
     return self._d1_object_resolver.read_file(object_tree_root, path, size,
                                               offset)
예제 #10
0
  def get_attributes(self, object_tree_root, path):
    log.debug(
      u'get_attributes: {0}'.format(util.string_from_path_elements(path))
    )

    # All items rendered by the ObjectTree Resolver are folders. Anything else is
    # deferred to one of the child resolvers.

    # To determine where the path transitions from the object_tree to the
    # controlled hierarchy, we check for the controlled hierarchy root names.
    # This means that those names are reserved. They can not be used as
    # object_tree folder names by the user.

    try:
      object_tree_folder = self._object_tree.get_folder(path, object_tree_root)
    except ONEDriveException:
      pass
    else:
      return attributes.Attributes(is_dir=True)

      #if len(path) > 0:
      #  if path[-1] == self._get_help_name():
      #    return attributes.Attributes(size=self._folderHelpSize(object_tree_folder),
      #                                 is_dir=False)

      # If the path is not to a object_tree folder root, a valid path must go to a
      # controlled hierarchy root or subfolder THROUGH a object_tree folder root. In
      # that case, the first path element that matches the reserved name of one of
      # the controlled hierarchy roots becomes the separator between the two
      # sections and determines which resolver to use for the tail section of the
      # path.
    object_tree_path, root_name, controlled_path = self._split_path_by_reserved_name(
      path
    )

    # If the object_tree_path is not valid now and is not the readme file, then
    # the path is invalid.
    try:
      object_tree_folder = self._object_tree.get_folder(
        object_tree_path, object_tree_root
      )
    except ONEDriveException:
      raise onedrive_exceptions.PathException(u'Invalid folder')

    if self._is_readme_file([root_name]):
      return self._get_readme_file_attributes(object_tree_path)

    # Now have all information required for gathering information about all the
    # objects in the object_tree folder and dispatching to a controlled hierarchy
    # resolver.
    #object_tree_folder = ObjectTreeFolderObjects(self._object_tree, object_tree_folder)
    return self._resolvers[root_name].get_attributes(
      object_tree_folder, controlled_path
    )
예제 #11
0
    def get_attributes(self, object_tree_folder, path):
        log.debug(u'get_attributes: {0}'.format(
            util.string_from_path_elements(path)))
        if self._is_readme_file(path):
            return self._get_readme_file_attributes()

        if len(path) <= 2:
            return self._get_attributes(path)

        return self._resource_map_resolver.get_attributes(
            object_tree_folder, path[2:])
예제 #12
0
  def get_directory(self, object_tree_root, path, preconfigured_query=None):
    # the directory will typically be in the cache. already retrieved by
    # get_attributes, since get_attributes() needs to know how many items
    # there are in the directory, in order to return that count.
    log.debug(
      u'get_directory: {0}'.format(util.string_from_path_elements(path))
    )

    # To determine where the path transitions from the object_tree to the
    # controlled hierarchy, we check for the controlled hierarchy root names.
    # This means that those names are reserved. They can not be used as
    # object_tree folder names by the user.

    try:
      object_tree_folder = self._object_tree.get_folder(path, object_tree_root)
    except ONEDriveException:
      pass
    else:
      res = self._resolve_object_tree_folder(object_tree_folder)
      # All object_tree folders have a readme.
      res.append(self._get_readme_filename())
      return res

    # If the path is not to a object_tree folder root, a valid path must go to a
    # controlled hierarchy root or subfolder THROUGH a object_tree folder root. In
    # that case, the first path element that matches the reserved name of one of
    # the controlled hierarchy roots becomes the separator between the two
    # sections and determines which resolver to use for the tail section of the
    # path.
    object_tree_path, root_name, controlled_path = self._split_path_by_reserved_name(
      path
    )

    # If the object_tree_path is not valid now, then the path is invalid.
    try:
      object_tree_folder = self._object_tree.get_folder(
        object_tree_path, object_tree_root
      )
    except ONEDriveException:
      raise onedrive_exceptions.PathException(u'Invalid folder')

    log.debug('controlled path: {0}'.format(controlled_path))
    #log.debug('object_tree folder: {0}'.format(object_tree_folder))

    # Now have all information required for gathering information about all the
    # objects in the object_tree folder and dispatching to a controlled hierarchy
    # resolver.
    return self._resolvers[root_name].get_directory(
      object_tree_folder, controlled_path
    )
예제 #13
0
 def get_directory(self, object_tree_root, path):
     log.debug(u'get_directory: {0}'.format(
         util.string_from_path_elements(path)))
     is_resource_map = self._is_resource_map(path[0])
     if not is_resource_map:
         return self._d1_object_resolver.get_directory(
             object_tree_root, path)
     if len(path) > 1:
         if is_resource_map:
             return self._d1_object_resolver.get_directory(
                 object_tree_root, path[1:])
         else:
             return self._d1_object_resolver.get_directory(
                 object_tree_root, path)
     return self._get_directory(object_tree_root, path)
예제 #14
0
 def get_attributes(self, object_tree_root, path):
     log.debug(u'get_attributes: {0}'.format(
         util.string_from_path_elements(path)))
     if self._is_readme_file(path):
         return self._get_readme_file_attributes()
     is_resource_map = self._is_resource_map(path[0])
     if not is_resource_map:
         return self._d1_object_resolver.get_attributes(
             object_tree_root, path)
     if len(path) > 1:
         if is_resource_map:
             return self._d1_object_resolver.get_attributes(
                 object_tree_root, path[1:])
         else:
             return self._d1_object_resolver.get_attributes(
                 object_tree_root, path)
     return self._get_attributes(object_tree_root, path)
예제 #15
0
  def get_directory(self, object_tree_folder, path):
    log.debug(
      u'get_directory: {0}'.format(util.string_from_path_elements(path))
    )

    return self._get_directory(object_tree_folder, path)
예제 #16
0
  def get_attributes(self, object_tree_folder, path):
    log.debug(
      u'get_attributes: {0}'.format(util.string_from_path_elements(path))
    )

    return self._get_attributes(object_tree_folder, path)