Categorygithub.com/navigacontentlab/oc-client-go
repositorypackage
1.5.0
Repository: https://github.com/navigacontentlab/oc-client-go.git
Documentation: pkg.go.dev

# README

oc-client-go

A project for simplifying when working with Open Content API.

Search example

import "github.com/navigacontentlab/oc-client-go"

client, err := oc.New(oc.Options{
	BaseURL: "https://host:8443/opencontent",
	Auth:    oc.BearerAuth("<token>"),
})

req := oc.SearchRequest{
	Properties: "uuid,updated",
	Query:      "contenttype:Image",
	Sort: []oc.SearchSort{{
		IndexField: "updated",
		Descending: true,
	}},
}

resp, err := client.Search(context.Background(), req)

Upload example

import (
    "github.com/navigacontentlab/oc-client-go"
    "golang.org/x/oauth2"
    "golang.org/x/oauth2/clientcredentials"
)

config := clientcredentials.Config{
	ClientID:     "<client-id>",
	ClientSecret: "<client-secret>",
	AuthStyle:    oauth2.AuthStyleInParams,
	TokenURL:     "https://access-token.stage.id.navigacloud.com/v1/token",
}

httpClient := config.Client(context.Background())
httpClient.Timeout = time.Second * 5

client, err := oc.New(oc.Options{
	BaseURL:    "https://<host>:7777/opencontent",
	HTTPClient: httpClient,
})

reader, err := os.Open("sample.jpeg")
metadataReader, err := os.Open("sample-image-metadata.xml")

req := oc.UploadRequest{
	Files: oc.FileSet{
		"file": oc.File{
			Name:     "sample.jpeg",
			Reader:   reader,
			Mimetype: "image/jpeg",
		},
		"metadata": oc.File{
			Name:     "sample-image.metadata.xml",
			Reader:   metadataReader,
			Mimetype: "application/vnd.iptc.g2.newsitem+xml.picture",
		},
	},
}

resp, err := client.Upload(context.Background(), req)

Metrics

This library provides metrics in the form of a prometheus collector.

The following metrics are supported:

  • statusCodes
  • responseTimes