github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/cloudlets/v3/cloudlets.go (about)

     1  // Package v3 provides access to the Akamai Cloudlets V3 APIs
     2  package v3
     3  
     4  import (
     5  	"context"
     6  	"errors"
     7  
     8  	"github.com/akamai/AkamaiOPEN-edgegrid-golang/v8/pkg/session"
     9  )
    10  
    11  var (
    12  	// ErrStructValidation is returned when given struct validation failed.
    13  	ErrStructValidation = errors.New("struct validation")
    14  )
    15  
    16  type (
    17  	// Cloudlets is the api interface for cloudlets.
    18  	Cloudlets interface {
    19  		// ListCloudlets returns details of Cloudlets that you can create a shared policy for, including a Cloudlet name and Cloudlet type
    20  		//
    21  		// See: https://techdocs.akamai.com/cloudlets/reference/get-cloudlets
    22  		ListCloudlets(context.Context) ([]ListCloudletsItem, error)
    23  
    24  		// ListPolicies returns shared policies that are available within your group
    25  		//
    26  		// See: https://techdocs.akamai.com/cloudlets/reference/get-policies
    27  		ListPolicies(context.Context, ListPoliciesRequest) (*ListPoliciesResponse, error)
    28  
    29  		// CreatePolicy creates a shared policy for a specific Cloudlet type
    30  		//
    31  		// See: https://techdocs.akamai.com/cloudlets/reference/post-policy
    32  		CreatePolicy(context.Context, CreatePolicyRequest) (*Policy, error)
    33  
    34  		// DeletePolicy deletes an existing Cloudlets policy
    35  		//
    36  		// See: https://techdocs.akamai.com/cloudlets/reference/delete-policy
    37  		DeletePolicy(context.Context, DeletePolicyRequest) error
    38  
    39  		// GetPolicy returns information about a shared policy, including its activation status on the staging and production networks
    40  		//
    41  		// See: https://techdocs.akamai.com/cloudlets/reference/get-policy
    42  		GetPolicy(context.Context, GetPolicyRequest) (*Policy, error)
    43  
    44  		// UpdatePolicy updates an existing policy
    45  		//
    46  		// See: https://techdocs.akamai.com/cloudlets/reference/put-policy
    47  		UpdatePolicy(context.Context, UpdatePolicyRequest) (*Policy, error)
    48  
    49  		// ClonePolicy clones the staging, production, and last modified versions of a non-shared (API v2) or shared policy into a new shared policy
    50  		//
    51  		// See: https://techdocs.akamai.com/cloudlets/reference/post-policy-clone
    52  		ClonePolicy(context.Context, ClonePolicyRequest) (*Policy, error)
    53  
    54  		// ListActivePolicyProperties returns all active properties that are assigned to the policy
    55  		//
    56  		// See: https://techdocs.akamai.com/cloudlets/reference/get-policy-properties
    57  		ListActivePolicyProperties(context.Context, ListActivePolicyPropertiesRequest) (*ListActivePolicyPropertiesResponse, error)
    58  
    59  		// ListPolicyVersions lists policy versions by policyID.
    60  		//
    61  		// See: https://techdocs.akamai.com/cloudlets/reference/get-policy-versions
    62  		ListPolicyVersions(context.Context, ListPolicyVersionsRequest) (*ListPolicyVersions, error)
    63  
    64  		// GetPolicyVersion gets policy version by policyID and version.
    65  		//
    66  		// See: https://techdocs.akamai.com/cloudlets/reference/get-policy-version
    67  		GetPolicyVersion(context.Context, GetPolicyVersionRequest) (*PolicyVersion, error)
    68  
    69  		// CreatePolicyVersion creates policy version.
    70  		//
    71  		// See: https://techdocs.akamai.com/cloudlets/reference/post-policy-version
    72  		CreatePolicyVersion(context.Context, CreatePolicyVersionRequest) (*PolicyVersion, error)
    73  
    74  		// DeletePolicyVersion deletes policy version.
    75  		//
    76  		// See: https://techdocs.akamai.com/cloudlets/reference/delete-policy-version
    77  		DeletePolicyVersion(context.Context, DeletePolicyVersionRequest) error
    78  
    79  		// UpdatePolicyVersion updates policy version.
    80  		//
    81  		// See: https://techdocs.akamai.com/cloudlets/reference/put-policy-version
    82  		UpdatePolicyVersion(context.Context, UpdatePolicyVersionRequest) (*PolicyVersion, error)
    83  
    84  		// ListPolicyActivations returns the complete activation history for the selected policy in a reverse chronological order.
    85  		//
    86  		// See: https://techdocs.akamai.com/cloudlets/reference/get-policy-activations
    87  		ListPolicyActivations(context.Context, ListPolicyActivationsRequest) (*PolicyActivations, error)
    88  
    89  		// ActivatePolicy initiates the activation of the selected cloudlet policy version.
    90  		//
    91  		// See: https://techdocs.akamai.com/cloudlets/reference/post-policy-activations
    92  		ActivatePolicy(context.Context, ActivatePolicyRequest) (*PolicyActivation, error)
    93  
    94  		// DeactivatePolicy initiates the deactivation of the selected cloudlet policy version.
    95  		//
    96  		// See: https://techdocs.akamai.com/cloudlets/reference/post-policy-activations
    97  		DeactivatePolicy(context.Context, DeactivatePolicyRequest) (*PolicyActivation, error)
    98  
    99  		// GetPolicyActivation activates the selected cloudlet policy version.
   100  		//
   101  		// See: https://techdocs.akamai.com/cloudlets/reference/get-policy-activation
   102  		GetPolicyActivation(context.Context, GetPolicyActivationRequest) (*PolicyActivation, error)
   103  	}
   104  
   105  	cloudlets struct {
   106  		session.Session
   107  	}
   108  
   109  	// Option defines a Cloudlets option.
   110  	Option func(*cloudlets)
   111  
   112  	// ClientFunc is a Cloudlets client new method, this can be used for mocking.
   113  	ClientFunc func(sess session.Session, opts ...Option) Cloudlets
   114  )
   115  
   116  // Client returns a new cloudlets Client instance with the specified controller.
   117  func Client(sess session.Session, opts ...Option) Cloudlets {
   118  	c := &cloudlets{
   119  		Session: sess,
   120  	}
   121  
   122  	for _, opt := range opts {
   123  		opt(c)
   124  	}
   125  	return c
   126  }