Experimental library for working with Hypercat from Go.
Switch branches/tags
Nothing to show
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.
bin
.gitignore
LICENSE
Makefile
README.md
constants.go
doc.go
errors.go
hypercat.go
hypercat_test.go
item.go
item_test.go
metadata.go
metadata_test.go
wercker.yml

README.md

Hypercat Go

This project contains a simple library for working with Hypercat from Go.

GoDoc wercker status

Hypercat

For more information about Hypercat please see: http://www.hypercat.io/standard.html

Usage

The library is only compatible with the upcoming Hypercat 3.0 release, so will not work properly with either Hypercat 1.1 or 2.0 documents.

To import the library use:

import "github.com/thingful/hypercat-go"

Which will import the library and make available a hypercat namespace to your application.

To create a new Hypercat catalogue use:

cat := hypercat.NewHypercat("Catalog Name")

This creates a new catalogue and sets the standard hasDescription rel to the given name.

we can then add metadata relations to it like this:

cat.AddRel(hypercat.SupportsSearchRel, hypercat.SimpleSearchVal)

The package defines rels and vals for the standard rels/vals contained within the Hypercat standard, but to add custom metadata you can simply do this:

cat.AddRel("uniqueID", "123abc")

To create a new resource item use:

item := hypercat.NewItem("/resource1", "Resource 1")

This sets the href of the item and the required hasDescription metadata rel. You can add more metadata like this:

item.AddRel(hypercat.ContentTypeRel, "application/json")
item.AddRel("hasUniqueId", "abc123")

This item can then be added to the catalogue like this:

cat.AddItem(item)

The cat item can then be marshalled to JSON using the standard encoding/json package:

bytes, err := json.Marshal(cat)

Similarly we can use Unmarshal to convert a supplied JSON document into a struct to work with:

cat := hypercat.Hypercat{}
err := json.Unmarshal(jsonBlob, &cat)

There is a convenience method that allows you to parse a Hypercat struct directly from any io.Reader, e.g.:

cat, err := hypercat.Parse(strings.NewReader(jsonString))

In addition to this the library provides some additional methods for manipulating and return metadata and items from catalogues, but for full details please see the full documentation.

License

See LICENSE