12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package payload
- import (
- "os"
- "path/filepath"
- "github.com/claudiodangelis/qrcp/util"
- )
- // Payload to transfer
- type Payload struct {
- Filename string
- Path string
- DeleteAfterTransfer bool
- }
- // Delete the payload from disk
- func (p Payload) Delete() error {
- return os.RemoveAll(p.Path)
- }
- // FromArgs returns a payload from args
- func FromArgs(args []string, zipFlag bool) (Payload, error) {
- shouldzip := len(args) > 1 || zipFlag
- var files []string
- // Check if content exists
- for _, arg := range args {
- file, err := os.Stat(arg)
- if err != nil {
- return Payload{}, err
- }
- // If at least one argument is dir, the content will be zipped
- if file.IsDir() {
- shouldzip = true
- }
- files = append(files, arg)
- }
- // Prepare the content
- // TODO: Research cleaner code
- var content string
- if shouldzip {
- zip, err := util.ZipFiles(files)
- if err != nil {
- return Payload{}, err
- }
- content = zip
- } else {
- content = args[0]
- }
- return Payload{
- Path: content,
- Filename: filepath.Base(content),
- DeleteAfterTransfer: shouldzip,
- }, nil
- }
|