Files
commerce/thirdparty/indiegogo/models.go
zeekay 1943f1c093 Hanzo Commerce
Multi-tenant commerce and billing: orders, subscriptions, invoices, plans,
usage metering and a credit ledger. One Go binary. MIT OR Apache-2.0.

Claude-Session: https://claude.ai/code/session_01SAtaDFm8VDiWrhYHNNtxMw
2026-09-23 21:52:16 -07:00

95 lines
2.1 KiB
Go

package indiegogo
import (
"strings"
"time"
. "github.com/hanzoai/commerce/types"
)
const igTimeLayout = "2006-01-02 15:04:05 -0700"
// Represents a row in an Indiegogo CSV
type Row struct {
TokenID string // NOTE: This was manually added.
PerkID string
PledgeID string
FulfillmentStatus string
FundingDate time.Time
PaymentMethod string
Appearance string
Name string
Email string
Amount string
Perk string
ShippingName string
ShippingAddress Address
// Not in row, generated by us
FirstName string
LastName string
}
func NewRow(row []string) Row {
// Trim all strings to start
for i, s := range row {
row[i] = strings.TrimSpace(s)
}
r := Row{
TokenID: row[0],
PerkID: row[1],
PledgeID: row[2],
FulfillmentStatus: row[3],
PaymentMethod: row[5],
Appearance: row[6],
Name: row[7],
Email: row[8],
Amount: row[9],
Perk: row[10],
ShippingName: row[11],
FirstName: "",
LastName: "",
}
address := Address{
Line1: row[12],
Line2: row[13],
City: row[14],
State: row[15],
PostalCode: row[16],
Country: row[17],
}
// Try to parse funding date
if date, err := time.Parse(igTimeLayout, row[4]); err != nil {
r.FundingDate = time.Now().UTC()
} else {
r.FundingDate = date.UTC()
}
// Normalize various bits
r.Email = strings.ToLower(r.Email)
// Title case name
name := strings.SplitN(r.ShippingName, " ", 2)
if len(name) > 0 {
r.FirstName = strings.TrimSpace(strings.Title(strings.ToLower(name[0])))
}
if len(name) > 1 {
r.LastName = strings.TrimSpace(strings.Title(strings.ToLower(name[1])))
}
// Da fuq, Indiegogo?
address.PostalCode = strings.Trim(address.PostalCode, "=")
address.PostalCode = strings.Trim(address.PostalCode, "\"")
address.City = strings.Title(strings.ToLower(row[14]))
address.State = strings.Title(strings.ToLower(row[15]))
r.ShippingAddress = address
return r
}