Sha256: 9721aea7631a8ffff69619f6bd9fe892d3505ccb0071b8501eb419a017c25160

Contents?: true

Size: 1.98 KB

Versions: 1

Compression:

Stored size: 1.98 KB

Contents

require_dependency "apidae/application_controller"
require 'net/http'

module Apidae
  class ImportController < ApplicationController
    skip_before_action :verify_authenticity_token

    # 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.
    def callback
      project_id = params[:projetId]
      if project_id == Rails.application.config.apidae_project_id
        export = Export.new(project_id: project_id, remote_status: params[:status], oneshot: params[:ponctuel] == 'true',
                            reset: params[:reinitialisation] == 'true', file_url: params[:urlRecuperation],
                            confirm_url: params[:urlConfirmation], status: Export::PENDING)
        if export.save
          render nothing: true, status: :ok
        else
          render nothing: true, status: :internal_server_error
        end
      else
        render nothing: true, status: :not_found
      end
    end

    def run
      success = true
      Export.pending.each do |e|
        open(e.file_url) do |f|
          begin
            FileImport.import(f)
            Net::HTTP.post(e.confirm_url, '')
            e.update(status: Export::COMPLETE)
          rescue Exception => ex
            logger.error("Failed to retrieve export file : #{ex.file_url}")
            logger.error("Error is : #{ex}")
            success = false
          end
        end
      end
      render nothing: true, status: (success ? :ok : :internal_server_error)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
apidae-0.1.3 app/controllers/apidae/import_controller.rb