Merge pull request #423 from openHPI/implement_codeharbor_interface

Implement codeharbor interface
This commit is contained in:
MrSerth
2019-12-20 10:53:42 +01:00
committed by GitHub
68 changed files with 2393 additions and 195 deletions

11
lib/file_io.rb Normal file
View File

@ -0,0 +1,11 @@
# frozen_string_literal: true
# stolen from: https://makandracards.com/makandra/50526-fileio-writing-strings-as-carrierwave-uploads
class FileIO < StringIO
def initialize(stream, filename)
super(stream)
@original_filename = filename
end
attr_reader :original_filename
end

View File

@ -0,0 +1,27 @@
# frozen_string_literal: true
namespace :export_exercises do
desc 'exports all public exercises to codeharbor'
task :public, [:codeharbor_link_id] => [:environment] do |_, args|
codeharbor_link = CodeharborLink.find(args.codeharbor_link_id)
successful_exports = []
failed_exports = []
Exercise.where(public: true).each do |exercise|
puts "Exporting exercise \##{exercise.id}"
error = ExerciseService::PushExternal.call(
zip: ProformaService::ExportTask.call(exercise: exercise),
codeharbor_link: codeharbor_link
)
if error.nil?
successful_exports << exercise.id
puts "Successfully exported exercise\# #{exercise.id}"
else
failed_exports << exercise.id
puts "An error occured during export of exercise\# #{exercise.id}: #{error}"
end
end
puts "successful exports: count: #{successful_exports.count} \nlist: #{successful_exports}"
puts "failed exports: count: #{failed_exports.count} \nlist: #{failed_exports}"
end
end