chore: initialized qrminator

This commit is contained in:
2025-11-26 21:12:30 +03:00
parent a7af6f383a
commit 1e2b717ce8
4 changed files with 162 additions and 1 deletions

View File

@@ -20,9 +20,11 @@
package main
import (
"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/qrminator"
"git.weirdcat.su/weirdcat/auto-attendance/internal/screencapturer"
"git.weirdcat.su/weirdcat/auto-attendance/internal/vision"
"go.uber.org/fx"
@@ -34,10 +36,13 @@ func main() {
config.NewConfig,
logger.NewLogger,
linkvalidator.NewLinkValidator,
browserlauncher.NewBrowserLauncher,
screencapturer.NewWholeScreenCapturer,
vision.NewVision,
qrminator.NewQrminator,
),
fx.Invoke(func() {
fx.Invoke(func(qrm qrminator.Qrminator) {
}),
)

View File

@@ -0,0 +1,96 @@
// 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 qrminator
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 Qrminator interface {
Init() error
Start() error
Stop() error
Toggle() error
ConsoleOutput() (string, error)
UpdateConfig(string) error
}
type qrminatorImpl 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 Qrminator.
func (q *qrminatorImpl) ConsoleOutput() (string, error) {
panic("unimplemented")
}
// Init implements Qrminator.
func (q *qrminatorImpl) Init() error {
panic("unimplemented")
}
// Start implements Qrminator.
func (q *qrminatorImpl) Start() error {
panic("unimplemented")
}
// Stop implements Qrminator.
func (q *qrminatorImpl) Stop() error {
panic("unimplemented")
}
// Toggle implements Qrminator.
func (q *qrminatorImpl) Toggle() error {
panic("unimplemented")
}
// UpdateConfig implements Qrminator.
func (q *qrminatorImpl) UpdateConfig(string) error {
panic("unimplemented")
}
func NewQrminator(cfg *config.Config, log *logger.Logger, capt screencapturer.ScreenCapturer, vis vision.Vision, val linkvalidator.LinkValidator, launch browserlauncher.BrowserLauncher) Qrminator {
return &qrminatorImpl{
config: cfg,
log: log,
capturer: capt,
vision: vis,
validator: val,
launcher: launch,
active: false,
stats: Stats{},
}
}

View File

@@ -0,0 +1,29 @@
// 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 qrminator
import "time"
type Stats struct {
Status QrminatorStatus
Uptime time.Duration
FoundAmount int
Link string
}

View File

@@ -0,0 +1,31 @@
// 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 qrminator
type QrminatorStatus int16
const (
Offline QrminatorStatus = iota
Waiting
Screenshotting
Analyzing
Validating
Completed
)