import 'dart:io'; import 'package:comunic/helpers/api_helper.dart'; import 'package:comunic/models/api_response.dart'; import 'package:meta/meta.dart'; /// API Request model /// /// Contains all the information associated to an API request /// /// @author Pierre HUBERT class APIRequest { final String uri; final bool needLogin; Map args; Map files = Map(); APIRequest({@required this.uri, this.needLogin = false, this.args}) : assert(uri != null), assert(needLogin != null) { if (this.args == null) this.args = Map(); } APIRequest addString(String name, String value) { args[name] = value; return this; } APIRequest addInt(String name, int value) { args[name] = value.toString(); return this; } APIRequest addBool(String name, bool value) { args[name] = value ? "true" : "false"; return this; } APIRequest addFile(String name, File file) { files[name] = file; return this; } void addArgs(Map newArgs) => args.addAll(newArgs); /// Execute the request Future exec() async => APIHelper().exec(this); /// Execute the request with files Future execWithFiles() async => APIHelper().execWithFiles(this); }