chore: initialized qrminator
This commit is contained in:
@@ -20,9 +20,11 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"git.weirdcat.su/weirdcat/auto-attendance/internal/browserlauncher"
|
||||||
"git.weirdcat.su/weirdcat/auto-attendance/internal/config"
|
"git.weirdcat.su/weirdcat/auto-attendance/internal/config"
|
||||||
"git.weirdcat.su/weirdcat/auto-attendance/internal/linkvalidator"
|
"git.weirdcat.su/weirdcat/auto-attendance/internal/linkvalidator"
|
||||||
"git.weirdcat.su/weirdcat/auto-attendance/internal/logger"
|
"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/screencapturer"
|
||||||
"git.weirdcat.su/weirdcat/auto-attendance/internal/vision"
|
"git.weirdcat.su/weirdcat/auto-attendance/internal/vision"
|
||||||
"go.uber.org/fx"
|
"go.uber.org/fx"
|
||||||
@@ -34,10 +36,13 @@ func main() {
|
|||||||
config.NewConfig,
|
config.NewConfig,
|
||||||
logger.NewLogger,
|
logger.NewLogger,
|
||||||
linkvalidator.NewLinkValidator,
|
linkvalidator.NewLinkValidator,
|
||||||
|
browserlauncher.NewBrowserLauncher,
|
||||||
screencapturer.NewWholeScreenCapturer,
|
screencapturer.NewWholeScreenCapturer,
|
||||||
vision.NewVision,
|
vision.NewVision,
|
||||||
|
qrminator.NewQrminator,
|
||||||
),
|
),
|
||||||
fx.Invoke(func() {
|
fx.Invoke(func(qrm qrminator.Qrminator) {
|
||||||
|
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
96
internal/qrminator/qrminator.go
Normal file
96
internal/qrminator/qrminator.go
Normal 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{},
|
||||||
|
}
|
||||||
|
}
|
||||||
29
internal/qrminator/stats.go
Normal file
29
internal/qrminator/stats.go
Normal 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
|
||||||
|
}
|
||||||
31
internal/qrminator/status.go
Normal file
31
internal/qrminator/status.go
Normal 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
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user