Categorygithub.com/define42/goflowfilev3
repositorypackage
1.0.5
Repository: https://github.com/define42/goflowfilev3.git
Documentation: pkg.go.dev

# README

goflowfilev3

Golang library for reading and writing Apache NiFi FlowFile v3

Reading NiFi flowfile v3 with goflowfilev3

package main

import (
        "fmt"
        "os"
        "github.com/define42/goflowfilev3"
)

func main() {
        file, err := os.Open("testdata/dcfa9c64-d0c3-443d-a9b7-2fbb8720ddda") // Replace with your file path
        if err != nil {
                fmt.Println("Error opening file:", err)
                return
        }
        defer file.Close()

        unpackager := goflowfilev3.NewFlowFileUnpackagerV3()

        for {
                attributes, err := unpackager.UnpackageFlowFile(file)
                if err != nil {
                        fmt.Println("Error unpackaging flow file:", err)
                        return
                }

                for key, value := range attributes {
                        fmt.Println("Key:", key, "Value:", value)
                }
                err = unpackager.GetData(file, os.Stdout)

                if err != nil {
                        fmt.Println("Error getting payload:", err)
                        return
                }

        }
}

Writing NiFi flowfile v3 with goflowfilev3

package main

import (
	"bytes"
	"fmt"
	"os"

	"github.com/define42/goflowfilev3"
)

func main() {
	packager := goflowfilev3.NewFlowFilePackagerV3()
	fileContent := "Hello, NiFi!"
	attributes := map[string]string{
		"Author": "John Doe",
		"Type":   "Example",
	}

	file, err := os.Create("flowfile.bin")
	if err != nil {
		fmt.Println("Error opening file:", err)
		return
	}
	defer file.Close()

	err = packager.PackageFlowFile(bytes.NewReader([]byte(fileContent)), file, attributes, int64(len(fileContent)))
	if err != nil {
		fmt.Println("Error creating flow file:", err)
		return
	}
}