odoo_rpc 0.4.3 odoo_rpc: ^0.4.3 copied to clipboard
Odoo RPC Client library for Dart with session changes tracking via steam.
Odoo RPC Client Library #
Odoo RPC Client Library for Dart.
Features #
- Initialize client with previously stored Odoo Session.
- Authenticate via database name, login and password.
- Issue JSON-RPC requests to JSON controllers.
- Execute public methods via
CallKw
. - Get Odoo Session updates via stream.
- Terminate session (logout).
- Catch exceptions when session expires.
Usage #
To use this plugin, add odoo_rpc as a dependency in your pubspec.yaml file. For example:
dependencies:
odoo_rpc: ^0.3.0
Examples #
Basic RPC-call
import 'dart:io';
import 'package:odoo_rpc/odoo_rpc.dart'
main() async {
final client = OdooClient('https://my-db.odoo.com');
try {
await client.authenticate('my-db', 'admin', 'admin');
final res = await client.callRPC('/web/session/modules', 'call', {});
print('Installed modules: \n' + res.toString());
} on OdooException catch (e) {
print(e);
client.close();
exit(-1);
}
client.close();
}
RPC-Calls with tracking session changes. Odoo server will issue new session_id
on each call.
import 'dart:io';
import 'package:odoo_rpc/odoo_rpc.dart'
sessionChanged(OdooSession sessionId) async {
print('We got new session ID: ' + sessionId.id);
store_session_somehow(sessionId);
}
main() async {
var prev_session = restore_session_somehow();
var client = OdooClient("https://my-db.odoo.com", prev_session);
// Subscribe to session changes to store most recent one
var subscription = client.sessionStream.listen(sessionChanged);
try {
final session = await client.authenticate('my-db', 'admin', 'admin');
var res = await client.callRPC('/web/session/modules', 'call', {});
print('Installed modules: \n' + res.toString());
// logout
await client.destroySession();
} on OdooException catch (e) {
print(e);
subscription.cancel();
client.close();
exit(-1);
}
try {
await client.checkSession();
} on OdooSessionExpiredException {
print('Session expired');
}
subscription.cancel();
client.close();
}
See example folder for more complete example.
Issues #
Please file any issues, bugs or feature requests as an issue on our GitHub page.
Want to contribute #
If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature), please send us your pull request.
Author #
This Geolocator plugin for Flutter is developed by ERP Ukraine.