saveProduct static method
Future<Status>
saveProduct(
- User user,
- Product product, {
- QueryType? queryType,
- OpenFoodFactsCountry? country,
- OpenFoodFactsLanguage? language,
Add the given product to the database. Returns a Status object as result.
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
Implementation
static Future<Status> saveProduct(
final User user,
final Product product, {
final QueryType? queryType,
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',
queryType: queryType,
);
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}';
final int pos = key.indexOf('_100g');
if (pos != -1) {
key = key.substring(0, pos);
}
parameterMap[key] = entry.value;
}
}
parameterMap.remove('nutriments');
final Response response = await HttpHelper().doPostRequest(
productUri,
parameterMap,
user,
queryType: queryType,
addCredentialsToBody: true,
);
return Status.fromApiResponse(response.body);
}