func toRememberedConsentPreference()

in lib/ic/info_release.go [346:397]


func toRememberedConsentPreference(r *http.Request) (*cspb.RememberedConsentPreference, error) {
	now := time.Now()
	rcp := &cspb.RememberedConsentPreference{
		RequestMatchType: cspb.RememberedConsentPreference_NONE,
		ReleaseType:      cspb.RememberedConsentPreference_SELECTED,
		CreateTime:       timeutil.TimestampProto(now),
		ExpireTime:       timeutil.TimestampProto(now.Add(rememberedConsentExpires)),
	}
	for k, v := range r.PostForm {
		switch k {
		case "state":
			continue
		case "profile.name":
			rcp.ReleaseProfileName = true
		case "profile.email":
			rcp.ReleaseProfileEmail = true
		case "profile.others":
			rcp.ReleaseProfileOther = true
		case "account_admin":
			rcp.ReleaseAccountAdmin = true
		case "link":
			rcp.ReleaseLink = true
		case "identities":
			rcp.ReleaseIdentities = true
		case "select-anything":
			rcp.ReleaseType = cspb.RememberedConsentPreference_ANYTHING_NEEDED
		case "remember":
			if len(v) == 0 {
				return nil, fmt.Errorf("remember format invalid")
			}
			switch v[0] {
			case "remember-samesubset":
				rcp.RequestMatchType = cspb.RememberedConsentPreference_SUBSET
			case "remember-any":
				rcp.RequestMatchType = cspb.RememberedConsentPreference_ANYTHING
			case "remember-none":
				rcp.RequestMatchType = cspb.RememberedConsentPreference_NONE
			default:
				return nil, fmt.Errorf("remember value invalid: %v", v[0])

			}
		default:
			visa, err := checkboxIDToConsentVisa(k)
			if err != nil {
				return nil, err
			}
			rcp.SelectedVisas = append(rcp.SelectedVisas, visa)
		}
	}

	return rcp, nil
}