Class: Apidae::ImportController

Inherits:
ApplicationController show all
Defined in:
app/controllers/apidae/import_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#apidae_user, #check_user_data!, #user_has_data?, #user_is_admin?

Instance Method Details

#callbackObject

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

#createObject



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

#newObject



48
49
50
# File 'app/controllers/apidae/import_controller.rb', line 48

def new
  @export = Export.new(status: Export::PENDING)
end

#runObject



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