get-agent-balance

command
Version: v0.0.0-...-0c25df4 Latest Latest
Warning

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

Go to latest
Published: Nov 28, 2018 License: Apache-2.0 Imports: 7 Imported by: 0

README

Module/Method INFORMATION:GET_AGENT_BALANCE (information.get_agent_balance)

Module "Get Agent Balance" (INFORMATION:GET_AGENT_BALANCE) is a service method to retreive Agent Balance information from KAI Train (RailTicket) Web Service [1].

The following are the sections available in this guide.

Use Case

Let’s retrieve Agent Balance information from KAI Train Web Service Endpoint.

Get Agent Balance Diagram

Prerequisites

go get github.com/ClientSDK/kai-train-ws-client-go/kaiwsdkv2
  • A Text Editor or an IDE
KAI Agent requirements
  • KAI Train (RailTicket) Agent Credential Account (RQID)
  • KAI Train (RailTicket) Web Service Access (IP Whitelist) ( Production Server, Demo Server)

Implementation

If you want to skip the basics, you can download the git repo and directly move to the "Build and Running" section by skipping "Implementation" section.

Example structure

Go is a complete programming language that supports custom project structures. Let's use the following package structure for this example.

get-agent-balance
   ├── build_and_run.sh
   └── main.go
  • Create the above directories in your local machine and also create empty main.go and build_and_run.sh files.
Developing the application

Let's make a simple application for getting Agent Balance information using kaiwsdkv2 package.

Main code for "information.get_agent_balance" (main.go)
package main

import (
	"crypto/tls"
	"encoding/json"
	"fmt"
	"log"
	"net/http"
	"net/url"

	"github.com/ClientSDK/kai-train-ws-client-go/kaiwsdkv2"
)

const (
	kaiServer = "https://railticket.kereta-api.co.id/" // Production Server
	// kaiServer = "http://ws.demo.kai.sqiva.com/"		// Demo Server
	kaiRQID = "YOUR-KAI-AGENT-CREDENTIAL-RQID"
)

func makeHTTPClient() *http.Client {
	// Access via proxy if needed
	proxyURL, _ := url.Parse("http://proxy-ip-address:proxy-port")
	//proxyURL, _ := url.Parse("http://proxy-user:proxy-password@proxy-ip-address:proxy-port")

	// Initiate transport with proxy and skip TLS
	tr := &http.Transport{
		Proxy:           http.ProxyURL(proxyURL),
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
	}

	// Initiate transport without proxy and skip TLS
	// tr := &http.Transport{
	//	TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
	// }

	// Using Transport
	httpClient := &http.Client{Transport: tr}

	return httpClient
}

func main() {

	// init http client
	httpClient := makeHTTPClient()

	// Initiate NewKAIHttpClient version 2
	kaiClient, err := kaiwsdkv2.NewKAIHttpClient(httpClient, kaiServer, kaiRQID)
	if err != nil {
		log.Fatal(err)
	}

	// call KAI web service method
	callGetAgentBalance(kaiClient)
}

func callGetAgentBalance(kaiClient *kaiwsdkv2.KAIHttpClient) {

	//params := make(map[string]string)
	vRS, err := kaiClient.CallGetAgentBalance(false)

	if err != nil {
		log.Fatal(err)
	}

	// sample how to Access Response
	// fmt.Println(vRS.ErrCode)
	// fmt.Println(vRS.ErrMsg)
	// fmt.Println(vRS.Return.AgentCode)

	// if you want to retreive KAI Origin Response
	// fmt.Println(string(kaiClient.KAIRealResponseBody))

	json, _ := json.Marshal(vRS)
	fmt.Println(string(json))
}

Bash code for building and running the example application (build_and_run.sh)
echo "Clean..."
rm ./information.get_agent_balance
echo "Build..."
go build -o information.get_agent_balance main.go 
echo "Build Done..."
echo "Run..."
./information.get_agent_balance > information.get_agent_balance-rs.json
echo "Done."

Build and Running

You can build and running by execute the "build_and_run.sh" bash files.

   $ sh build_and_run.sh 

After the application is running, you will get the json response in information.get_agent_balance-rs.json files.

Sample Response

Sample KAI Response:
    // Get KAI Response Raw from KAIHttpClient Struct 
    KAIHttpClient.KAIRealResponseBody
{
    "err_code": 0,
    "agent_code": "KAI_AGENT_CODE", 
    "agent_name": "KAI_AGENT_NAME", 
    "agent_balance": 20180008102
}
Sample Internal Response:
    // Get Internal Response Raw from KAIHttpClient Struct 
    KAIHttpClient.KAIResponseBody
 {
    "errCode": "0",
    "errMsg": null,
    "return": {
        "agentCode": "KAI_AGENT_CODE",
        "agentName": "KAI_AGENT_NAME",
        "agentBalance": 20180008102
    }
}

Documentation

The Go Gopher

There is no documentation for this package.

Source Files

Jump to

Keyboard shortcuts

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