Class: Alfresco4r::DocumentUpload

Inherits:
AbstractAlfrescoService show all
Defined in:
lib/alfresco4r/document_upload.rb

Constant Summary collapse

EXPECTED_PARAMS =
[:siteid,:containerid,:uploaddirectory,:mime_type,:full_file_name,:filedata,:upload_url]

Constants inherited from AbstractAlfrescoService

AbstractAlfrescoService::BOUNDARY

Instance Attribute Summary

Attributes inherited from AbstractAlfrescoService

#http, #options, #request, #uri

Instance Method Summary collapse

Methods inherited from AbstractAlfrescoService

#containerid, #filedata, #full_file_name, #get_object, #mime_type, #node, #post_object, #siteid, #uploaddirectory

Constructor Details

#initialize(options) ⇒ DocumentUpload

Returns a new instance of DocumentUpload.



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/alfresco4r/document_upload.rb', line 16

def initialize(options)
  @options = options
  return verify_params if verify_params.kind_of?(Alfresco4r::AlfError)
  @siteid = siteid
  @containerid = containerid
  @uploaddirectory = uploaddirectory
  @filedata = filedata
  @mime_type = mime_type
  @full_file_name = full_file_name
  @form_params = Array.new
  super
  upload_document
end

Instance Method Details

#encode_file_dataObject



56
57
58
59
# File 'lib/alfresco4r/document_upload.rb', line 56

def encode_file_data
  @form_params << ("\r\nContent-Disposition: form-data; name=\"filedata\"; filename=\"#{full_file_name}\"\r\n" + "Content-Transfer-Encoding: binary\r\n" + "Content-Type:" + "#{mime_type}" + "\r\n\r\n" + filedata + "\r\n")
  @form_params << "--" + BOUNDARY + "--"
end

#encode_form_dataObject



45
46
47
48
49
50
51
52
53
54
# File 'lib/alfresco4r/document_upload.rb', line 45

def encode_form_data
  parameters = { 'siteid' => siteid, 'containerid' => containerid, 'uploaddirectory' => uploaddirectory }
  parameters.each do |key, value|
    unless value.empty?
      @form_params << "--" + BOUNDARY + "\r\n"
      @form_params << "Content-Disposition: form-data; name=\"#{key}\"\r\n" + "\r\n" + "#{value}\r\n"
    end
  end
  @form_params << "--" + BOUNDARY
end

#responseObject



84
85
86
# File 'lib/alfresco4r/document_upload.rb', line 84

def response
  return @res_obj
end

#upload_documentObject



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/alfresco4r/document_upload.rb', line 63

def upload_document
  begin
    encode_form_data
    encode_file_data
    @request.body= @form_params.join
    @request["Content-Length"] = @request.body.length
    @request["Content-Type"] = "multipart/form-data, boundary=" + BOUNDARY
    res = Net::HTTP.new(@uri.host, @uri.port).start {|http| http.request(@request) }
    case res
    when Net::HTTPSuccess, Net::HTTPRedirection
      json_obj = JSON.parse(res.body)
      @res_obj = Alfresco4r::AlfSucess.new(json_obj["nodeRef"],json_obj["fileName"],json_obj["status"]["description"])
    else
      @res_obj = Alfresco4r::AlfError.new("Exception in response body #{res.inspect}")
    end
  rescue => e
    @res_obj = Alfresco4r::AlfUnknownException.new(e.message)
  end

end

#verify_paramsObject



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/alfresco4r/document_upload.rb', line 30

def verify_params
  begin
    raise "Empty Parameter"  if @options.empty?
    missing_params = EXPECTED_PARAMS - @options.keys
    unless missing_params.empty?
      msg = "Expected paramerter #{missing_params} are missing. Expected parameters are siteid,containerid,uploaddirectory,mime_type,full_file_name,filedata."
      raise "#{msg}"
    end
  rescue => e
    @res_obj = Alfresco4r::AlfError.new(e.message)
  end
end