blamarche / boltsdk-go

Go SDK for use when creating workers for Bolt engine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

boltsdk-go

Go SDK for use when creating workers for Bolt engine

Usage: go get github.com/TeamFairmont/boltsdk-go

Code example: package main

import (
    "fmt"
    "os"
    "net/http"
	"io/ioutil"

    "github.com/TeamFairmont/boltsdk-go/boltsdk"
	"github.com/TeamFairmont/boltshared/mqwrapper"
	"github.com/TeamFairmont/gabs"
)

func main() {
    boltsdk.EnableLogOutput(true)

    //connect to mq server
	mq, err := mqwrapper.ConnectMQ("amqp://guest:guest@localhost:5672/")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

    boltsdk.RunWorker(mq, "", "fetchPage", fetchPage)

    log.Println("Worker setup complete, waiting for commands... ")

	//let our worker above process forever or until Ctrl+C
	forever := make(chan bool)
	<-forever
}

func fetchPage(payload *gabs.Container) error {
	//request the http url
	url := payload.Path("initial_input.url").Data().(string)
	payload.SetP(url, "return_value.url")

	resp, err := http.Get(url)
	if err != nil {
		payload.SetP("Error getting url content: "+err.Error(), "error.fetchPage")
		return errors.New("Error getting url content: " + err.Error())
	}

	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		payload.SetP("Error getting url content: "+err.Error(), "error.fetchPage")
		return errors.New("Error getting url content: " + err.Error())
	}
	payload.SetP(string(body), "return_value.html")

	return nil
}

About

Go SDK for use when creating workers for Bolt engine

License:MIT License


Languages

Language:Go 100.0%