getMessages method
Returns a list of User's messages.
Implementation
Future<List<Message>> getMessages() async {
List<Message> messages = [];
dynamic jsonDecodedResponse;
final response = await _client.get(
Uri.https(
'openeclass.$instituteId.gr',
'/modules/message/ajax_handler.php',
{'mbox_type': 'inbox'},
),
headers: {
'Cookie': 'PHPSESSID=$_token',
'iDisplayLength': '-1',
'X-Requested-With': 'XMLHttpRequest',
},
);
if (response.statusCode != 200) {
throw Exception('Failed to get messages.');
}
try {
jsonDecodedResponse = jsonDecode(response.body);
} on FormatException {
throw ("Can't retrieve user's messages because they are not logged in or the token has expired.");
}
final document = jsonDecodedResponse["aaData"];
for (var element in document) {
var messageResponse = MessageResponse.fromJson(element);
final body = await _getMessageBody(
messageId: messageResponse.id,
);
final subject = _extractSubject(subjectResponse: messageResponse.subject);
final course = _extractCourse(courseResponse: messageResponse.course);
final from = _extractSender(senderResponse: messageResponse.from);
messages.add(
Message(
id: messageResponse.id,
subject: subject,
course: course,
from: from,
date: messageResponse.date,
body: body,
),
);
}
return messages;
}