go-sdk

command module
v2.3.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2020 License: MIT Imports: 0 Imported by: 0

README

go-sdk

semantic-release Build Status GoDoc Go Report Card PRs welcome

This module is a connector library for the insanely fast HEXONET Backend API. For further informations visit our homepage and do not hesitate to contact us.

Resources

How to use this module in your project

We have also a demo app available showing how to integrate and use our SDK. See here.

Requirements

NOTE: Make sure you add the go binary path to your PATH environment variable. Add the below lines for a standard installation into your profile configuration file (~/.profile).

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

Then reload the profile configuration by source ~/.profile.

Using govendor

Use govendor for the dependency installation by govendor fetch -tree github.com/hexonet/go-sdk@<tag id> where tag id corresponds to a release version tag. You can update this dependency later on by govendor sync github.com/hexonet/go-sdk@<new tag id>. The dependencies will be installed in your project's subfolder "vendor". Import the module in your project as shown in the examples below.

For more details on govendor, please read the CheatSheet and also the developer guide.

Usage Examples

Please have an eye on our HEXONET Backend API documentation. Here you can find information on available Commands and their response data.

Session based API Communication
package main

import (
    "fmt"

    CL "github.com/hexonet/go-sdk/apiclient"
)

func main() {
    cl := CL.NewAPIClient()
    cl.SetCredentials("test.user", "test.passw0rd")//username, password
    // or cl.SetRoleCredentials("test.user", "testrole", "test.passw0rd")
    // for role user credentials
    cl.UseOTESystem()

    // use this to provide your outgoing ip address for api communication
    // to be used in case you have ip filter settings active
    cl.SetRemoteIPAddress("1.2.3.4");

    // cl.EnableDebugMode() // to activate debug outputs of the API communication
    r := cl.Login()
    // or r := cl.Login("12345678") // provide here your 2FA otp code
    if r.IsSuccess() {
        fmt.Println("Login succeeded.")
        r = cl.Request(map[string]interface{}{
            "COMMAND": "StatusAccount"
        })
        if r.IsSuccess() {
            fmt.Println("Command succeeded.")
            r = cl.Logout()
            if r.IsSuccess() {
                fmt.Println("Logout succeeded.")
            } else {
                fmt.Println("Logout failed.")
            }
        } else {
            fmt.Println("Command failed.")
        }
    } else {
        fmt.Println("Login failed.")
    }
}
Sessionless API Communication
package main

import (
    "fmt"

    CL "github.com/hexonet/go-sdk/apiclient"
)

func main() {
    cl := CL.NewAPIClient()
    cl.SetCredentials("test.user", "test.passw0rd")
    cl.SetRemoteIPAddress("1.2.3.4")
    //cl.SetOTP("12345678") to provide your 2FA otp code
    cl.UseOTESystem()
    r := cl.Request(map[string]interface{}{
        "COMMAND": "StatusAccount"
    })
    if r.IsSuccess() {
        fmt.Println("Command succeeded.")
    } else {
        fmt.Println("Command failed.")
    }
}
Using Bulk Parameters in API Command

Of course, you could do the following:

package main

import (
    "fmt"

    CL "github.com/hexonet/go-sdk/apiclient"
)

func main() {
    cl := CL.NewAPIClient()
    cl.SetCredentials("test.user", "test.passw0rd")
    cl.SetRemoteIPAddress("1.2.3.4")
    cl.UseOTESystem()
    r := cl.Request(map[string]interface{}{
        "COMMAND": "QueryDomainOptions",
        "DOMAIN0": "example1.com";
        "DOMAIN1": "example2.com";
    })
    if r.IsSuccess() {
        fmt.Println("Command succeeded.")
    } else {
        fmt.Println("Command failed.")
    }
}

but probably better:

package main

import (
    "fmt"

    CL "github.com/hexonet/go-sdk/apiclient"
)

func main() {
    cl := CL.NewAPIClient()
    cl.SetCredentials("test.user", "test.passw0rd")
    cl.SetRemoteIPAddress("1.2.3.4")
    cl.UseOTESystem()
    r := cl.Request(map[string]interface{}{
        "COMMAND": "QueryDomainOptions",
        "DOMAIN": []string{
            "example1.com",
            "example2.com"
        }
    })
    if r.IsSuccess() {
        fmt.Println("Command succeeded.")
    } else {
        fmt.Println("Command failed.")
    }
}

Contributing

Please read our development guide for details on our code of conduct, and the process for submitting pull requests to us.

Authors

  • Kai Schwarz - lead development - PapaKai

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package apiclient contains all you need to communicate with the insanely fast HEXONET backend API.
Package apiclient contains all you need to communicate with the insanely fast HEXONET backend API.
Package column provides column functionality to cover API response data
Package column provides column functionality to cover API response data
Package record provides record functionality to cover API response data
Package record provides record functionality to cover API response data
Package response provides extended functionality to handle API response data
Package response provides extended functionality to handle API response data
Package responseparser provides functionality to cover API response data parsing and serializing.
Package responseparser provides functionality to cover API response data parsing and serializing.
Package responsetemplate provides basic functionality to handle API response data
Package responsetemplate provides basic functionality to handle API response data
Package responsetemplatemanager provides basic functionality to handle API response data
Package responsetemplatemanager provides basic functionality to handle API response data
Package socketconfig provides apiconnector client connection settings
Package socketconfig provides apiconnector client connection settings

Jump to

Keyboard shortcuts

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