Browse Source

go fmt

master
Nicolas Massé 6 years ago
parent
commit
f23dd96988
  1. 124
      main.go

124
main.go

@ -1,21 +1,21 @@
package main package main
import ( import (
"log"
"os"
"io"
"net/http"
"fmt" "fmt"
"strings"
"time"
"io/ioutil"
"regexp"
"github.com/go-telegram-bot-api/telegram-bot-api" "github.com/go-telegram-bot-api/telegram-bot-api"
"github.com/spf13/viper" "github.com/spf13/viper"
"unicode" "golang.org/x/text/transform"
"golang.org/x/text/transform"
"golang.org/x/text/unicode/norm" "golang.org/x/text/unicode/norm"
"gopkg.in/yaml.v2" "gopkg.in/yaml.v2"
"io"
"io/ioutil"
"log"
"net/http"
"os"
"regexp"
"strings"
"time"
"unicode"
) )
var chatDB map[string]int64 = make(map[string]int64) var chatDB map[string]int64 = make(map[string]int64)
@ -55,7 +55,7 @@ func main() {
} }
target_dir := viper.GetString("TargetDir") target_dir := viper.GetString("TargetDir")
if (target_dir == "") { if target_dir == "" {
panic("No target directory provided!") panic("No target directory provided!")
} }
_, err = os.Stat(target_dir) _, err = os.Stat(target_dir)
@ -69,11 +69,11 @@ func main() {
} }
authorized_users := map[string]bool{} authorized_users := map[string]bool{}
for _, item := range authorized_users_list { for _, item := range authorized_users_list {
authorized_users[item] = true authorized_users[item] = true
} }
token := viper.GetString("TelegramToken") token := viper.GetString("TelegramToken")
if (token == "") { if token == "" {
panic("No Telegram Bot Token provided!") panic("No Telegram Bot Token provided!")
} }
@ -99,11 +99,11 @@ func main() {
text := update.Message.Text text := update.Message.Text
username := update.Message.From.UserName username := update.Message.From.UserName
if (username == "") { if username == "" {
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgNoUsername")) replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgNoUsername"))
continue continue
} }
if (! authorized_users[username]) { if !authorized_users[username] {
log.Printf("[%s] unauthorized user", username) log.Printf("[%s] unauthorized user", username)
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgForbidden")) replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgForbidden"))
continue continue
@ -131,7 +131,7 @@ func main() {
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgAlbumAlreadyCreated")) replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgAlbumAlreadyCreated"))
continue continue
} }
err := newAlbum(update.Message, albumName) err := newAlbum(update.Message, albumName)
if err != nil { if err != nil {
log.Printf("[%s] cannot create album '%s': %s", username, albumName, err) log.Printf("[%s] cannot create album '%s': %s", username, albumName, err)
@ -164,7 +164,7 @@ func main() {
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgServerError")) replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgServerError"))
continue continue
} }
replyWithMessage(bot, update.Message, viper.GetString("MsgAlbumClosed")) replyWithMessage(bot, update.Message, viper.GetString("MsgAlbumClosed"))
default: default:
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgDoNotUnderstand")) replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgDoNotUnderstand"))
@ -233,14 +233,14 @@ func updateChatDB(message *tgbotapi.Message) error {
if _, ok := chatDB[message.From.UserName]; !ok { if _, ok := chatDB[message.From.UserName]; !ok {
chatDB[message.From.UserName] = message.Chat.ID chatDB[message.From.UserName] = message.Chat.ID
yamlData, err := yaml.Marshal(chatDB) yamlData, err := yaml.Marshal(chatDB)
if err != nil { if err != nil {
return err return err
} }
os.MkdirAll(target_dir + "/db/", os.ModePerm) os.MkdirAll(target_dir+"/db/", os.ModePerm)
err = ioutil.WriteFile(target_dir + "/db/chatdb.yaml", yamlData, 0644) err = ioutil.WriteFile(target_dir+"/db/chatdb.yaml", yamlData, 0644)
if err != nil { if err != nil {
return err return err
} }
@ -272,7 +272,7 @@ func dispatchMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message) {
} }
msg := tgbotapi.NewForward(chatDB[user], message.Chat.ID, message.MessageID) msg := tgbotapi.NewForward(chatDB[user], message.Chat.ID, message.MessageID)
_, err := bot.Send(msg) _, err := bot.Send(msg)
if err != nil { if err != nil {
log.Printf("[%s] Cannot dispatch message to %s (chat id = %d)", message.From.UserName, user, chatDB[user]) log.Printf("[%s] Cannot dispatch message to %s (chat id = %d)", message.From.UserName, user, chatDB[user])
@ -284,7 +284,7 @@ func dispatchMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message) {
func handlePhoto(bot *tgbotapi.BotAPI, message *tgbotapi.Message) error { func handlePhoto(bot *tgbotapi.BotAPI, message *tgbotapi.Message) error {
fileId := "" fileId := ""
maxWidth := 0 maxWidth := 0
for _, photo := range (*message.Photo) { for _, photo := range *message.Photo {
if photo.Width > maxWidth { if photo.Width > maxWidth {
fileId = photo.FileID fileId = photo.FileID
maxWidth = photo.Width maxWidth = photo.Width
@ -299,21 +299,21 @@ func handlePhoto(bot *tgbotapi.BotAPI, message *tgbotapi.Message) error {
// parse the message timestamp // parse the message timestamp
t := time.Unix(int64(message.Date), 0) t := time.Unix(int64(message.Date), 0)
chat := [1]map[string]string{{ chat := [1]map[string]string{{
"type": "photo", "type": "photo",
"date": t.Format("2006-01-02T15:04:05-0700"), "date": t.Format("2006-01-02T15:04:05-0700"),
"username": message.From.UserName, "username": message.From.UserName,
"firstname": message.From.FirstName, "firstname": message.From.FirstName,
"lastname": message.From.LastName, "lastname": message.From.LastName,
"filename": photoFileName, "filename": photoFileName,
}} }}
yamlData, err := yaml.Marshal(chat) yamlData, err := yaml.Marshal(chat)
if err != nil { if err != nil {
return err return err
} }
target_dir := viper.GetString("TargetDir") target_dir := viper.GetString("TargetDir")
return appendToFile(target_dir + "/data/.current/chat.yaml", yamlData) return appendToFile(target_dir+"/data/.current/chat.yaml", yamlData)
} }
func handleVideo(bot *tgbotapi.BotAPI, message *tgbotapi.Message) error { func handleVideo(bot *tgbotapi.BotAPI, message *tgbotapi.Message) error {
@ -330,22 +330,22 @@ func handleVideo(bot *tgbotapi.BotAPI, message *tgbotapi.Message) error {
// parse the message timestamp // parse the message timestamp
t := time.Unix(int64(message.Date), 0) t := time.Unix(int64(message.Date), 0)
chat := [1]map[string]string{{ chat := [1]map[string]string{{
"type": "video", "type": "video",
"date": t.Format("2006-01-02T15:04:05-0700"), "date": t.Format("2006-01-02T15:04:05-0700"),
"username": message.From.UserName, "username": message.From.UserName,
"firstname": message.From.FirstName, "firstname": message.From.FirstName,
"lastname": message.From.LastName, "lastname": message.From.LastName,
"filename": videoFileName, "filename": videoFileName,
"thumb_filename": thumbFileName, "thumb_filename": thumbFileName,
}} }}
yamlData, err := yaml.Marshal(chat) yamlData, err := yaml.Marshal(chat)
if err != nil { if err != nil {
return err return err
} }
target_dir := viper.GetString("TargetDir") target_dir := viper.GetString("TargetDir")
return appendToFile(target_dir + "/data/.current/chat.yaml", yamlData) return appendToFile(target_dir+"/data/.current/chat.yaml", yamlData)
} }
func getFile(bot *tgbotapi.BotAPI, message *tgbotapi.Message, fileId string) (string, error) { func getFile(bot *tgbotapi.BotAPI, message *tgbotapi.Message, fileId string) (string, error) {
@ -356,10 +356,10 @@ func getFile(bot *tgbotapi.BotAPI, message *tgbotapi.Message, fileId string) (st
resp, err := http.Get(url) resp, err := http.Get(url)
if err != nil { if err != nil {
return "", err return "", err
} }
defer resp.Body.Close() defer resp.Body.Close()
// Only the first 512 bytes are used to sniff the content type. // Only the first 512 bytes are used to sniff the content type.
buffer := make([]byte, 512) buffer := make([]byte, 512)
@ -384,7 +384,7 @@ func getFile(bot *tgbotapi.BotAPI, message *tgbotapi.Message, fileId string) (st
filename := target_dir + "/data/.current/" + fileId + extension filename := target_dir + "/data/.current/" + fileId + extension
out, err := os.Create(filename) out, err := os.Create(filename)
if err != nil { if err != nil {
return "", err return "", err
} }
defer out.Close() defer out.Close()
@ -393,13 +393,13 @@ func getFile(bot *tgbotapi.BotAPI, message *tgbotapi.Message, fileId string) (st
if err != nil { if err != nil {
return "", err return "", err
} }
// Write the rest of the body to file // Write the rest of the body to file
_, err = io.Copy(out, resp.Body) _, err = io.Copy(out, resp.Body)
if err != nil { if err != nil {
return "", err return "", err
} }
return fileId + extension, nil return fileId + extension, nil
} }
@ -422,7 +422,7 @@ func closeAlbum() error {
} }
folderName := date.Format("2006-01-02") + "-" + sanitizeAlbumName(metadata["title"]) folderName := date.Format("2006-01-02") + "-" + sanitizeAlbumName(metadata["title"])
err = os.Rename(target_dir + "/data/.current/", target_dir + "/data/" + folderName) err = os.Rename(target_dir+"/data/.current/", target_dir+"/data/"+folderName)
if err != nil { if err != nil {
return err return err
} }
@ -454,22 +454,22 @@ func albumAlreadyOpen() bool {
func newAlbum(message *tgbotapi.Message, albumName string) error { func newAlbum(message *tgbotapi.Message, albumName string) error {
target_dir := viper.GetString("TargetDir") target_dir := viper.GetString("TargetDir")
os.MkdirAll(target_dir + "/data/.current", os.ModePerm) os.MkdirAll(target_dir+"/data/.current", os.ModePerm)
metadata := map[string]string{ metadata := map[string]string{
"title": albumName, "title": albumName,
"username": message.From.UserName, "username": message.From.UserName,
"firstname": message.From.FirstName, "firstname": message.From.FirstName,
"lastname": message.From.LastName, "lastname": message.From.LastName,
"date": time.Now().Format("2006-01-02T15:04:05-0700"), "date": time.Now().Format("2006-01-02T15:04:05-0700"),
} }
yamlData, err := yaml.Marshal(metadata) yamlData, err := yaml.Marshal(metadata)
if err != nil { if err != nil {
return err return err
} }
err = ioutil.WriteFile(target_dir + "/data/.current/meta.yaml", yamlData, 0644) err = ioutil.WriteFile(target_dir+"/data/.current/meta.yaml", yamlData, 0644)
if err != nil { if err != nil {
return err return err
} }
@ -483,20 +483,20 @@ func addMessageToAlbum(message *tgbotapi.Message) error {
// parse the message timestamp // parse the message timestamp
t := time.Unix(int64(message.Date), 0) t := time.Unix(int64(message.Date), 0)
chat := [1]map[string]string{{ chat := [1]map[string]string{{
"type": "text", "type": "text",
"date": t.Format("2006-01-02T15:04:05-0700"), "date": t.Format("2006-01-02T15:04:05-0700"),
"username": message.From.UserName, "username": message.From.UserName,
"firstname": message.From.FirstName, "firstname": message.From.FirstName,
"lastname": message.From.LastName, "lastname": message.From.LastName,
"message": message.Text, "message": message.Text,
}} }}
yamlData, err := yaml.Marshal(chat) yamlData, err := yaml.Marshal(chat)
if err != nil { if err != nil {
return err return err
} }
return appendToFile(target_dir + "/data/.current/chat.yaml", yamlData) return appendToFile(target_dir+"/data/.current/chat.yaml", yamlData)
} }
func appendToFile(filename string, data []byte) error { func appendToFile(filename string, data []byte) error {
@ -513,11 +513,11 @@ func appendToFile(filename string, data []byte) error {
func sanitizeAlbumName(albumName string) string { func sanitizeAlbumName(albumName string) string {
albumName = strings.ToLower(albumName) albumName = strings.ToLower(albumName)
t := transform.Chain(norm.NFD, transform.RemoveFunc(func(r rune) bool { t := transform.Chain(norm.NFD, transform.RemoveFunc(func(r rune) bool {
return unicode.Is(unicode.Mn, r) return unicode.Is(unicode.Mn, r)
}), norm.NFC) }), norm.NFC)
albumName, _, _ = transform.String(t, albumName) albumName, _, _ = transform.String(t, albumName)
reg, err := regexp.Compile("\\s+") reg, err := regexp.Compile("\\s+")
if err != nil { if err != nil {
panic(fmt.Errorf("Cannot compile regex: %s", err)) panic(fmt.Errorf("Cannot compile regex: %s", err))

Loading…
Cancel
Save