buildPayloadFromMetadata constructs a SubscriptionPayload from Stripe metadata. Returns error if any required field is missing or invalid.
(metadata map[string]string)
| 380 | // buildPayloadFromMetadata constructs a SubscriptionPayload from Stripe metadata. |
| 381 | // Returns error if any required field is missing or invalid. |
| 382 | func buildPayloadFromMetadata(metadata map[string]string) (*storepb.SubscriptionPayload, error) { |
| 383 | plan, err := parsePlan(metadata["plan"]) |
| 384 | if err != nil { |
| 385 | return nil, errors.Wrap(err, "metadata missing valid plan") |
| 386 | } |
| 387 | interval, err := parseInterval(metadata["interval"]) |
| 388 | if err != nil { |
| 389 | return nil, errors.Wrap(err, "metadata missing valid interval") |
| 390 | } |
| 391 | instanceCount, err := strconv.Atoi(metadata["instance_count"]) |
| 392 | if err != nil { |
| 393 | return nil, errors.Wrapf(err, "metadata missing valid instance_count %q", metadata["instance_count"]) |
| 394 | } |
| 395 | userCount, err := strconv.Atoi(metadata["user_count"]) |
| 396 | if err != nil { |
| 397 | return nil, errors.Wrapf(err, "metadata missing valid user_count %q", metadata["user_count"]) |
| 398 | } |
| 399 | |
| 400 | return &storepb.SubscriptionPayload{ |
| 401 | Plan: plan, |
| 402 | Interval: interval, |
| 403 | InstanceCount: int32(instanceCount), |
| 404 | Seat: int32(userCount), |
| 405 | }, nil |
| 406 | } |
| 407 | |
| 408 | func mapStripeStatus(status stripego.SubscriptionStatus) (storepb.SubscriptionPayload_Status, error) { |
| 409 | switch status { |
no test coverage detected