Skip to content

fnproject/fn_go

Folders and files

NameName
Last commit message
Last commit date
Jun 21, 2023
Sep 13, 2018
Dec 8, 2020
Sep 13, 2018
Sep 13, 2018
Jun 21, 2023
Jan 24, 2024
Mar 14, 2024
Feb 23, 2019
Aug 30, 2017
Jun 28, 2018
Sep 13, 2018
Mar 6, 2020
Mar 14, 2024
Mar 14, 2024
Dec 8, 2020

Repository files navigation

FnProject SDK

This is a golang SDK for accessing the Fn API - it allows you to create and modify applications and functions programmatically.

Most of the code in the repository is automatically generated from the latest Fn project API Swagger.

To generate a new client manually:

  • Clone a local copy of fn, this will be used to provide a path to the swagger spec into your go path (e.g. ../fn from this repo)

Run the following commands:

./regenerate.sh

Example:

package main

import (
	"github.com/fnproject/fn_go/provider"
	"github.com/fnproject/fn_go"
	"github.com/fnproject/fn_go/client/apps"
	"context"
	"fmt"
)

func main() {

	config := provider.NewConfigSourceFromMap(map[string]string{
		"api-url": "http://localhost:8080",
	})

	currentProvider, err := fn_go.DefaultProviders.ProviderFromConfig("default", config, &provider.NopPassPhraseSource{})

	if err != nil {
		panic(err.Error())
	}

	appClient := currentProvider.APIClient().Apps

	ctx := context.Background()

	var cursor string
	for {
		params := &apps.GetAppsParams{
			Context: ctx,
		}
		if cursor != "" {
			params.Cursor = &cursor
		}

		gotApps, err := appClient.GetApps(params)
		if err != nil {
			panic(err.Error())
		}

		for _, app := range gotApps.Payload.Apps {
			fmt.Printf("App %s\n", app.Name)
		}

		if gotApps.Payload.NextCursor == "" {
			break
		}
		cursor = gotApps.Payload.NextCursor
	}
}