feat: add basic miniflux conection

This commit is contained in:
Alexander Navarro 2024-12-17 20:11:19 -03:00
parent 1459abdd84
commit 22b4abf73b
7 changed files with 173 additions and 6 deletions

17
internal/app/archive.go Normal file
View 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
View 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
View 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)
}

View 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
}