edgegrid

package module
v1.2.2 Latest Latest
Warning

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

Go to latest
Published: Dec 7, 2022 License: Apache-2.0 Imports: 21 Imported by: 2

README

Akamai OPEN EdgeGrid for GoLang v1

Build Status GoDoc Go Report Card License

This library implements an Authentication handler for net/http that provides the Akamai OPEN Edgegrid Authentication scheme. For more information visit the Akamai OPEN Developer Community. This library has been released as a v1 library though future development will be on the develop branch for version v3.

Announcing Akamai OPEN EdgeGrid for GoLang v3 (release v3.0.0)

The v3 version of this module is under active development and provides a subset of Akamai APIs for use in the Akamai Terraform Provider.

New users are encouraged to adopt v3 version it is a simpler API wrapper with little to no business logic.

Current direct users of this v1.x.x library are recommended to continue to use the v1 version as initialization and package structure has significantly changed in v3 and will require substantial work to migrate existing applications. Non-backwards compatible changes were made to improve the code quality and make the project more maintainable.

Usage of the v1 library

GET Example:

  package main

import (
	"fmt"
	"io/ioutil"

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

func main() {
	config, _ := edgegrid.Init("~/.edgerc", "default")

	// Retrieve all locations for diagnostic tools
	req, _ := client.NewRequest(config, "GET", "/diagnostic-tools/v2/ghost-locations/available", nil)
	resp, _ := client.Do(config, req)

	defer resp.Body.Close()
	byt, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(byt))
}

Parameter Example:

  package main

import (
	"fmt"
	"io/ioutil"

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

func main() {
	config, _ := edgegrid.Init("~/.edgerc", "default")

	// Retrieve dig information for specified location
	req, _ := client.NewRequest(config, "GET", "/diagnostic-tools/v2/ghost-locations/zurich-switzerland/dig-info", nil)

	q := req.URL.Query()
	q.Add("hostName", "developer.akamai.com")
	q.Add("queryType", "A")

	req.URL.RawQuery = q.Encode()
	resp, _ := client.Do(config, req)

	defer resp.Body.Close()
	byt, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(byt))
}

POST Example:

  package main

  import (
    "fmt"
    "io/ioutil"
    "net/http"
    
    "github.com/akamai/AkamaiOPEN-edgegrid-golang/client-v1"
    "github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid"
  )

  func main() {
    config, _ := edgegrid.Init("~/.edgerc", "default")
    
    // Acknowledge a map
    req, _ := client.NewRequest(config, "POST", "/siteshield/v1/maps/1/acknowledge", nil)
    resp, _ := client.Do(config, req)

    defer resp.Body.Close()
    byt, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(byt))
  }

PUT Example:

  package main

  import (
    "fmt"
    "io/ioutil"
    "net/http"
    
    "github.com/akamai/AkamaiOPEN-edgegrid-golang/client-v1"
    "github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid"
  )

  func main() {

    config, _ := edgegrid.Init("~/.edgerc", "default")
    body := []byte("{\n  \"name\": \"Simple List\",\n  \"type\": \"IP\",\n  \"unique-id\": \"345_BOTLIST\",\n  \"list\": [\n    \"192.168.0.1\",\n    \"192.168.0.2\",\n  ],\n  \"sync-point\": 0\n}")
    
    // Update a Network List
    req, _ := client.NewJSONRequest(config, "PUT", "/network-list/v1/network_lists/unique-id?extended=extended", body)
    resp, _ := client.Do(config, req)

    defer resp.Body.Close()
    byt, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(byt))
  }

Alternatively, your program can read it from config struct.

  package main

  import (
    "fmt"
    "io/ioutil"
    "net/http"
    
    "github.com/akamai/AkamaiOPEN-edgegrid-golang/client-v1"
    "github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid"
  )

  func main() {
    config := edgegrid.Config{
      Host : "xxxxxx.luna.akamaiapis.net",
      ClientToken:  "xxxx-xxxxxxxxxxx-xxxxxxxxxxx",
      ClientSecret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      AccessToken:  "xxxx-xxxxxxxxxxx-xxxxxxxxxxx",
      MaxBody:      1024,
      HeaderToSign: []string{
        "X-Test1",
        "X-Test2",
        "X-Test3",
      },
      Debug:        false,
    }
    
   // Retrieve all locations for diagnostic tools
	req, _ := client.NewRequest(config, "GET", fmt.Sprintf("https://%s/diagnostic-tools/v2/ghost-locations/available",config.Host), nil)
	resp, _ := client.Do(config, req)

	defer resp.Body.Close()
	byt, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(byt))
}

Contribute

  1. Fork the repository to start making your changes to the v1 branch
  2. Send a pull request.

Author

Davey Shafik - Developer Evangelist @ Akamai Technologies Nick Juettner - Software Engineer @ Zalando SE

Documentation

Overview

Package edgegrid provides the Akamai OPEN Edgegrid Authentication scheme

Deprecated: use client-v1/client instead

Package edgegrid provides the Akamai OPEN Edgegrid Authentication scheme

Deprecated: use edgegrid/config and edgegrid/signer instead

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddRequestHeader deprecated

func AddRequestHeader(c Config, req *http.Request) *http.Request

AddRequestHeader sets the authorization header to use Akamai Open API

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid

Types

type Client deprecated

type Client struct {
	http.Client

	// Base URL for API requests.
	BaseURL *url.URL

	// User agent for client
	UserAgent string

	Config Config
}

Client is a simple http.Client wrapper that transparently signs requests

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func New deprecated

func New(httpClient *http.Client, config Config) (*Client, error)

New creates a new Client with a given Config

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func NewClient deprecated

func NewClient(httpClient *http.Client) *Client

NewClient creates a new Client

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func (*Client) Do deprecated

func (c *Client) Do(req *http.Request) (*Response, error)

Do executes the HTTP request

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func (*Client) Get deprecated

func (c *Client) Get(url string) (*Response, error)

Get performs an HTTP GET request

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func (*Client) Head deprecated

func (c *Client) Head(url string) (*Response, error)

Head performs an HTTP HEAD request

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func (*Client) NewJSONRequest deprecated

func (c *Client) NewJSONRequest(method, urlStr string, body interface{}) (*http.Request, error)

NewJSONRequest creates an API request with JSON body. A relative URL can be provided in urlStr, which will be resolved to the BaseURL of the Client. If specified, the value pointed to by body is JSON encoded and included in as the request body.

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func (*Client) NewRequest deprecated

func (c *Client) NewRequest(method, urlStr string, body interface{}) (*http.Request, error)

NewRequest creates an API request. A relative URL can be provided in urlStr, which will be resolved to the BaseURL of the Client. If specified, the value pointed to by body is JSON encoded and included in as the request body.

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func (*Client) Post deprecated

func (c *Client) Post(url string, bodyType string, body interface{}) (*Response, error)

Post performs an HTTP POST request

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func (*Client) PostForm deprecated

func (c *Client) PostForm(url string, data url.Values) (*Response, error)

PostForm performs an HTTP POST request with a form body

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func (*Client) PostJSON deprecated

func (c *Client) PostJSON(url string, data interface{}) (*Response, error)

PostJSON performs an HTTP POST request with a JSON body

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

type Config deprecated

type Config struct {
	Host         string   `ini:"host"`
	ClientToken  string   `ini:"client_token"`
	ClientSecret string   `ini:"client_secret"`
	AccessToken  string   `ini:"access_token"`
	HeaderToSign []string `ini:"headers_to_sign"`
	MaxBody      int      `ini:"max_body"`
	Debug        bool     `ini:"debug"`
}

Config struct provides all the necessary fields to create authorization header, debug is optional

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid

func Init deprecated

func Init(filepath string, section string) (Config, error)

Init initializes Config using first ENV variables, with fallback to .edgerc file

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid

func InitConfig deprecated

func InitConfig(filepath string, section string) Config

InitConfig initializes Config using .edgerc files

Deprecated: Backwards compatible wrapper around InitEdgeRc which should be used instead

func InitEdgeRc deprecated

func InitEdgeRc(filepath string, section string) (Config, error)

InitEdgeRc initializes Config using an .edgerc (INI) configuration file

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid

func InitEnv deprecated

func InitEnv(section string) (Config, error)

InitEnv initializes Config using ENV variables

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid

func (Config) AddRequestHeader deprecated

func (c Config) AddRequestHeader(req *http.Request) *http.Request

AddRequestHeader set the authorization header to use Akamai OPEN API

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid

type JSONBody deprecated

type JSONBody map[string]interface{}

JSONBody represents a generic JSON response

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

type Response deprecated

type Response http.Response

Response is a Wrapper for http.Response

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

func (*Response) BodyJSON deprecated

func (r *Response) BodyJSON(data interface{}) error

BodyJSON retrieves and unmarshals a responses JSON body

Deprecated: use github.com/akamai/AkamaiOPEN-edgegrid-golang/client

Directories

Path Synopsis
Package client is a simple library for http.Client to sign Akamai OPEN Edgegrid API requests
Package client is a simple library for http.Client to sign Akamai OPEN Edgegrid API requests
Package edgegrid allows you to sign http.Request's using the Akamai OPEN Edgegrid Signing Scheme
Package edgegrid allows you to sign http.Request's using the Akamai OPEN Edgegrid Signing Scheme
examples
client
An example Diagnostic Tools v1 API Client
An example Diagnostic Tools v1 API Client
Package jsonhooks adds hooks that are automatically called before JSON marshaling (PreMarshalJSON) and after JSON unmarshaling (PostUnmarshalJSON).
Package jsonhooks adds hooks that are automatically called before JSON marshaling (PreMarshalJSON) and after JSON unmarshaling (PostUnmarshalJSON).
Package papi provides a simple wrapper for the Akamai Property Manager API
Package papi provides a simple wrapper for the Akamai Property Manager API

Jump to

Keyboard shortcuts

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