Files
oauth2-proxy/config.go
2026-02-21 19:33:45 +03:00

50 lines
1.1 KiB
Go

package main
import (
"encoding/json"
"fmt"
"os"
"golang.org/x/oauth2"
)
func readConfig(filePath string) (*oauth2.Token, error) {
if _, err := os.Stat(filePath); os.IsNotExist(err) {
f, err := os.Create(filePath)
if err != nil {
return nil, fmt.Errorf("failed to create config file: %v", err)
}
if _, err := f.Write([]byte("{}")); err != nil {
return nil, fmt.Errorf("failed to write empty object: %v", err)
}
return &oauth2.Token{}, nil
}
f, err := os.OpenFile(filePath, os.O_RDWR, 0644)
if err != nil {
return nil, fmt.Errorf("failed to open config file: %v", err)
}
defer f.Close()
token := new(oauth2.Token)
if err := json.NewDecoder(f).Decode(token); err != nil {
return nil, fmt.Errorf("failed to decode json from config file: %v", err)
}
return token, nil
}
func writeConfig(filePath string, token *oauth2.Token) error {
f, err := os.OpenFile(filePath, os.O_WRONLY, 0644)
if err != nil {
return fmt.Errorf("failed to open config file: %v", err)
}
defer f.Close()
if err := json.NewEncoder(f).Encode(token); err != nil {
return fmt.Errorf("failed to encode json to config file: %v", err)
}
return nil
}