Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:scoped_model/scoped_model.dart';
- import 'package:flutter_secure_storage/flutter_secure_storage.dart';
- import 'package:http/http.dart' as http;
- import 'dart:async';
- import 'package:async/async.dart';
- import 'dart:convert';
- import '../../model/argo/utility_api.dart';
- import '../../model/argo/orario_model.dart';
- mixin Orario on Model {
- final UtilityApi _api = UtilityApi();
- List<OrarioModel> _orarioList;
- final AsyncMemoizer _memoizer = AsyncMemoizer();
- List<OrarioModel> get orarioList {
- return _orarioList;
- }
- Future<List<OrarioModel>> orario() async {
- var response = await _fetchOrario();
- _memoizer.runOnce(() async {
- _orarioList =
- List<OrarioModel>.generate(response["dati"].length, (int i) =>
- OrarioModel.fromJson(response["dati"][i]),
- );
- // print(response['dati'][0]["lezioni"][0]["docente"]);
- print(response['dati'][0]["giorno"]);
- });
- //print('Orario');
- //print(_orarioList[0].day);
- notifyListeners();
- return _orarioList;
- }
- Future<dynamic> _fetchOrario({DateTime date}) async {
- final _storage = new FlutterSecureStorage();
- final String takeToken = await _storage.read(key: 'token');
- final String takeCode = await _storage.read(key: 'schoolCode');
- final String takeUser = await _storage.read(key: 'username');
- final String takePass = await _storage.read(key: 'password');
- final String takeSchool = await _storage.read(key: 'prgScuola');
- final String takeStudent = await _storage.read(key: 'prgAlunno');
- if (date == null) date = DateTime.now();
- Map<String, String> headers = {
- 'x-key-app': _api.apiKey,
- 'x-version': _api.version,
- 'user-agent': _api.userAgent,
- 'x-cod-min': 'ss$takeCode',
- 'x-auth-token': takeToken,
- 'x-user-id': takeUser,
- 'x-pwd': takePass,
- 'x-prg-alunno': takeStudent,
- 'x-prg-scuola': takeSchool,
- 'x-prg-scheda': _api.prgScheda
- };
- final response = await http.get(
- Uri(
- scheme: _api.apiUrl[0],
- host: _api.apiUrl[1],
- path: _api.apiUrl[2] + "orario",
- queryParameters: {
- "_dc": date.millisecondsSinceEpoch.toString(),
- },
- ),
- headers: headers);
- //print(headers);
- if (response.statusCode != 200) {
- throw new Exception(
- "orario failed\n${response.request}\n${response.statusCode} : ${response.body}");
- }
- final decoded = jsonDecode(response.body);
- notifyListeners();
- return decoded;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement