Skip to content
This repository was archived by the owner on Dec 12, 2024. It is now read-only.

Commit db70267

Browse files
authored
feat: add submit cancel to TbdexHttpClient (#50)
1 parent aca8be7 commit db70267

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import 'package:tbdex/src/protocol/models/cancel.dart';
2+
3+
class SubmitCancelRequest {
4+
final Cancel cancel;
5+
6+
SubmitCancelRequest({
7+
required this.cancel,
8+
});
9+
10+
Map<String, dynamic> toJson() {
11+
return {
12+
'message': cancel.toJson(),
13+
};
14+
}
15+
}

lib/src/http_client/tbdex_http_client.dart

+16
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:tbdex/src/http_client/exceptions/validation_exceptions.dart';
66
import 'package:tbdex/src/http_client/models/create_exchange_request.dart';
77
import 'package:tbdex/src/http_client/models/exchange.dart';
88
import 'package:tbdex/src/http_client/models/get_offerings_filter.dart';
9+
import 'package:tbdex/src/http_client/models/submit_cancel_request.dart';
910
import 'package:tbdex/src/http_client/models/submit_close_request.dart';
1011
import 'package:tbdex/src/http_client/models/submit_order_request.dart';
1112
import 'package:tbdex/src/protocol/models/balance.dart';
@@ -15,6 +16,7 @@ import 'package:tbdex/src/protocol/models/order.dart';
1516
import 'package:tbdex/src/protocol/models/rfq.dart';
1617
import 'package:tbdex/src/protocol/parser.dart';
1718
import 'package:tbdex/src/protocol/validator.dart';
19+
import 'package:tbdex/tbdex.dart';
1820
import 'package:typeid/typeid.dart';
1921
import 'package:web5/web5.dart';
2022

@@ -247,6 +249,20 @@ class TbdexHttpClient {
247249
await _submitMessage(pfiDid, body, exchangeId: exchangeId);
248250
}
249251

252+
static Future<void> submitCancel(Cancel cancel) async {
253+
try {
254+
Validator.validateMessage(cancel);
255+
} on Exception catch (e) {
256+
throw ValidationError(message: 'invalid cancel message', cause: e);
257+
}
258+
259+
final pfiDid = cancel.metadata.to;
260+
final exchangeId = cancel.metadata.exchangeId;
261+
final body = jsonEncode(SubmitCancelRequest(cancel: cancel));
262+
263+
await _submitMessage(pfiDid, body, exchangeId: exchangeId);
264+
}
265+
250266
static Future<void> _submitMessage(
251267
String pfiDid,
252268
String requestBody, {

0 commit comments

Comments
 (0)