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 23 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions example/lib/main.dart
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quickly said: test your code in test files, not in main.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't use this file. Nobody does.
Please create unit tests for your new classes.

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
14 changes: 12 additions & 2 deletions lib/openfoodfacts.dart
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll probably need to add the other nutripatrol classes.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And nutripatrol_types.dart

Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,19 @@ export 'src/model/parameter/without_additives.dart';
export 'src/model/per_size.dart';
export 'src/model/product.dart';
export 'src/model/product_freshness.dart';
<<<<<<< HEAD
export 'src/model/product_type.dart';
export 'src/model/product_type_filter.dart';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some confusion with these guys: one is moved and copied, the other is not.

=======
>>>>>>> 3b974b5 (Fixes)
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 @@ -81,6 +85,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 @@ -97,14 +107,14 @@ 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_price_products_order.dart';
export 'src/prices/get_price_products_parameters.dart';
export 'src/prices/get_price_products_result.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 @@ -127,6 +137,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 @@ -158,4 +169,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';
69 changes: 69 additions & 0 deletions lib/src/nutripatrol/create_flag.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
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);
}
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.

64 changes: 64 additions & 0 deletions lib/src/nutripatrol/create_flag_request.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import 'package:json_annotation/json_annotation.dart';

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

part 'create_flag_request.g.dart';

@JsonSerializable()
class CreateFlagRequest extends JsonObject {
/// 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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's an enum for that.


/// 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;

CreateFlagRequest();

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

@override
Map<String, dynamic> toJson() => _$CreateFlagRequestToJson(this);
}
38 changes: 38 additions & 0 deletions lib/src/nutripatrol/create_flag_request.g.dart

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

74 changes: 74 additions & 0 deletions lib/src/nutripatrol/get_flag.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
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';
import '../utils/nutripatrol_source.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);
}
Loading
Loading