class SharepointApi::FileInfo

Constants

FILE_SELECT_QUERY

Get just enough data to build a FileInfo object that suports to_h

FILE_SELECT_QUERY_WITH_VERSIONS

Get all data required to build a FileInfo object without subsequent API calls.

Attributes

file[R]
updated_at[R]
version[R]
version_id[R]

Public Class Methods

new(file) click to toggle source
# File lib/sharepoint_api/file_info.rb, line 42
def initialize(file)
  @version = file.major_version
  @version_id = SharepointApi::VersionConverter.to_ui(file.major_version)
  @updated_at = Time.parse(file.time_last_modified)
  @file = file
end
wrap(sharepoint_file) click to toggle source
# File lib/sharepoint_api/file_info.rb, line 36
def self.wrap(sharepoint_file)
  return nil unless sharepoint_file

  new(sharepoint_file)
end

Public Instance Methods

list_item_id() click to toggle source
# File lib/sharepoint_api/file_info.rb, line 49
def list_item_id
  @list_item_id ||= file.list_item_all_fields.id
end
to_h() click to toggle source
# File lib/sharepoint_api/file_info.rb, line 79
def to_h
  { version: version, version_id: version_id, name: name, list_item_id: list_item_id }
end
versions() click to toggle source
# File lib/sharepoint_api/file_info.rb, line 53
def versions
  return @all_versions if @all_versions

  @all_versions = []

  @all_versions << make_version_object(
    version_id,
    created_at: updated_at,
    current: true,
    creator_login: safe_modified_by(file)&.login_name
  )

  return @all_versions unless version > 1

  @all_versions += file.versions.map do |file_version|
    make_version_object(
      file_version.id,
      created_at: Time.parse(file_version.created),
      current: file_version.is_current_version,
      creator_login: safe_created_by(file_version)&.login_name
    )
  end

  @all_versions = @all_versions.sort_by(&:number)
end

Private Instance Methods

make_version_object(version_id, **attrs) click to toggle source
# File lib/sharepoint_api/file_info.rb, line 87
def make_version_object(version_id, **attrs)
  OpenStruct.new(
    number: SharepointApi::VersionConverter.to_major(version_id),
    version_id: version_id,
    **attrs
  )
end
safe_created_by(file_version) click to toggle source
# File lib/sharepoint_api/file_info.rb, line 103
def safe_created_by(file_version)
  return file_version.creator if file_version.data['CreatedBy']['__deferred']
  return file_version.created_by if file_version.data['CreatedBy']['__metadata']

  nil
rescue Sharepoint::SPException => e
  return nil if e.message =~ /User cannot be found/

  raise(FileInfoError, e.message)
end
safe_modified_by(file) click to toggle source
# File lib/sharepoint_api/file_info.rb, line 95
def safe_modified_by(file)
  file.modified_by
rescue Sharepoint::SPException => e
  return nil if e.message =~ /User cannot be found/

  raise(FileInfoError, e.message)
end