https://github.com/grycap/cdmi-client-go
A basic Go library to perform CDMI core operations
https://github.com/grycap/cdmi-client-go
cdmi cloud data go
Last synced: 5 months ago
JSON representation
A basic Go library to perform CDMI core operations
- Host: GitHub
- URL: https://github.com/grycap/cdmi-client-go
- Owner: grycap
- License: apache-2.0
- Created: 2020-03-23T15:43:09.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-07-30T09:28:22.000Z (almost 6 years ago)
- Last Synced: 2024-12-30T04:59:07.400Z (over 1 year ago)
- Topics: cdmi, cloud, data, go
- Language: Go
- Homepage:
- Size: 20.5 KB
- Stars: 1
- Watchers: 7
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# cdmi-client-go
[](https://goreportcard.com/report/github.com/grycap/cdmi-client-go)
[](https://pkg.go.dev/github.com/grycap/cdmi-client-go)
[](https://github.com/grycap/cdmi-client-go/blob/master/LICENSE)
A basic Go library to perform the core container and object operations defined in the Cloud Data Management Interface (CDMI) [specification](https://www.snia.org/sites/default/files/CDMI_Spec_v1.1.1.pdf).
## Installation
```bash
go get github.com/grycap/cdmi-client-go
```
## Example
```go
package main
import (
"io"
"net/url"
"os"
"github.com/grycap/cdmi-client-go"
)
func main() {
// CDMI Server endpoint
endpoint, _ := url.Parse("https://my-cdmi-server.example")
// Bearer auth token (if not required set an empty string)
token := "my-token"
// Verify SSL certificates
verify := true
// Create a new CDMI client
client := cdmi.New(endpoint, token, verify)
// Create a container (directory)
err := client.CreateContainer("newcontainerName/anotherContainer", true)
if err != nil {
// Example: ignore error 400 (folder already exists)
if err != cdmi.ErrBadRequest {
// Manage error
}
}
// Upload a file
file, _ := os.Open("/path/to/file")
defer file.Close()
err = client.CreateObject("containerName/objectName", file, true)
if err != nil {
// Manage error
}
// Download a file
newFile, _ := os.Create("/path/to/new/file")
defer newFile.Close()
content, err := client.GetObject("containerName/objectName")
if err != nil {
// Manage error
}
defer content.Close()
io.Copy(newFile, content)
}
```
All available methods can be found at pkg.go.dev [reference](https://pkg.go.dev/github.com/grycap/cdmi-client-go).