xmpp-webhook

webhook to xmpp gateway (clone of https://github.com/opthomas-prime/xmpp-webhook/ with my own mods)
git clone https://git.e1e0.net/xmpp-webhook.git
Log | Files | Refs | README | LICENSE

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 }