blob: bf1454a08ea6fb6df5a2ceb0703318fb7fd5ebeb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
syntax = "proto3";
package jwebmail;
message MIMEHeader {
enum ContentDisposition {
CONTENT_DISPOSITION_NONE = 0;
CONTENT_DISPOSITION_INLINE = 1;
CONTENT_DISPOSITION_ATTACHMENT = 2;
}
string maintype = 1;
string subtype = 2;
ContentDisposition contentdispo = 3;
optional string file_name = 4;
}
message MailHeader {
message MailAddr {
optional string name = 1;
string address = 2;
}
string send_date = 1;
repeated MailAddr written_from = 2;
optional MailAddr sender = 3;
repeated MailAddr reply_to = 4;
repeated MailAddr send_to = 5;
repeated MailAddr cc = 6;
repeated MailAddr bcc = 7;
string subject = 8;
repeated string comments = 9;
repeated string keywords = 10;
MIMEHeader mime = 11;
}
message ListMailHeader {
uint64 byte_size = 1;
bool unread = 2;
string rec_date = 3;
string mid = 4;
MailHeader header = 5;
}
message MailBody {
message Multipart {
optional string preamble = 1;
repeated MIMEPart parts = 2;
optional string epilogue = 3;
}
oneof Body {
string discrete = 1;
Multipart multipart = 2;
Mail mail = 3;
}
}
message Mail {
MailHeader head = 1;
MailBody body = 2;
}
message MIMEPart {
MIMEHeader mime_header = 1;
MailBody body = 2;
}
// Request-Response pairs
message ListReq {
string folder = 1;
int32 start = 2;
int32 end = 3;
string sort = 4;
}
message ListResp {
repeated ListMailHeader mail_heads = 1;
}
message StatsReq {
string folder = 1;
}
message StatsResp {
uint32 mail_count = 1;
uint32 unread_count = 2;
uint64 byte_size = 3;
}
message ShowReq {
string folder = 1;
string mid = 2;
}
message ShowResp {
Mail mail = 1;
}
message RawReq {
string folder = 1;
string mid = 2;
optional string path = 3;
}
message RawResp {
MIMEHeader header = 1;
bytes body = 2;
}
message SearchReq {
string folder = 1;
string pattern = 2;
}
message SearchResp {
repeated ListMailHeader found = 1;
}
message FoldersReq {
}
message FoldersResp {
repeated string folders = 1;
}
message MoveReq {
string mid = 1;
string from_f = 2;
string to_f = 3;
}
message MoveResp {
}
message RemoveReq {
string folder = 1;
string mid = 2;
}
message RemoveResp {
}
service MailService {
rpc List(ListReq) returns (ListResp);
rpc Stats(StatsReq) returns (StatsResp);
rpc Show(ShowReq) returns (ShowResp);
rpc Raw(RawReq) returns (RawResp);
rpc Search(SearchReq) returns (SearchResp);
rpc Folders(FoldersReq) returns (FoldersResp);
rpc Move(MoveReq) returns (MoveResp);
rpc Remove(RemoveReq) returns (RemoveResp);
}
|