All checks were successful
Build / build (push) Successful in 5m28s
Refactor the gRPC client and task handling logic to improve modularity, error handling, and observability. - Split `grpc/handler.go` into specialized handler files (login, classroom, exams, grades, schedule) to reduce complexity. - Replace standard `log` with `log/slog` throughout the project for structured logging. - Refactor `grpc/client.go` to use a thread-safe connection management pattern with `sync.RWMutex`. - Remove the legacy `service` package and HTTP server implementation, transitioning the application to a pure gRPC runner mode. - Clean up `config` and `pkg/errors` to remove unused utilities and simplify the API. - Improve error reporting in parsers and HTTP clients by checking response status codes.
34 lines
496 B
Go
34 lines
496 B
Go
package errors
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
var ErrLoginFailed = errors.New("login failed")
|
|
|
|
type ScheduleError struct {
|
|
Op string
|
|
Err error
|
|
Msg string
|
|
}
|
|
|
|
func (e *ScheduleError) Error() string {
|
|
if e.Msg != "" {
|
|
return fmt.Sprintf("%s: %s: %v", e.Op, e.Msg, e.Err)
|
|
}
|
|
return fmt.Sprintf("%s: %v", e.Op, e.Err)
|
|
}
|
|
|
|
func (e *ScheduleError) Unwrap() error {
|
|
return e.Err
|
|
}
|
|
|
|
func New(op string, err error, msg string) error {
|
|
return &ScheduleError{
|
|
Op: op,
|
|
Err: err,
|
|
Msg: msg,
|
|
}
|
|
}
|