Skip to content

Commit 2474bb5

Browse files
Add download all capability
1 parent b085658 commit 2474bb5

7 files changed

+75
-7
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## [0.3.3] - 2025-02-04
2+
- Add download all capability
3+
14
## [0.3.2] - 2024-01-10
25
- Add Email/parse method
36

lib/http/converter/capabilities_converter.dart

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart
44
import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart';
55
import 'package:jmap_dart_client/jmap/core/capability/core_capability.dart';
66
import 'package:jmap_dart_client/jmap/core/capability/default_capability.dart';
7+
import 'package:jmap_dart_client/jmap/core/capability/download_all_capability.dart';
78
import 'package:jmap_dart_client/jmap/core/capability/empty_capability.dart';
89
import 'package:jmap_dart_client/jmap/core/capability/mail_capability.dart';
910
import 'package:jmap_dart_client/jmap/core/capability/mdn_capability.dart';
@@ -28,7 +29,8 @@ class CapabilitiesConverter {
2829
CapabilityIdentifier.jmapVacationResponse: VacationCapability.deserialize,
2930
CapabilityIdentifier.jmapWebSocket: WebSocketCapability.deserialize,
3031
CapabilityIdentifier.jmapWebSocketTicket: WebSocketTicketCapability.deserialize,
31-
CapabilityIdentifier.jmapMdn: MdnCapability.deserialize
32+
CapabilityIdentifier.jmapMdn: MdnCapability.deserialize,
33+
CapabilityIdentifier.downloadAll: DownloadAllCapability.fromJson,
3234
});
3335
}
3436

lib/jmap/core/capability/capability_identifier.dart

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class CapabilityIdentifier with EquatableMixin {
1313
static final jamesSortOrder = CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:identity:sortorder'));
1414
static final jamesCalendarEvent = CapabilityIdentifier(Uri.parse('com:linagora:params:calendar:event'));
1515
static final jmapPublicAsset = CapabilityIdentifier(Uri.parse('com:linagora:params:jmap:public:assets'));
16+
static final downloadAll = CapabilityIdentifier(Uri.parse('com:linagora:params:downloadAll'));
1617

1718
final Uri value;
1819

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart';
2+
import 'package:json_annotation/json_annotation.dart';
3+
4+
part 'download_all_capability.g.dart';
5+
6+
@JsonSerializable(includeIfNull: false)
7+
class DownloadAllCapability extends CapabilityProperties {
8+
DownloadAllCapability({this.endpoint});
9+
10+
final String? endpoint;
11+
12+
factory DownloadAllCapability.fromJson(Map<String, dynamic> json) => _$DownloadAllCapabilityFromJson(json);
13+
14+
Map<String, dynamic> toJson() => _$DownloadAllCapabilityToJson(this);
15+
16+
@override
17+
List<Object?> get props => [endpoint];
18+
}

lib/jmap/core/capability/download_all_capability.g.dart

+27
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: jmap_dart_client
22
description: A JMAP client library to make JMAP method calls and process the responses.
3-
version: 0.3.2
3+
version: 0.3.3
44
homepage: https://github.com/linagora/jmap-dart-client.git
55

66
environment:

test/jmap/core/session/session_test.dart

+22-5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:jmap_dart_client/jmap/core/capability/calendar_event_capability.
88
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
99
import 'package:jmap_dart_client/jmap/core/capability/core_capability.dart';
1010
import 'package:jmap_dart_client/jmap/core/capability/default_capability.dart';
11+
import 'package:jmap_dart_client/jmap/core/capability/download_all_capability.dart';
1112
import 'package:jmap_dart_client/jmap/core/capability/mail_capability.dart';
1213
import 'package:jmap_dart_client/jmap/core/capability/mdn_capability.dart';
1314
import 'package:jmap_dart_client/jmap/core/capability/submission_capability.dart';
@@ -26,6 +27,8 @@ import 'test_capability.dart';
2627
void main() {
2728
group('get session with default capabilities', () {
2829
test('get should parsing correctly session', () {
30+
const downloadAllEndpoint = 'http://localhost/jmap/downloadAll/{accountId}/{emailId}?name={name}';
31+
2932
const sessionString = '''{
3033
"capabilities": {
3134
"urn:ietf:params:jmap:submission": {
@@ -76,7 +79,10 @@ void main() {
7679
"urn:apache:james:params:jmap:mail:quota": {},
7780
"urn:apache:james:params:jmap:mail:shares": {},
7881
"urn:ietf:params:jmap:vacationresponse": {},
79-
"urn:ietf:params:jmap:mdn": {}
82+
"urn:ietf:params:jmap:mdn": {},
83+
"com:linagora:params:downloadAll": {
84+
"endpoint": "$downloadAllEndpoint"
85+
}
8086
},
8187
"accounts": {
8288
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6": {
@@ -122,7 +128,10 @@ void main() {
122128
"urn:apache:james:params:jmap:mail:quota": {},
123129
"urn:apache:james:params:jmap:mail:shares": {},
124130
"urn:ietf:params:jmap:vacationresponse": {},
125-
"urn:ietf:params:jmap:mdn": {}
131+
"urn:ietf:params:jmap:mdn": {},
132+
"com:linagora:params:downloadAll": {
133+
"endpoint": "$downloadAllEndpoint"
134+
}
126135
}
127136
}
128137
},
@@ -136,7 +145,8 @@ void main() {
136145
"urn:apache:james:params:jmap:mail:quota": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
137146
"urn:apache:james:params:jmap:mail:shares": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
138147
"urn:ietf:params:jmap:vacationresponse": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
139-
"urn:ietf:params:jmap:mdn": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6"
148+
"urn:ietf:params:jmap:mdn": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
149+
"com:linagora:params:downloadAll": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6"
140150
},
141151
"username": "[email protected]",
142152
"apiUrl": "http://domain.com/jmap",
@@ -182,7 +192,10 @@ void main() {
182192
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:quota')): DefaultCapability(<String, dynamic>{}),
183193
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:shares')): DefaultCapability(<String, dynamic>{}),
184194
CapabilityIdentifier.jmapVacationResponse: VacationCapability(),
185-
CapabilityIdentifier.jmapMdn: MdnCapability()
195+
CapabilityIdentifier.jmapMdn: MdnCapability(),
196+
CapabilityIdentifier.downloadAll: DownloadAllCapability(
197+
endpoint: downloadAllEndpoint,
198+
),
186199
},
187200
{
188201
AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')): Account(
@@ -218,7 +231,10 @@ void main() {
218231
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:quota')): DefaultCapability(<String, dynamic>{}),
219232
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:shares')): DefaultCapability(<String, dynamic>{}),
220233
CapabilityIdentifier.jmapVacationResponse: VacationCapability(),
221-
CapabilityIdentifier.jmapMdn: MdnCapability()
234+
CapabilityIdentifier.jmapMdn: MdnCapability(),
235+
CapabilityIdentifier.downloadAll: DownloadAllCapability(
236+
endpoint: downloadAllEndpoint,
237+
),
222238
}
223239
)
224240
},
@@ -233,6 +249,7 @@ void main() {
233249
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:shares')): AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
234250
CapabilityIdentifier.jmapVacationResponse: AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
235251
CapabilityIdentifier.jmapMdn: AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
252+
CapabilityIdentifier.downloadAll: AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
236253
},
237254
UserName('[email protected]'),
238255
Uri.parse('http://domain.com/jmap'),

0 commit comments

Comments
 (0)