register static method
Future<SignUpStatus>
register({
- required User user,
- required String name,
- required String email,
- String? orgName,
- bool newsletter = true,
- OpenFoodFactsLanguage? language,
- OpenFoodFactsCountry? country,
- UriProductHelper uriHelper = uriHelperFoodProd,
Creates a new user
Possible status.status
responses:
Returns Status.status 201 = complete; 400 = wrong inputs + Status.error; 500 = server error;
name
may not exceed OpenFoodAPIClient.USER_NAME_MAX_LENGTH
When creating a producer account use orgName
(former requested_org) to name the Producer or brand
User offUser = User(userId: 'username or email', password: 'password');
SignUpStatus status = await OpenFoodAPIClient.register(
user: offUser,
name: 'Namer',
email: 'email',
);
if (status.status == 201) {
print('Yeah account created');
OpenFoodAPIConfiguration.globalUser = offUser;
} else {
print('Error: ${status.error}');
}
If the user wants to receive the newsletter
, by default it will be in
English. If you want to change this behavior, please provide a language
and/or a country
for a localized content.
Implementation
static Future<SignUpStatus> register({
required User user,
required String name,
required String email,
String? orgName,
bool newsletter = true,
final OpenFoodFactsLanguage? language,
final OpenFoodFactsCountry? country,
final UriProductHelper uriHelper = uriHelperFoodProd,
}) async {
if (user.userId.length > USER_NAME_MAX_LENGTH) {
throw ArgumentError(
'A username may not exceed $USER_NAME_MAX_LENGTH characters!',
);
}
Uri registerUri = uriHelper.getUri(
path: '/cgi/user.pl',
addUserAgentParameters: false,
);
if (language != null || country != null) {
registerUri = UriHelper.replaceSubdomain(
registerUri,
language: language,
country: country,
);
}
Map<String, String> data = <String, String>{
'name': name,
'email': email,
'userid': user.userId,
'password': user.password,
'confirm_password': user.password,
if (orgName != null) 'pro': 'on',
'pro_checkbox': '1',
'requested_org': orgName ?? ' ',
if (newsletter) 'newsletter': 'on',
'action': 'process',
'type': 'add',
'.submit': 'Register',
};
Status status = await HttpHelper().doMultipartRequest(
registerUri,
data,
uriHelper: uriHelper,
);
return SignUpStatus(status);
}