Files
auto-attendance/internal/app/qrminator.go

105 lines
2.6 KiB
Go

// 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 <https://www.gnu.org/licenses/>.
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{},
}
}