Browse Source

reorganize code + implement /info

master
Nicolas Massé 6 years ago
parent
commit
acf3044ef0
  1. 51
      main.go

51
main.go

@ -131,7 +131,7 @@ func main() {
continue continue
} }
err := newAlbum(username, 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)
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgServerError")) replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgServerError"))
@ -139,6 +139,18 @@ func main() {
} }
replyWithMessage(bot, update.Message, viper.GetString("MsgAlbumCreated")) replyWithMessage(bot, update.Message, viper.GetString("MsgAlbumCreated"))
} else if strings.HasPrefix(text, "/info") {
if albumAlreadyOpen() {
albumName, err := getInfo()
if err != nil {
log.Printf("[%s] cannot close current album: %s", username, err)
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgServerError"))
continue
}
replyWithMessage(bot, update.Message, fmt.Sprintf(viper.GetString("MsgInfo"), albumName))
} else {
replyWithMessage(bot, update.Message, viper.GetString("MsgInfoNoAlbum"))
}
} else if strings.HasPrefix(text, "/cloreAlbum") { } else if strings.HasPrefix(text, "/cloreAlbum") {
if !albumAlreadyOpen() { if !albumAlreadyOpen() {
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgNoAlbum")) replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgNoAlbum"))
@ -403,7 +415,13 @@ func closeAlbum() error {
return err return err
} }
err = os.Rename(target_dir + "/data/.current/", target_dir + "/data/" + metadata["folder"]) date, err := time.Parse("2006-01-02T15:04:05-0700", metadata["date"])
if err != nil {
return err
}
folderName := date.Format("2006-01-02") + "-" + sanitizeAlbumName(metadata["title"])
err = os.Rename(target_dir + "/data/.current/", target_dir + "/data/" + folderName)
if err != nil { if err != nil {
return err return err
} }
@ -411,20 +429,38 @@ func closeAlbum() error {
return nil return nil
} }
func getInfo() (string, error) {
target_dir := viper.GetString("TargetDir")
yamlData, err := ioutil.ReadFile(target_dir + "/data/.current/meta.yaml")
if err != nil {
return "", err
}
var metadata map[string]string = make(map[string]string)
err = yaml.UnmarshalStrict(yamlData, &metadata)
if err != nil {
return "", err
}
return metadata["title"], nil
}
func albumAlreadyOpen() bool { func albumAlreadyOpen() bool {
target_dir := viper.GetString("TargetDir") target_dir := viper.GetString("TargetDir")
_, err := os.Stat(target_dir + "/data/.current") _, err := os.Stat(target_dir + "/data/.current")
return err == nil return err == nil
} }
func newAlbum(username string, 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,
"firstname": message.From.FirstName,
"lastname": message.From.LastName,
"date": time.Now().Format("2006-01-02T15:04:05-0700"), "date": time.Now().Format("2006-01-02T15:04:05-0700"),
"folder": fmt.Sprintf("%s-%s", time.Now().Format("2006-01-02"), sanitizeAlbumName(albumName)),
} }
yamlData, err := yaml.Marshal(metadata) yamlData, err := yaml.Marshal(metadata)
@ -437,11 +473,6 @@ func newAlbum(username string, albumName string) error {
return err return err
} }
err = ioutil.WriteFile(target_dir + "/data/.current/chat.yaml", []byte{}, 0644)
if err != nil {
return err
}
return nil return nil
} }
@ -468,7 +499,7 @@ func addMessageToAlbum(message *tgbotapi.Message) error {
} }
func appendToFile(filename string, data []byte) error { func appendToFile(filename string, data []byte) error {
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600) f, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
if err != nil { if err != nil {
return err return err
} }

Loading…
Cancel
Save