Go
OpenAPI Specificationから生成 されたGo用クライアントライブラリを使用するサンプルを示します。
サンプル内の path/to/autogenerated
では、生成されたライブラリのパスを指定してください。
APIトークンを使用してAPIにアクセスする
以下のコードでは、APIトークンを使用して認証を行います。その後、認証したユーザー自身の情報を取得します。
実行時には以下を指定してください。
baseURL
: 接続先intdash APIのベースURLapiToken
: ユーザーのAPIトークン(APIトークンはMy Pageで作成できます)
package main
import (
"context"
"flag"
"fmt"
intdash "path/to/autogenerated"
)
func main() {
var (
baseURL string
apiToken string
)
flag.StringVar(&baseURL, "baseURL", "http://localhost:8080/api", "")
flag.StringVar(&apiToken, "apiToken", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "")
flag.Parse()
// Setup Configuration
cfg := intdash.NewConfiguration()
cfg.Servers = intdash.ServerConfigurations{{URL: baseURL}}
cfg.DefaultHeader["X-Intdash-Token"] = apiToken
// Create Client
cli := intdash.NewAPIClient(cfg)
ctx := context.Background()
me, _, err := cli.AuthMeApi.GetMe(ctx).Execute()
if err != nil {
panic(err)
}
fmt.Printf("Hello %s", me.Name)
}
OAuth2トークンを使用してAPIにアクセスする
以下のコードでは、OAuth2トークンを使って認証を行います。
実行時には以下を指定してください。
baseURL
: 接続先intdash APIのベースURLclientID
: エッジのUUIDclientSecret
: エッジの作成時に発行されるクライアントシークレット
package main
import (
"context"
"flag"
"fmt"
intdash "path/to/autogenerated"
"golang.org/x/oauth2"
"golang.org/x/oauth2/clientcredentials"
)
func main() {
var (
baseURL string
clientID string
clientSecret string
)
flag.StringVar(&baseURL, "baseURL", "http://localhost:8080/api", "")
flag.StringVar(&clientID, "clientID", "00000000-0000-0000-0000-000000000000", "")
flag.StringVar(&clientSecret, "clientSecret", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "")
flag.Parse()
ctx := context.Background()
c := clientcredentials.Config{
ClientID: clientID,
ClientSecret: clientSecret,
TokenURL: fmt.Sprintf("%s/%s", baseURL, "/auth/oauth2/token"),
AuthStyle: oauth2.AuthStyleInParams,
}
// Setup Configuration
cfg := intdash.NewConfiguration()
cfg.Servers = intdash.ServerConfigurations{{URL: baseURL}}
cfg.HTTPClient = c.Client(ctx)
// Create Client
cli := intdash.NewAPIClient(cfg)
// Omitted
}
過去の計測のデータポイントを取得する
データポイントの取得を行う場合、自動生成されたコードはそのままでは使用できません。 生成されたコードを以下のコマンドで修正します。
$ sed -i -e "s/**os.File/*os.File/g" ./intdash/api_meas_data_points.go
$ sed -i -e "s/r.body = &body/r.body = body/g" ./intdash/api_meas_data_points.go
そのうえで、以下のようにデータポイントを取得します。
cli := ...
ctx := context.Background()
resp, _, err := cli.MeasDataPointsApi.ListProjectDataPoints(ctx, uuid.Nil.String()).Name(measUUID).TimeFormat("ns").Execute()
if resp != nil {
defer os.Remove(resp.Name())
defer resp.Close()
}
if err != nil {
panic(err)
}
rd := bufio.NewScanner(resp)
rd.Buffer([]byte{}, 65535)
for rd.Scan() {
var dp intdash.DataPoint
if err := json.Unmarshal(rd.Bytes(), &dp); err != nil {
panic(err)
}
fmt.Printf("%+v\n", time.Unix(0, *dp.DataPointNormal.Time.Int64).UTC().Format(time.RFC3339Nano))
}