Sha256: a19659c6bf8eec7d30979a37975e5c757b961206c6aed68cc978660cc77de6ef

Contents?: true

Size: 1.7 KB

Versions: 14

Compression:

Stored size: 1.7 KB

Contents

module PayuLatam
  class SubscriptionInterceptor
    # recibe la información de contexto y genera una instancia de si mismo para llamar el 
    # metodo de instancia run, retorna el objeto de instancia generado
    def self.call(context)
      interactor = new(context) # objeto nuevo, instancia de esta misma clase
      interactor.run # metodo principal de la clase
      interactor
    end

    attr_reader :error

    # metodo inicializador de las clases en ruby
    # recibe el contexto enviado
    # recordar que el contexto es enviado desde el controlador, por lo tanto contiene toda
    # la información del request htto, entre ellos los params y el current_user
    def initialize(context)
      @context = context
    end

    # si no hay error, es que todo salió bien
    def success?
      @error.nil?
    end

    # metodo principal de esta clase
    # al estar en un 'rescue' evitamos que el proyecto saque error 500 cuando algo sale mal
    # INTERCEPTAMOS el error y lo enviamos al controller para que trabaje con el
    #
    # de la variable @context, obtenemos los params y el current_user
    # en los params se encuentran datos del plan , tarjeta de crédito seleccionada o datos de nueva tarjeta
    #
    # se ejecuta el metodo 'call' del SubscriptionService
    def run
      PayuLatam::SubscriptionService.new(context.params, context.current_user).call
    rescue => exception
      fail!(exception.message)
    end

    private

    attr_reader :context

    # metodo bang de error
    # recibe un mensaje de error y lo almacena en la variable de instancia @error
    # esta variable es usado por el controlador para verificar si ha ocurrido un error
    def fail!(error)
      @error = error
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
easy_pay_u_latam-0.1.32 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.31 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.29 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.28 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.27 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.26 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.23 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.22 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.21 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.20 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.19 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.18 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.17 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
easy_pay_u_latam-0.1.16 lib/easy_pay_u_latam/r_api/subscription_interceptor.rb