class CMIS::Document

Public Class Methods

new(raw, repository) click to toggle source
Calls superclass method
# File lib/cmis/document.rb, line 3
def initialize(raw, repository)
  super
  cmis_properties %w( cmis:isImmutable cmis:isLatestVersion
                      cmis:isMajorVersion cmis:isLatestMajorVersion
                      cmis:isPrivateWorkingCopy cmis:versionLabel
                      cmis:versionSeriesId cmis:isVersionSeriesCheckedOut
                      cmis:versionSeriesCheckedOutBy
                      cmis:versionSeriesCheckedOutId cmis:checkinComment
                      cmis:contentStreamLength cmis:contentStreamMimeType
                      cmis:contentStreamFileName cmis:contentStreamId )
end

Public Instance Methods

content(opts = {}) click to toggle source
# File lib/cmis/document.rb, line 47
def content(opts = {})
  if detached?
    @local_content
  else
    server.execute!({ cmisselector: 'content',
                      repositoryId: repository.id,
                      objectId: cmis_object_id }, opts)
  end
rescue Exceptions::Constraint => e
  if e.message =~ /no content stream/
    nil
  else
    raise e
  end
end
content=(opts = {}) click to toggle source
# File lib/cmis/document.rb, line 71
def content=(opts = {})
  opts = opts.symbolize_keys
  content = { stream: opts.delete(:stream),
              mime_type: opts.delete(:mime_type),
              filename: opts.delete(:filename) }

  if content[:stream].is_a? String
    content[:stream] = StringIO.new(content[:stream])
  end

  if detached?
    @local_content = content
  else
    with_change_token do
      server.execute!({ cmisaction: 'setContent',
                        repositoryId: repository.id,
                        objectId: cmis_object_id,
                        content: content,
                        changeToken: change_token }, opts)
    end
  end
end
content?() click to toggle source
# File lib/cmis/document.rb, line 43
def content?
  !content_stream_length.nil?
end
content_url(query_params = {}) click to toggle source
# File lib/cmis/document.rb, line 63
def content_url(query_params = {})
  root_folder_url = server.connection.send(:infer_url, repository.id, true)
  content_url = "#{root_folder_url}?cmisselector=content&objectId=#{cmis_object_id}"
  query = query_params.map { |k, v| "#{k}=#{v}" }.join('&')
  content_url << "&#{query}" unless query.empty?
  content_url
end
copy_in_folder(folder, opts = {}) click to toggle source
# File lib/cmis/document.rb, line 34
def copy_in_folder(folder, opts = {})
  id = server.execute!({ cmisaction: 'createDocument',
                         repositoryId: repository.id,
                         sourceId: cmis_object_id,
                         objectId: folder.cmis_object_id }, opts)

  repository.object(id)
end
create_in_folder(folder, opts = {}) click to toggle source
# File lib/cmis/document.rb, line 15
def create_in_folder(folder, opts = {})
  r = server.execute!({ cmisaction: 'createDocument',
                        repositoryId: repository.id,
                        properties: properties,
                        objectId: folder.cmis_object_id,
                        folderId: folder.cmis_object_id,
                        content: @local_content }, opts)

  ObjectFactory.create(r, repository)
end
create_unfiled(opts = {}) click to toggle source
# File lib/cmis/document.rb, line 26
def create_unfiled(opts = {})
  r = server.execute!({ cmisaction: 'createDocument',
                        repositoryId: repository.id,
                        properties: properties,
                        content: @local_content }, opts)
  ObjectFactory.create(r, repository)
end