go-edgegrid

module
v6.1.21 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2021 License: Apache-2.0

README

go-edgegrid

Golang based client for interaction with Akamai API services.

Step by step using the client

The client has been created with simplicity in mind. After several iterations the best approach seems to be allow modularity by seperating credentials/config and services and combining them into apiClient object therefore allowing full control of customisation

Imports

Import client and all services you plan to use in your code. In example below we import network list service along with client

import (
	"github.com/apiheat/go-edgegrid/v6/edgegrid"
	
	// ..... all other services u may also need
	"github.com/apiheat/go-edgegrid/v6/service/netlistv2"
)
Credentials

Create new credentials object using on of the below methods:

  • automatically load during config creation. AutoLoad can accept specific section if you do not want to use default

    config := edgegrid.NewConfig()
    		  .WithCredentials(edgegrid.NewCredentials().AutoLoad("optional-section-name"))
    		  .WithLogVerbosity("debug")
    		  .WithRequestDebug(true)
    
  • credentials file ( if section is skipped it uses default )

    creds, err := edgegrid.NewCredentials().FromFile("/Users/rafpe/.edgerc").Section("sample")
    
  • JSON string

    creds, err := edgegrid.NewCredentials().FromJSON(`{ "args":"xxx"}`)
    
  • ENV variables

    creds, err := edgegrid.NewCredentials().FromEnv()
    
Config

Create config object which defines client behaviour. Define options which u require.

	config := edgegrid.NewConfig().
		WithCredentials(creds). 					// Required
		WithLogVerbosity("info").					// Optional
		WithLocalTesting(true).						// Optional
		WithScheme("http").							// Optional
		WithTestingURL("http://localhost.test").	// Optional
		WithRequestDebug(true)						// Optional
Support for Account Switch Key ( manage multiple accounts )

Client in version starting from v5.x.x supports account switch key which allows you to manage multiple accounts with single credentials.

  • Specify when initialising client

    // 2 - Config using credentials
    config := edgegrid.NewConfig().
    	WithCredentials(creds).
    	WithAccountSwitchKey("1-231-213123")
    

More information can be found under the following link https://learn.akamai.com/en-us/learn_akamai/getting_started_with_akamai_developers/developer_tools/accountSwitch.html

Example

Below is minimalistic example of all the steps required to get the client running.

package main

import (
	"fmt"

	"github.com/apiheat/go-edgegrid/v6/edgegrid"
	"github.com/apiheat/go-edgegrid/v6/service/netlistv2"
)

func main() {

	// 1 - Credentials - multiple way to obrain credentials
	creds, err := edgegrid.NewCredentials().FromFile("/Users/rafpe/.edgerc").Section("sample")

	// 2 - Config using credentials
	config := edgegrid.NewConfig().
		WithCredentials(creds)

	listNetListOptsv2 := netlistv2.ListNetworkListsOptionsv2{}
	listNetListOptsv2.Search = ""

	// 3 - Service using config
	apiNetlistv2 := netlistv2.New(config)

	// 4 - Actions using service
	res, err := apiNetlistv2.ListNetworkLists(listNetListOptsv2)
	if err != nil {
		fmt.Println(err)
	}

	fmt.Println(res)

}

Debugging

The debug use WithLogVerbosity(<level>) ( optional part of config object ) where <level> can be lower case string of debug | warn | info | error | fatal | panic

Development

  • More info to come
Tests
  • The biggest thing this package still needs is tests 😞
Issues

Authors

License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Inspired by

Directories

Path Synopsis
service

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL