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"`
|
EnvName string `json:"envname,omitempty"`
|
||||||
FileName string `json:"filename,omitempty"`
|
FileName string `json:"filename,omitempty"`
|
||||||
Base64Decode bool `json:"base64decode,omitempty"`
|
Base64Decode bool `json:"base64decode,omitempty"`
|
||||||
|
DeleteOnExit bool `json:"deleteOnExit,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get Argument method returns the value for the Argument's key name
|
// Get Argument method returns the value for the Argument's key name
|
||||||
|
@ -498,6 +499,7 @@ func (h *Hook) ExtractCommandArgumentsForEnv(headers, query, payload *map[string
|
||||||
type FileParameter struct {
|
type FileParameter struct {
|
||||||
Filename string
|
Filename string
|
||||||
Data []byte
|
Data []byte
|
||||||
|
DeleteOnExit bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExtractCommandArgumentsForFile creates a list of arguments in key=value
|
// 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)
|
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 {
|
} else {
|
||||||
errors = append(errors, &ArgumentError{h.PassFileToCommand[i]})
|
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 {
|
for i := range files {
|
||||||
var filename string
|
|
||||||
if h.CommandWorkingDirectory != "" {
|
if h.CommandWorkingDirectory != "" {
|
||||||
filename = h.CommandWorkingDirectory + "/" + files[i].Filename
|
files[i].Filename = h.CommandWorkingDirectory + "/" + files[i].Filename
|
||||||
} else {
|
|
||||||
filename = files[i].Filename
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("writing file %s", filename)
|
log.Printf("writing file %s", files[i].Filename)
|
||||||
|
err := ioutil.WriteFile(files[i].Filename, files[i].Data, 0644)
|
||||||
err := ioutil.WriteFile(filename, files[i].Data, 0644)
|
|
||||||
if err != nil {
|
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)
|
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)
|
log.Printf("finished handling %s\n", h.ID)
|
||||||
|
|
||||||
return string(out), err
|
return string(out), err
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue