Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Integrate all routes from nutripatrol's API #991

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
24 changes: 24 additions & 0 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,30 @@ import 'dart:async';

import 'package:openfoodfacts/openfoodfacts.dart';

void main() {
OpenFoodAPIConfiguration.userAgent = UserAgent(
name: 'openfoodfacts-dart',
version: '1.0.0',
url: '',
);
getTickets();
}

/// Get the ticket by its ID
/// The result will be a MaybeError<Ticket> that can be parsed
void getTicket() async {
await NutripatrolApiClient.getTicket(ticketId: 2);
}

/// Get all tickets
/// The result will be a MaybeError<Tickets> that can be parsed
void getTickets() async {
await NutripatrolApiClient.getTickets(
status: NutripatrolTicketStatus.open,
type: NutripatrolType.image,
page: 1);
}

/// request a product from the OpenFoodFacts database
Future<Product?> getProduct() async {
var barcode = '0048151623426';
Expand Down
12 changes: 9 additions & 3 deletions lib/openfoodfacts.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,14 @@ export 'src/model/parameter/without_additives.dart';
export 'src/model/per_size.dart';
export 'src/model/product.dart';
export 'src/model/product_freshness.dart';
export 'src/model/product_type.dart';
export 'src/model/product_image.dart';
export 'src/model/product_packaging.dart';
export 'src/model/product_result_field_answer.dart';
export 'src/model/product_result_v3.dart';
export 'src/model/product_state.dart';
export 'src/model/product_stats.dart';
export 'src/model/product_tag.dart';
export 'src/model/product_type.dart';
export 'src/model/recommended_daily_intake.dart';
export 'src/model/robotoff_question.dart';
export 'src/model/robotoff_question_order.dart';
Expand All @@ -80,6 +80,12 @@ export 'src/model/taxonomy_packaging_recycling.dart';
export 'src/model/taxonomy_packaging_shape.dart';
export 'src/model/user.dart';
export 'src/model/user_agent.dart';
export 'src/nutripatrol/create_flag.dart';
export 'src/nutripatrol/get_flag.dart';
export 'src/nutripatrol/get_ticket.dart';
export 'src/nutripatrol/get_tickets.dart';
export 'src/nutripatrol/update_ticket_status.dart';
export 'src/nutripatrol_api_client.dart';
export 'src/open_food_api_client.dart';
export 'src/open_food_search_api_client.dart';
export 'src/open_prices_api_client.dart';
Expand All @@ -96,11 +102,11 @@ export 'src/prices/flavor.dart';
export 'src/prices/get_locations_order.dart';
export 'src/prices/get_locations_parameters.dart';
export 'src/prices/get_locations_result.dart';
export 'src/prices/get_price_count_parameters_helper.dart';
// export 'src/prices/get_parameters_helper.dart'; // uncomment if really needed
export 'src/prices/get_prices_order.dart';
export 'src/prices/get_prices_parameters.dart';
export 'src/prices/get_prices_result.dart';
export 'src/prices/get_price_count_parameters_helper.dart';
export 'src/prices/get_proofs_order.dart';
export 'src/prices/get_proofs_parameters.dart';
export 'src/prices/get_proofs_result.dart';
Expand All @@ -121,6 +127,7 @@ export 'src/prices/proof_type.dart';
export 'src/prices/session.dart';
export 'src/prices/update_price_parameters.dart';
export 'src/prices/update_proof_parameters.dart';
export 'src/robot_off_api_client.dart';
export 'src/search/autocomplete_search_result.dart';
export 'src/search/autocomplete_single_result.dart';
export 'src/search/fuzziness.dart';
Expand Down Expand Up @@ -152,4 +159,3 @@ export 'src/utils/too_many_requests_manager.dart';
export 'src/utils/unit_helper.dart';
export 'src/utils/uri_helper.dart';
export 'src/utils/uri_reader.dart';
export 'src/robot_off_api_client.dart';
80 changes: 80 additions & 0 deletions lib/src/nutripatrol/create_flag.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:openfoodfacts/src/nutripatrol/get_ticket.dart';

import '../interface/json_object.dart';

part 'create_flag.g.dart';

@JsonSerializable()
class CreateFlag extends JsonObject {
/// Ticket ID associated with the flag
@JsonKey()
late Ticket ticket;

/// Barcode of the product.
@JsonKey()
String? barcode;

/// Type of the flag
@JsonKey()
late String type;

/// Url of the product
@JsonKey()
late String url;

/// User ID
@JsonKey(name: 'user_id')
late String userId;

/// Device ID
@JsonKey(name: 'device_id')
late String deviceId;

/// Source of the flag
@JsonKey()
late String source;

/// Confidence of the flag
@JsonKey()
double? confidence;

/// Image ID of the flag
@JsonKey(name: 'image_id')
String? imageId;

/// Flavor of the flag
@JsonKey()
late String flavor;

/// Reason for the flag
@JsonKey()
String? reason;

/// Comment associated with the flag
@JsonKey()
String? comment;

/// Created date of the flag
@JsonKey(name: 'created_at')
late DateTime createdAt;

CreateFlag();

factory CreateFlag.fromJson(Map<String, dynamic> json) =>
_$CreateFlagFromJson(json);

@override
Map<String, dynamic> toJson() => _$CreateFlagToJson(this);
}

enum NutripatrolSource {
@JsonValue('mobile')
mobile,

@JsonValue('web')
web,

@JsonValue('robotoff')
robotoff,
}
39 changes: 39 additions & 0 deletions lib/src/nutripatrol/create_flag.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

84 changes: 84 additions & 0 deletions lib/src/nutripatrol/get_flag.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:openfoodfacts/src/nutripatrol/get_ticket.dart';
import 'package:openfoodfacts/src/prices/flavor.dart';

import '../interface/json_object.dart';

part 'get_flag.g.dart';

@JsonSerializable()
class Flag extends JsonObject {
/// Flag ID. Read-only.
@JsonKey()
late String id;

/// Ticket ID. Read-only.
@JsonKey()
late Ticket ticket;

/// Barcode of the product. Read-only.
@JsonKey()
String? barcode;

/// Type of the flag
@JsonKey()
late NutripatrolType type;

/// Url of the product. Read-only.
@JsonKey()
late String url;

/// User ID. Read-only.
@JsonKey(name: 'user_id')
late String userId;

/// Device ID. Read-only.
@JsonKey(name: 'device_id')
late String deviceId;

/// Source of the flag
@JsonKey()
late NutripatrolSource source;

/// Confidence of the flag
@JsonKey()
double? confidence;

/// Image ID of the flag. Read-only.
@JsonKey(name: 'image_id')
String? imageId;

/// Flavor of the flag
@JsonKey()
late Flavor flavor;

/// Reason of the flag
@JsonKey()
String? reason;

/// Comment of the flag
@JsonKey()
String? comment;

/// created date of the ticket. Read-only.
@JsonKey(name: 'created_at')
late String createdAt;

Flag();

factory Flag.fromJson(Map<String, dynamic> json) => _$FlagFromJson(json);

@override
Map<String, dynamic> toJson() => _$FlagToJson(this);
}

enum NutripatrolSource {
@JsonValue('mobile')
mobile,

@JsonValue('web')
web,

@JsonValue('robotoff')
robotoff,
}
60 changes: 60 additions & 0 deletions lib/src/nutripatrol/get_flag.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading