mirror of
https://github.com/adnanh/webhook.git
synced 2025-05-23 05:42:30 +00:00
Provide means to transfer files #162 add deleteOnExit
This commit is contained in:
parent
34c4b1c166
commit
395fb41d23
2 changed files with 19 additions and 11 deletions
|
@ -270,6 +270,7 @@ type Argument struct {
|
|||
EnvName string `json:"envname,omitempty"`
|
||||
FileName string `json:"filename,omitempty"`
|
||||
Base64Decode bool `json:"base64decode,omitempty"`
|
||||
DeleteOnExit bool `json:"deleteOnExit,omitempty"`
|
||||
}
|
||||
|
||||
// Get Argument method returns the value for the Argument's key name
|
||||
|
@ -496,8 +497,9 @@ func (h *Hook) ExtractCommandArgumentsForEnv(headers, query, payload *map[string
|
|||
|
||||
// FileParameter describes a pass-file-to-command instance to be stored as file
|
||||
type FileParameter struct {
|
||||
Filename string
|
||||
Data []byte
|
||||
Filename string
|
||||
Data []byte
|
||||
DeleteOnExit bool
|
||||
}
|
||||
|
||||
// ExtractCommandArgumentsForFile creates a list of arguments in key=value
|
||||
|
@ -526,7 +528,7 @@ func (h *Hook) ExtractCommandArgumentsForFile(headers, query, payload *map[strin
|
|||
fileContent = []byte(arg)
|
||||
}
|
||||
|
||||
args = append(args, FileParameter{Filename: h.PassFileToCommand[i].FileName, Data: fileContent})
|
||||
args = append(args, FileParameter{Filename: h.PassFileToCommand[i].FileName, Data: fileContent, DeleteOnExit: h.PassFileToCommand[i].DeleteOnExit})
|
||||
|
||||
} else {
|
||||
errors = append(errors, &ArgumentError{h.PassFileToCommand[i]})
|
||||
|
|
22
webhook.go
22
webhook.go
|
@ -343,18 +343,14 @@ func handleHook(h *hook.Hook, headers, query, payload *map[string]interface{}, b
|
|||
}
|
||||
|
||||
for i := range files {
|
||||
var filename string
|
||||
if h.CommandWorkingDirectory != "" {
|
||||
filename = h.CommandWorkingDirectory + "/" + files[i].Filename
|
||||
} else {
|
||||
filename = files[i].Filename
|
||||
files[i].Filename = h.CommandWorkingDirectory + "/" + files[i].Filename
|
||||
}
|
||||
|
||||
log.Printf("writing file %s", filename)
|
||||
|
||||
err := ioutil.WriteFile(filename, files[i].Data, 0644)
|
||||
log.Printf("writing file %s", files[i].Filename)
|
||||
err := ioutil.WriteFile(files[i].Filename, files[i].Data, 0644)
|
||||
if err != nil {
|
||||
log.Printf("error writing file %s [%s]", filename, err)
|
||||
log.Printf("error writing file %s [%s]", files[i].Filename, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -368,6 +364,16 @@ func handleHook(h *hook.Hook, headers, query, payload *map[string]interface{}, b
|
|||
log.Printf("error occurred: %+v\n", err)
|
||||
}
|
||||
|
||||
for i := range files {
|
||||
if files[i].DeleteOnExit {
|
||||
log.Printf("removing file: %s\n", files[i].Filename)
|
||||
err := os.Remove(files[i].Filename)
|
||||
if err != nil {
|
||||
log.Printf("error removing file %s [%s]", files[i].Filename, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("finished handling %s\n", h.ID)
|
||||
|
||||
return string(out), err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue