generated from alecodes/base-template
feat: add basic miniflux conection
This commit is contained in:
parent
1459abdd84
commit
22b4abf73b
7 changed files with 173 additions and 6 deletions
17
internal/app/archive.go
Normal file
17
internal/app/archive.go
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
package app
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/logger"
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/miniflux"
|
||||
)
|
||||
|
||||
func Archive(minifluxConfig miniflux.MinifluxConfig, serviceConfig ServiceConfig) {
|
||||
mf, err := miniflux.NewMiniflux(minifluxConfig)
|
||||
if err != nil {
|
||||
logger.Fatal("Could not connect to the miniflux server: %v", err)
|
||||
}
|
||||
|
||||
fmt.Println(mf)
|
||||
}
|
||||
8
internal/app/service.go
Normal file
8
internal/app/service.go
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
package app
|
||||
|
||||
type ServiceConfig struct {
|
||||
Service string
|
||||
Host string
|
||||
User string
|
||||
Token string
|
||||
}
|
||||
88
internal/logger/logger.go
Normal file
88
internal/logger/logger.go
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
package logger
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
const (
|
||||
verbose = 1 << iota
|
||||
info
|
||||
error
|
||||
debug
|
||||
)
|
||||
|
||||
func getLogger(level int, prefix string) *log.Logger {
|
||||
var output io.Writer
|
||||
|
||||
if level == error {
|
||||
output = os.Stderr
|
||||
} else {
|
||||
output = os.Stdout
|
||||
}
|
||||
|
||||
// TODO: get from config
|
||||
configLevel := debug
|
||||
|
||||
if configLevel < level {
|
||||
output = io.Discard
|
||||
}
|
||||
|
||||
prefix = fmt.Sprintf("%-*s", 6, prefix)
|
||||
|
||||
logger := log.New(output, prefix, log.Ldate|log.Ltime|log.Lmicroseconds|log.Lmsgprefix)
|
||||
|
||||
return logger
|
||||
}
|
||||
|
||||
func logMessage(level string, message string) {
|
||||
currentLevel := viper.GetString("log_level")
|
||||
|
||||
levels := map[string]int{
|
||||
"verbose": 1,
|
||||
"info": 2,
|
||||
"error": 3,
|
||||
"debug": 4,
|
||||
}
|
||||
|
||||
if levels[currentLevel] <= levels[level] {
|
||||
timestamp := time.Now().Format("2006-01-02 15:04:05")
|
||||
prefix := strings.ToUpper(level)
|
||||
fmt.Printf("%-7s %s %s\n", prefix, timestamp, message)
|
||||
}
|
||||
}
|
||||
|
||||
func Verbose(message string) {
|
||||
logger := getLogger(verbose, "VERB")
|
||||
logger.Println(message)
|
||||
}
|
||||
|
||||
func Info(message string, args ...any) {
|
||||
logger := getLogger(info, "INFO")
|
||||
msg := fmt.Sprintf(message, args...)
|
||||
logger.Println(msg)
|
||||
}
|
||||
|
||||
func Error(message string, args ...any) {
|
||||
logger := getLogger(error, "ERROR")
|
||||
msg := fmt.Sprintf(message, args...)
|
||||
logger.Println(msg)
|
||||
}
|
||||
|
||||
func Debug(message string, args ...any) {
|
||||
logger := getLogger(debug, "DEBUG")
|
||||
msg := fmt.Sprintf(message, args...)
|
||||
logger.Println(msg)
|
||||
}
|
||||
|
||||
func Fatal(message string, args ...any) {
|
||||
logger := getLogger(error, "FATAL")
|
||||
msg := fmt.Sprintf(message, args...)
|
||||
logger.Fatalln(msg)
|
||||
}
|
||||
33
internal/miniflux/miniflux.go
Normal file
33
internal/miniflux/miniflux.go
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
package miniflux
|
||||
|
||||
import (
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/logger"
|
||||
mfApi "miniflux.app/v2/client"
|
||||
)
|
||||
|
||||
type MinifluxConfig struct {
|
||||
Host string
|
||||
User string
|
||||
Token string
|
||||
}
|
||||
|
||||
type Miniflux struct {
|
||||
MinifluxConfig
|
||||
client *mfApi.Client
|
||||
}
|
||||
|
||||
func NewMiniflux(config MinifluxConfig) (*Miniflux, error) {
|
||||
mf := &Miniflux{
|
||||
MinifluxConfig: config,
|
||||
client: mfApi.NewClient(config.Host, config.Token),
|
||||
}
|
||||
|
||||
version, err := mf.client.Version()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
logger.Info("Miniflux server version: %v", version.Version)
|
||||
|
||||
return mf, nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue