Files
fn-serverless/vendor/github.com/fnproject/fdk-go
Reed Allman 206aa3c203 opentracing -> opencensus (#802)
* update vendor directory, add go.opencensus.io

* update imports

* oops

* s/opentracing/opencensus/ & remove prometheus / zipkin stuff & remove old stats

* the dep train rides again

* fix gin build

* deps from last guy

* start in on the agent metrics

* she builds

* remove tags for now, cardinality error is fussing. subscribe instead of register

* update to patched version of opencensus to proceed for now TODO switch to a release

* meh

fix imports

* println debug the bad boys

* lace it with the tags

* update deps again

* fix all inconsistent cardinality errors

* add our own logger

* fix init

* fix oom measure

* remove bugged removal code

* fix s3 measures

* fix prom handler nil
2018-03-05 09:35:28 -08:00
..
2018-03-05 09:35:28 -08:00
2018-03-05 09:35:28 -08:00
2018-03-05 09:35:28 -08:00
2018-03-05 09:35:28 -08:00
2018-01-09 14:11:08 -08:00
2018-03-05 09:35:28 -08:00

Go Fn Development Kit (FDK)

GoDoc

fdk-go provides convenience functions for writing Go fn code

For getting started with fn, please refer to https://github.com/fnproject/fn/blob/master/README.md

Installing fdk-go

go get github.com/fnproject/fdk-go

or your favorite vendoring solution :)

Examples

For a simple getting started, see the examples and follow the README. If you already have fn set up it will take 2 minutes!

Advanced example

TODO going to move to examples too :)

package main

import (
  "context"
  "fmt"
  "io"
  "encoding/json"
  
  fdk "github.com/fnproject/fdk-go"
  "net/http"
)

func main() {
  fdk.Handle(fdk.HandlerFunc(myHandler))
}

func myHandler(ctx context.Context, in io.Reader, out io.Writer) {
  fnctx := fdk.Context(ctx)

  contentType := fnctx.Header.Get("Content-Type")
  if contentType != "application/json" {
    fdk.WriteStatus(out, 400)
    fdk.SetHeader(out, "Content-Type", "application/json")
    io.WriteString(out, `{"error":"invalid content type"}`)
    return
  }

  if fnctx.Config["FN_METHOD"] != "PUT" {
    fdk.WriteStatus(out, 404)
    fdk.SetHeader(out, "Content-Type", "application/json")
    io.WriteString(out, `{"error":"route not found"}`)
    return
  }

  var person struct {
    Name string `json:"name"`
  }
  json.NewDecoder(in).Decode(&person)

  // you can write your own headers & status, if you'd like to
  fdk.WriteStatus(out, 201)
  fdk.SetHeader(out, "Content-Type", "application/json")

  all := struct {
    Name   string            `json:"name"`
    Header http.Header       `json:"header"`
    Config map[string]string `json:"config"`
  }{
    Name: person.Name,
    Header: fnctx.Header,
    Config: fnctx.Config,
  }

  json.NewEncoder(out).Encode(&all)
}