File: activations.go

package info (click to toggle)
golang-github-akamai-akamaiopen-edgegrid-golang 1.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 1,408 kB
  • sloc: sh: 532; makefile: 3
file content (84 lines) | stat: -rw-r--r-- 1,697 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package apiendpoints

import (
	"fmt"

	"github.com/akamai/AkamaiOPEN-edgegrid-golang/client-v1"
)

type Activation struct {
	Networks               []string `json:"networks"`
	NotificationRecipients []string `json:"notificationRecipients"`
	Notes                  string   `json:"notes"`
}

type ActivateEndpointOptions struct {
	APIEndPointId int
	VersionNumber int
}

func ActivateEndpoint(options *ActivateEndpointOptions, activation *Activation) (*Activation, error) {
	req, err := client.NewJSONRequest(
		Config,
		"POST",
		fmt.Sprintf(
			"/api-definitions/v2/endpoints/%d/versions/%d/activate",
			options.APIEndPointId,
			options.VersionNumber,
		),
		activation,
	)

	if err != nil {
		return nil, err
	}

	res, err := client.Do(Config, req)

	if client.IsError(res) {
		return nil, client.NewAPIError(res)
	}

	return activation, nil
}

func DeactivateEndpoint(options *ActivateEndpointOptions, activation *Activation) (*Activation, error) {
	req, err := client.NewJSONRequest(
		Config,
		"DELETE",
		fmt.Sprintf(
			"/api-definitions/v2/endpoints/%d/versions/%d/deactivate",
			options.APIEndPointId,
			options.VersionNumber,
		),
		activation,
	)

	if err != nil {
		return nil, err
	}

	res, err := client.Do(Config, req)

	if client.IsError(res) {
		return nil, client.NewAPIError(res)
	}

	return activation, nil
}

func IsActive(endpoint *Endpoint, network string) bool {
	if network == "production" {
		if endpoint.ProductionStatus == StatusPending || endpoint.ProductionStatus == StatusActive {
			return true
		}
	}

	if network == "staging" {
		if endpoint.StagingStatus == StatusPending || endpoint.StagingStatus == StatusActive {
			return true
		}
	}

	return false
}