func PartsFromHeader(h *lob.Header) (Parts, error) { if h.IsZero() { return nil, nil } y := make(Parts, len(h.Extra)) for k, v := range h.Extra { if len(k) != 2 { return nil, ErrInvalidParts } s, ok := v.(string) if !ok || s == "" { return nil, ErrInvalidParts } csid, err := hex.DecodeString(k) if err != nil { return nil, ErrInvalidParts } if len(s) != 52 { return nil, ErrInvalidParts } y[csid[0]] = s } return y, nil }