mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-01-12 02:17:43 +08:00
95 lines
3 KiB
Markdown
95 lines
3 KiB
Markdown
|
# GoVultr
|
||
|
|
||
|
[![Build Status](https://travis-ci.org/vultr/govultr.svg?branch=master)](https://travis-ci.org/vultr/govultr)
|
||
|
[![GoDoc](https://godoc.org/github.com/vultr/govultr?status.svg)](https://godoc.org/github.com/vultr/govultr)
|
||
|
[![codecov](https://codecov.io/gh/vultr/govultr/branch/master/graph/badge.svg?token=PDJXBc7Rci)](https://codecov.io/gh/vultr/govultr)
|
||
|
[![Go Report Card](https://goreportcard.com/badge/github.com/vultr/govultr)](https://goreportcard.com/report/github.com/vultr/govultr)
|
||
|
|
||
|
The official Vultr Go client - GoVultr allows you to interact with the Vultr V1 API.
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
```sh
|
||
|
go get -u github.com/vultr/govultr
|
||
|
```
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
Vultr uses a PAT (Personal Access token) to interact/authenticate with the APIs. An API Key can be generated and acquired from the API menu in [settings](https://my.vultr.com/settings/#settingsapi).
|
||
|
|
||
|
To instantiate a govultr client you invoke `NewClient()`.
|
||
|
|
||
|
This takes in two parameters:
|
||
|
|
||
|
- \*http.Client
|
||
|
- API Key
|
||
|
|
||
|
You can define your own `http.Client` however if you pass in `nil` then you will be defaulted to use `http.DefaultClient`. For the API key, we recommend you store this as a environment variable and not hard code it.
|
||
|
|
||
|
There are also three optional parameters you may change regarding the client:
|
||
|
|
||
|
- BaseUrl: allows you to override the base URL that Vultr defaults to
|
||
|
- UserAgent: allows you to override the UserAgent that Vultr defaults to
|
||
|
- RateLimit: Vultr currently rate limits how fast you can make calls back to back. This lets you configure if you want a delay in between calls
|
||
|
|
||
|
### Example Client Setup
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/vultr/govultr"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
apiKey := os.Getenv("VultrAPIKey")
|
||
|
|
||
|
vultrClient := govultr.NewClient(nil, apiKey)
|
||
|
|
||
|
// Optional changes
|
||
|
_ = vultrClient.SetBaseURL("https://api.vultr.com")
|
||
|
vultrClient.SetUserAgent("mycool-app")
|
||
|
vultrClient.SetRateLimit(500)
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### Example Usage
|
||
|
|
||
|
Create a VPS
|
||
|
|
||
|
```go
|
||
|
vpsOptions := &govultr.ServerOptions{
|
||
|
Label: "awesome-go-app",
|
||
|
Hostname: "awesome-go.com",
|
||
|
EnablePrivateNetwork: true,
|
||
|
AutoBackups: true,
|
||
|
EnableIPV6: true,
|
||
|
}
|
||
|
|
||
|
// RegionId, VpsPlanID, OsID can be grabbed from their respective API calls
|
||
|
res, err := vultrClient.Server.Create(context.Background(), 1, 201, 1, vpsOptions)
|
||
|
|
||
|
if err != nil {
|
||
|
fmt.Println(err)
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Versioning
|
||
|
|
||
|
This project follows [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/vultr/govultr/tags).
|
||
|
|
||
|
## Documentation
|
||
|
|
||
|
For detailed information about our V1 API head over to our [API documentation](https://www.vultr.com/api/).
|
||
|
|
||
|
If you want more details about this client's functionality then check out our [GoDoc](https://godoc.org/github.com/vultr/govultr) documentation.
|
||
|
|
||
|
## Contributing
|
||
|
|
||
|
Feel free to send pull requests our way! Please see the [contributing guidelines](CONTRIBUTING.md).
|
||
|
|
||
|
## License
|
||
|
|
||
|
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE) file for details.
|