class PayuLatam::SubscriptionInterceptor

Attributes

context[R]
error[R]

Public Class Methods

call(context) click to toggle source

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

# File lib/easy_pay_u_latam/r_api/subscription_interceptor.rb, line 5
def self.call(context)
  interactor = new(context) # objeto nuevo, instancia de esta misma clase
  interactor.run # metodo principal de la clase
  interactor
end
new(context) click to toggle source

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

# File lib/easy_pay_u_latam/r_api/subscription_interceptor.rb, line 17
def initialize(context)
  @context = context
end

Public Instance Methods

run() click to toggle source

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

# File lib/easy_pay_u_latam/r_api/subscription_interceptor.rb, line 34
def run
  PayuLatam::SubscriptionService.new(context.params, context.current_user).call
rescue => exception
  fail!(exception.message)
end
success?() click to toggle source

si no hay error, es que todo salió bien

# File lib/easy_pay_u_latam/r_api/subscription_interceptor.rb, line 22
def success?
  @error.nil?
end

Private Instance Methods

fail!(error) click to toggle source

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

# File lib/easy_pay_u_latam/r_api/subscription_interceptor.rb, line 47
def fail!(error)
  @error = error
end