Class: Apidae::ImportController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- Apidae::ImportController
- Defined in:
- app/controllers/apidae/import_controller.rb
Instance Method Summary collapse
-
#callback ⇒ Object
Callback endpoint for Apidae exports.
- #create ⇒ Object
- #new ⇒ Object
- #run ⇒ Object
Methods inherited from ApplicationController
#apidae_user, #check_user_data!, #user_has_data?, #user_is_admin?
Instance Method Details
#callback ⇒ Object
Callback endpoint for Apidae exports
projetId : un entier. C’est l’identifiant du projet concerné. statut : une chaine de caractères, ‘SUCCESS’ ou ‘ERROR’. C’est l’issue de l’export. ponctuel : un booléen. Indique si l’export est ponctuel (true) ou périodique (false). reinitialisation : un booléen. Indique si l’export est une réinitialisation (true) ou différentiel (false). urlRecuperation : une chaine de caractères. L’URL de récupération du fichier d’export. urlConfirmation : une chaine de caractères. L’URL de confirmation.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/controllers/apidae/import_controller.rb', line 19 def callback export = Export.new(project_id: params[:projetId], remote_status: params[:statut], oneshot: params[:ponctuel] == 'true', reset: params[:reinitialisation] == 'true', file_url: params[:urlRecuperation], confirm_url: params[:urlConfirmation], status: Export::PENDING) if export.save if Rails.application.config.respond_to?(:apidae_propagate_callback) uri = URI(Rails.application.config.apidae_propagate_callback) req = Net::HTTP::Post.new(uri) Net::HTTP.start(uri.hostname, uri.port, use_ssl: (uri.scheme == "https")) do |http| http.request(req, params.to_unsafe_h.to_query) end end head :ok else head :internal_server_error end end |
#create ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'app/controllers/apidae/import_controller.rb', line 52 def create @export = Export.new(export_params) if @export.save && @export.import_data redirect_to apidae.root_url, notice: 'Le fichier a bien été importé.' else flash.now[:alert] = "Une erreur s'est produite lors de l'import du fichier." render :new end end |
#new ⇒ Object
48 49 50 |
# File 'app/controllers/apidae/import_controller.rb', line 48 def new @export = Export.new(status: Export::PENDING) end |
#run ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'app/controllers/apidae/import_controller.rb', line 37 def run success = true Export.pending.each do |e| logger.info "Running import for Apidae export #{e.id} - Project #{e.project_id}" e.update(status: Export::IN_PROGRESS) success = e.import_data && success logger.info "Apidae export #{e.id} import run complete - Project #{e.project_id}" end success ? head(:ok) : head(:internal_server_error) end |