Skip to content
This library implements an Authentication handler for the Akamai OPEN EdgeGrid Authentication scheme
Branch: master
Clone or download
synedra Merge pull request #45 from joaquin-gimenez/cli-version-header
edgegrid-golang added AKAMAI_CLI AND AKAMAI_CLI_COMMAND version to Us…
Latest commit 009960c Feb 28, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
api-endpoints-v2
apikey-manager-v1 Add set quota function Oct 2, 2018
ccu-v3 Return an APIError when appropriate Mar 26, 2018
client-v1
configdns-v1
edgegrid akamai cli command naming fix Feb 19, 2019
examples Refactor EdgeGrid signer Jul 15, 2017
jsonhooks-v1
papi-v1 Use a pointer to avoid submitting invalid data Feb 27, 2018
testdata Reorganize tests, ensure no default section is tested Mar 23, 2018
.gitignore
.travis.yml
Gopkg.lock Switch to using `dep` over `glide`. Jan 28, 2019
Gopkg.toml Switch to using `dep` over `glide`. Jan 28, 2019
LICENSE
README.md Switch to using `dep` over `glide`. Jan 28, 2019
client.go
edgegrid.go Switch to `go-homedir` Apr 9, 2018

README.md

Akamai OPEN EdgeGrid for GoLang

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.

Installation

This package uses dep to manage to dependencies and installation. To install dep, see the dep install documentation

$ dep ensure -add github.com/akamai/AkamaiOPEN-edgegrid-golang

Usage

GET 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")

    // Retrieve all locations for diagnostic tools
    req, _ := client.NewRequest(config, "GET", "/diagnostic-tools/v1/locations", 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"
    "net/http"
    
    "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/v1/dig", nil)

    q := req.URL.Query()
    q.Add("hostname", "developer.akamai.com")
    q.Add("queryType", "A")
    q.Add("location", "Auckland, New Zealand")

    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/v1/locations", 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 master branch
  2. Send a pull request.

Author

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

You can’t perform that action at this time.