From 4c6799b9eb06b1214d8aab6de0fcc9b0fe35645f Mon Sep 17 00:00:00 2001
From: Matheus Agio Nerone <man13@inf.ufpr.br>
Date: Mon, 16 Nov 2015 14:04:06 -0200
Subject: [PATCH] basic upload

Signed-off-by: Matheus Agio Nerone <man13@inf.ufpr.br>
---
 app/controllers/learning_objects_controller.rb | 12 +++++++++++-
 app/models/learning_object.rb                  |  2 +-
 app/views/learning_objects/_form.html.erb      |  1 +
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb
index 70ab3301..dd94665f 100644
--- a/app/controllers/learning_objects_controller.rb
+++ b/app/controllers/learning_objects_controller.rb
@@ -33,6 +33,7 @@ class LearningObjectsController < ApplicationController
     collection_struct = Struct.new(:id)
     collection = collection_struct.new('4')
     repo = Dspace::Client.instance.repository.collection_repository
+    strategy = DSpaceRest::Strategies::Uploads::CurlStrategy.new(repo.rest_client.url,repo.rest_client.options[:headers][:rest_dspace_token])
 
     args = {}
     args['name'] = learning_object_params[:name]
@@ -58,6 +59,12 @@ class LearningObjectsController < ApplicationController
     learning_object_params[:subjects].each do |subject|
       subjects << subject_repository.find_by_name(subject)
     end
+    file = learning_object_params[:file]
+    learning_object_params[:file] = nil
+
+    repo = Dspace::Client.instance.repository.item_repository
+    bitstream_response = repo.create_bitstream_for(response, file.tempfile.path, strategy)
+
     @learning_object = LearningObject.new(learning_object_params)
     @learning_object.id_dspace = response.id
     @learning_object.subjects = subjects
@@ -65,9 +72,12 @@ class LearningObjectsController < ApplicationController
     @learning_object.last_modified = Time.now
     @learning_object.publisher = current_user
     @learning_object.metadata = lo.to_h[:metadata]
+    @learning_object.bitstreams = []
+    @learning_object.bitstreams << bitstream_response.as_json
+
     respond_to do |format|
       if learning_object_repository.create @learning_object
-        learning_object_repository.create_relations(@learning_object)
+        learning_object_repository.create_relations @learning_object
         format.html { redirect_to me_users_path, notice: 'Learning object was successfully created.' }
       else
         format.html { render :new }
diff --git a/app/models/learning_object.rb b/app/models/learning_object.rb
index c0ef0f7b..70e4a235 100644
--- a/app/models/learning_object.rb
+++ b/app/models/learning_object.rb
@@ -7,7 +7,7 @@ class LearningObject
                 :type, :grade_level, :bitstreams, :metadata, :likes, :views,
                 :downloads, :subjects, :attributes, :score, :publisher,
                 :school_level, :language, :source, :license, :copyright,
-                :country, :keywords
+                :country, :keywords, :file
 
   validates_presence_of :name, :created_at, :type, :likes, :views, :downloads
   validates_numericality_of :likes, greater_than_or_equal_to: 0
diff --git a/app/views/learning_objects/_form.html.erb b/app/views/learning_objects/_form.html.erb
index 5a2cee7b..1fe44e65 100644
--- a/app/views/learning_objects/_form.html.erb
+++ b/app/views/learning_objects/_form.html.erb
@@ -48,6 +48,7 @@
          <option value="<%= school_level %>"><%= school_level %></option>
          <% end %>
       </select>
+      <%= f.file_field :file %>
       <br>
       <br>
       <%= f.submit %>
-- 
GitLab