def createPaymentMethod()

in handlers/stripe-webhook-endpoints/src/main/scala/com/gu/stripeCardUpdated/CardUpdatedSteps.scala [118:148]


  def createPaymentMethod(requests: Requests)(
      eventDataObject: EventDataObject,
      paymentMethodFields: PaymentMethodFields,
  ): ApiGatewayOp[CreatePaymentMethodResult] = {
    for {
      creditCardType <- Some(eventDataObject.brand)
        .collect {
          case StripeBrand.Visa => Visa
          case StripeBrand.Discover => Discover
          case StripeBrand.MasterCard => MasterCard
          case StripeBrand.AmericanExpress => AmericanExpress
        }
        .toApiGatewayContinueProcessing(
          ApiGatewayResponse.internalServerError(s"not valid card type for zuora: ${eventDataObject.brand}"),
        )
      result <- CreatePaymentMethod
        .createPaymentMethod(requests)(
          CreateStripePaymentMethod(
            paymentMethodFields.AccountId,
            eventDataObject.id,
            eventDataObject.customer,
            eventDataObject.country,
            eventDataObject.last4,
            eventDataObject.expiry,
            creditCardType,
            paymentMethodFields.NumConsecutiveFailures,
          ),
        )
        .toApiGatewayOp("CreatePaymentMethod failed")
    } yield result
  }