saveProduct static method
Future<Status>
saveProduct(
- User user,
- Product product, {
- UriProductHelper uriHelper = uriHelperFoodProd,
- OpenFoodFactsCountry? country,
- OpenFoodFactsLanguage? language,
Add the given product to the database.
Please read the language mechanics explanation if you intend to display or update data in specific language: https://github.com/openfoodfacts/openfoodfacts-dart/blob/master/DOCUMENTATION.md#about-languages-mechanics
User myUser = User(userId: "username", password: "secret_password");
Product newProduct = Product(
barcode: "0000000000000",
productName: "Example Product",
quantity: "200g",
brands: "Example Brand",
lang: OpenFoodFactsLanguage.FRENCH,
ingredientsText: "Ingredient 1, Ingredient 2, Ingredient 3",
categories: "Category 1, Category 2"
...
);
Status result = await OpenFoodAPIClient.saveProduct(myUser, newProduct);
if(result.status != 1) {
print("An error occured while sending the product : ${result.statusVerbose}");
return;
}
print("Upload was successful");
Implementation
static Future<Status> saveProduct(
final User user,
final Product product, {
final UriProductHelper uriHelper = uriHelperFoodProd,
final OpenFoodFactsCountry? country,
final OpenFoodFactsLanguage? language,
}) async {
final Map<String, String> parameterMap = <String, String>{};
parameterMap.addAll(user.toData());
parameterMap.addAll(product.toServerData());
if (language != null) {
parameterMap['lc'] = language.offTag;
}
if (country != null) {
parameterMap['cc'] = country.offTag;
}
var productUri = uriHelper.getPostUri(
path: '/cgi/product_jqm2.pl',
);
if (product.nutriments != null) {
final Map<String, String> rawNutrients = product.nutriments!.toData();
for (final MapEntry<String, String> entry in rawNutrients.entries) {
String key = 'nutriment_${entry.key}';
for (final option in PerSize.values) {
final int pos = key.indexOf('_${option.offTag}');
if (pos != -1) {
key = key.substring(0, pos);
}
}
parameterMap[key] = entry.value;
}
}
parameterMap.remove('nutriments');
final Response response = await HttpHelper().doPostRequest(
productUri,
parameterMap,
user,
uriHelper: uriHelper,
addCredentialsToBody: true,
);
return Status.fromApiResponse(response.body);
}