// Copyright (c) 2025 Nikolai Papin // // This file is part of the Auto Attendance app that looks for // self-attend QR-codes during lectures and opens their URLs in your // browser. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See // the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . package app import ( "sync" "git.weirdcat.su/weirdcat/auto-attendance/internal/browserlauncher" "git.weirdcat.su/weirdcat/auto-attendance/internal/config" "git.weirdcat.su/weirdcat/auto-attendance/internal/linkvalidator" "git.weirdcat.su/weirdcat/auto-attendance/internal/logger" "git.weirdcat.su/weirdcat/auto-attendance/internal/screencapturer" "git.weirdcat.su/weirdcat/auto-attendance/internal/vision" ) type App interface { Init() error Start() error Stop() error Toggle() error ConsoleOutput() (string, error) UpdateConfig(string) error } type appImpl struct { config *config.Config log *logger.Logger capturer screencapturer.ScreenCapturer vision vision.Vision validator linkvalidator.LinkValidator launcher browserlauncher.BrowserLauncher active bool stats Stats mu sync.Mutex } // ConsoleOutput implements App. func (a *appImpl) ConsoleOutput() (string, error) { // TODO: Outputing stdout/logs content panic("unimplemented") } // Init implements App. func (a *appImpl) Init() error { panic("unimplemented") } // Start implements App. func (a *appImpl) Start() error { panic("unimplemented") } // Stop implements App. func (a *appImpl) Stop() error { panic("unimplemented") } // Toggle implements App. func (a *appImpl) Toggle() error { panic("unimplemented") } // UpdateConfig implements App. func (a *appImpl) UpdateConfig(string) error { panic("unimplemented") } func NewApp( cfg *config.Config, log *logger.Logger, capt screencapturer.ScreenCapturer, vis vision.Vision, val linkvalidator.LinkValidator, launch browserlauncher.BrowserLauncher, ) App { return &appImpl{ config: cfg, log: log, capturer: capt, vision: vis, validator: val, launcher: launch, active: false, stats: Stats{}, } }