actions.go (1336B)
1 package main 2 3 import ( 4 "errors" 5 "fmt" 6 "io" 7 "log" 8 "os" 9 "regexp" 10 11 "github.com/emgee/go-xmpp/src/xmpp" 12 ) 13 14 func parseMessage(body []xmpp.MessageBody, flagsFolder string) error { 15 for _, m := range body { 16 log.Printf("Parsing command '%s'\n", m.Value) 17 re := regexp.MustCompile(`AC:\d{4}`) 18 alertCode := re.FindString(m.Value) 19 if len(alertCode) == 0 { 20 log.Printf("ERROR: Command unknown") 21 return errors.New("ERROR: Command unknown") 22 } 23 log.Printf("Found alert code in command '%s'", alertCode) 24 if err := createFolder(flagsFolder); err != nil { 25 log.Printf("ERROR: %s", err.Error()) 26 return err 27 } 28 err := writeFileFlag(flagsFolder+"/"+alertCode, alertCode) 29 if err != nil { 30 log.Printf("ERROR (on file creation): %s", err.Error()) 31 return err 32 } 33 } 34 return nil 35 } 36 37 func writeFileFlag(filename string, data string) error { 38 file, err := os.Create(filename) 39 if err != nil { 40 return err 41 } 42 defer file.Close() 43 44 _, err = io.WriteString(file, data) 45 if err != nil { 46 return err 47 } 48 return file.Sync() 49 } 50 51 func createFolder(path string) error { 52 if _, err := os.Stat(path); err != nil { 53 if os.IsNotExist(err) { 54 err = os.Mkdir(path, 0770) 55 if err != nil { 56 return fmt.Errorf("Error while creating folder!") 57 } 58 } else { 59 return fmt.Errorf("Folder exists, but not writable!") 60 } 61 } 62 return nil 63 }