mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
Switch to official Vultr API library (#529)
* vultr: Switched to official API library (closes #528) * vultr: Renamed vultr.VultrApi to vultr.Provider * vendor: Updated govultr
This commit is contained in:
committed by
Craig Peterson
parent
a138b12ec2
commit
44a7ba5711
163
vendor/github.com/vultr/govultr/firewall_group.go
generated
vendored
Normal file
163
vendor/github.com/vultr/govultr/firewall_group.go
generated
vendored
Normal file
@ -0,0 +1,163 @@
|
||||
package govultr
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
// FirewallGroupService is the interface to interact with the firewall group endpoints on the Vultr API
|
||||
// Link: https://www.vultr.com/api/#firewall
|
||||
type FirewallGroupService interface {
|
||||
Create(ctx context.Context, description string) (*FirewallGroup, error)
|
||||
Delete(ctx context.Context, groupID string) error
|
||||
List(ctx context.Context) ([]FirewallGroup, error)
|
||||
Get(ctx context.Context, groupID string) (*FirewallGroup, error)
|
||||
ChangeDescription(ctx context.Context, groupID, description string) error
|
||||
}
|
||||
|
||||
// FireWallGroupServiceHandler handles interaction with the firewall group methods for the Vultr API
|
||||
type FireWallGroupServiceHandler struct {
|
||||
client *Client
|
||||
}
|
||||
|
||||
// FirewallGroup represents a Vultr firewall group
|
||||
type FirewallGroup struct {
|
||||
FirewallGroupID string `json:"FIREWALLGROUPID"`
|
||||
Description string `json:"description"`
|
||||
DateCreated string `json:"date_created"`
|
||||
DateModified string `json:"date_modified"`
|
||||
InstanceCount int `json:"instance_count"`
|
||||
RuleCount int `json:"rule_count"`
|
||||
MaxRuleCount int `json:"max_rule_count"`
|
||||
}
|
||||
|
||||
// Create will create a new firewall group on your Vultr account
|
||||
func (f *FireWallGroupServiceHandler) Create(ctx context.Context, description string) (*FirewallGroup, error) {
|
||||
|
||||
uri := "/v1/firewall/group_create"
|
||||
|
||||
values := url.Values{
|
||||
"description": {description},
|
||||
}
|
||||
|
||||
req, err := f.client.NewRequest(ctx, http.MethodPost, uri, values)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
firewall := new(FirewallGroup)
|
||||
err = f.client.DoWithContext(ctx, req, firewall)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return firewall, nil
|
||||
}
|
||||
|
||||
// Delete will delete a firewall group from your Vultr account
|
||||
func (f *FireWallGroupServiceHandler) Delete(ctx context.Context, groupID string) error {
|
||||
|
||||
uri := "/v1/firewall/group_delete"
|
||||
|
||||
values := url.Values{
|
||||
"FIREWALLGROUPID": {groupID},
|
||||
}
|
||||
|
||||
req, err := f.client.NewRequest(ctx, http.MethodPost, uri, values)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = f.client.DoWithContext(ctx, req, nil)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// List will return a list of all firewall groups on your Vultr account
|
||||
func (f *FireWallGroupServiceHandler) List(ctx context.Context) ([]FirewallGroup, error) {
|
||||
|
||||
uri := "/v1/firewall/group_list"
|
||||
|
||||
req, err := f.client.NewRequest(ctx, http.MethodGet, uri, nil)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var firewallGroupMap map[string]FirewallGroup
|
||||
err = f.client.DoWithContext(ctx, req, &firewallGroupMap)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var firewallGroup []FirewallGroup
|
||||
for _, f := range firewallGroupMap {
|
||||
firewallGroup = append(firewallGroup, f)
|
||||
}
|
||||
|
||||
return firewallGroup, nil
|
||||
}
|
||||
|
||||
// Get will return a firewall group based on provided groupID from your Vultr account
|
||||
func (f *FireWallGroupServiceHandler) Get(ctx context.Context, groupID string) (*FirewallGroup, error) {
|
||||
|
||||
uri := "/v1/firewall/group_list"
|
||||
|
||||
req, err := f.client.NewRequest(ctx, http.MethodGet, uri, nil)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
q := req.URL.Query()
|
||||
q.Add("FIREWALLGROUPID", groupID)
|
||||
req.URL.RawQuery = q.Encode()
|
||||
|
||||
var firewallGroupMap map[string]FirewallGroup
|
||||
err = f.client.DoWithContext(ctx, req, &firewallGroupMap)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
firewallGroup := new(FirewallGroup)
|
||||
for _, f := range firewallGroupMap {
|
||||
firewallGroup = &f
|
||||
}
|
||||
|
||||
return firewallGroup, nil
|
||||
}
|
||||
|
||||
// ChangeDescription will change the description of a firewall group
|
||||
func (f *FireWallGroupServiceHandler) ChangeDescription(ctx context.Context, groupID, description string) error {
|
||||
|
||||
uri := "/v1/firewall/group_set_description"
|
||||
|
||||
values := url.Values{
|
||||
"FIREWALLGROUPID": {groupID},
|
||||
"description": {description},
|
||||
}
|
||||
|
||||
req, err := f.client.NewRequest(ctx, http.MethodPost, uri, values)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = f.client.DoWithContext(ctx, req, nil)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user