Advertisement
Guest User

Untitled

a guest
May 3rd, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.56 KB | None | 0 0
  1. import 'package:scoped_model/scoped_model.dart';
  2. import 'package:flutter_secure_storage/flutter_secure_storage.dart';
  3. import 'package:http/http.dart' as http;
  4. import 'dart:async';
  5. import 'package:async/async.dart';
  6. import 'dart:convert';
  7.  
  8. import '../../model/argo/utility_api.dart';
  9. import '../../model/argo/orario_model.dart';
  10.  
  11. mixin Orario on Model {
  12. final UtilityApi _api = UtilityApi();
  13. List<OrarioModel> _orarioList;
  14. final AsyncMemoizer _memoizer = AsyncMemoizer();
  15.  
  16. List<OrarioModel> get orarioList {
  17. return _orarioList;
  18. }
  19.  
  20. Future<List<OrarioModel>> orario() async {
  21. var response = await _fetchOrario();
  22. _memoizer.runOnce(() async {
  23. _orarioList =
  24. List<OrarioModel>.generate(response["dati"].length, (int i) =>
  25. OrarioModel.fromJson(response["dati"][i]),
  26. );
  27. // print(response['dati'][0]["lezioni"][0]["docente"]);
  28. print(response['dati'][0]["giorno"]);
  29. });
  30. //print('Orario');
  31. //print(_orarioList[0].day);
  32. notifyListeners();
  33. return _orarioList;
  34. }
  35.  
  36. Future<dynamic> _fetchOrario({DateTime date}) async {
  37. final _storage = new FlutterSecureStorage();
  38. final String takeToken = await _storage.read(key: 'token');
  39. final String takeCode = await _storage.read(key: 'schoolCode');
  40. final String takeUser = await _storage.read(key: 'username');
  41. final String takePass = await _storage.read(key: 'password');
  42. final String takeSchool = await _storage.read(key: 'prgScuola');
  43. final String takeStudent = await _storage.read(key: 'prgAlunno');
  44. if (date == null) date = DateTime.now();
  45.  
  46. Map<String, String> headers = {
  47. 'x-key-app': _api.apiKey,
  48. 'x-version': _api.version,
  49. 'user-agent': _api.userAgent,
  50. 'x-cod-min': 'ss$takeCode',
  51. 'x-auth-token': takeToken,
  52. 'x-user-id': takeUser,
  53. 'x-pwd': takePass,
  54. 'x-prg-alunno': takeStudent,
  55. 'x-prg-scuola': takeSchool,
  56. 'x-prg-scheda': _api.prgScheda
  57. };
  58.  
  59. final response = await http.get(
  60. Uri(
  61. scheme: _api.apiUrl[0],
  62. host: _api.apiUrl[1],
  63. path: _api.apiUrl[2] + "orario",
  64. queryParameters: {
  65. "_dc": date.millisecondsSinceEpoch.toString(),
  66. },
  67. ),
  68. headers: headers);
  69. //print(headers);
  70.  
  71. if (response.statusCode != 200) {
  72. throw new Exception(
  73. "orario failed\n${response.request}\n${response.statusCode} : ${response.body}");
  74. }
  75. final decoded = jsonDecode(response.body);
  76. notifyListeners();
  77. return decoded;
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement