Интерфейс для сервиса MyITMO на Java
RetrofitOkHttpGsonLombok
- Вход по логину/паролю ITMO ID
- Вход по refresh_token MyITMO
- Автоматическое обновление токенов
- Можно получать:
- Расписание (как уроков, так и спорта)
- QR-пропуск в корпуса (в HEX-формате)
- Свои записи на спорт (а также редактировать их)
- Зачётную книжку
- Персоналии по ID (а также искать по ФИО)
Добавьте в pom.xml:
<dependencies> <dependency> <groupId>dev.alllexey</groupId> <artifactId>my-itmo-api</artifactId> <version>1.4.0</version> </dependency> </dependencies>- Логин через почту/ID и пароль
MyItmo myItmo = new MyItmo(); myItmo.auth("my_cool_id", "my_strong_password");
- Логин через refresh_token (можно получить через F12 -> cookies в браузере)
MyItmo myItmo = new MyItmo(); myItmo.getStorage().setRefreshToken("long_refresh_token"); myItmo.getStorage().setRefreshExpiresAt(Long.MAX_VALUE); myItmo.forceRefreshTokens();
- Своя реализация Storage (далее)
Логины и пароли не сохраняются, и используются только один раз - при входе. Подробнее: AuthHelper.java
По умолчанию токены хранятся в памяти, рекомендуется создать свою реализацию Storage, чтобы хранить как-то иначе:
MyItmo myItmo = new MyItmo(); myItmo.setStorage(customStorageImpl);Время жизни refreshToken - 30 дней, accessToken - 30 минут; если он устареет - токены обновятся.
Методы API доступны через MyItmo#api()
Например, получение расписания на сегодня и завтра:
MyItmo myItmo = new MyItmo(); myItmo.setStorage(storageWithTokens); // или получите токены любым способом выше LocalDate now = LocalDate.now(); MyItmoResponse<List<Schedule>> r = myItmo.api().getPersonalSchedule(now, now.plusDays(1)).execute().body(); List<Schedule> schedules = r.getData();Генерировать QR-код 1-в-1 как приложение можно с помощью io.nayuki/qrcodegen таким образом:
String qrHex = "12345ABC"; QrSegment segment = QrSegment.makeBytes(qrHex.getBytes(StandardCharsets.ISO_8859_1)); QrCode qr = QrCode.encodeSegments(Collections.singletonList(segment), QrCode.Ecc.LOW, 1, 1, -1, false);