Skip to content
YASC - Yet Another Speckle Client
Go Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd
examples
pkg
.gitignore
.releaserc.json
.travis.yml
LICENSE
README.md
build.sh
go.mod
go.sum
main.go

README.md

GoSpeckle

YASC - Yet Another Speckle Client

Overview

This is a client for the Speckle Server API written in Go. The main reason for building another client in another language is that Golang offers some neat multi platform binary build capabilities (if a UI or a CLI tool is built in Go using this client as a base then it can be compiled to run on Windows, OSX, Linux and even mobile).

For the moment the package interacts with:

  • Accounts
  • Clients
  • Projects
  • Streams
  • Objects
  • Websockets (by creating a connection; handling it is up to developers)

Examples

To create a new Stream:

package main

import (
	"bytes"
	"context"
	"encoding/json"
	"fmt"
	"log"
	"net/http"
	"net/url"
	"os"

	gospeckle "github.com/speckleworks/GoSpeckle/pkg"
)

// PrintJson is a utility function to pretty print a struct as a
// JSON
func PrintJson(body interface{}) {
	var prettyJSON bytes.Buffer
	// var jsonData []byte
	jsonData, _ := json.Marshal(body)

	error := json.Indent(&prettyJSON, jsonData, "", "\t")
	if error != nil {
		log.Println("JSON parse error: ", error)
		return
	}

	log.Println(string(prettyJSON.Bytes()))
}

func main() {
	ctx := context.TODO()

	httpClient := new(http.Client)
	apiURL := &url.URL{
		Scheme: "https",
		Host:   "hestia.speckle.woks",
	}
	client := gospeckle.NewClient(httpClient, apiURL, nil, "v1", "")

	client.Login(ctx, "go@speckle.come", "some-secret-password")

	streamBase := gospeckle.RequestMetadata{
		Private:           true,
		AnonymousComments: false,
	}
	newStream := gospeckle.StreamRequest{
		RequestMetadata: &streamBase,
		Description:     "A fancy new go stream",
		Tags:            []string{"test", "golang"},
	}

	stream, _, err := client.Stream.Create(ctx, newStream)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	PrintJson(stream)
}
You can’t perform that action at this time.