バケットを作成する
バケットを作成するにはまずbucket:createスコープでアクセストークンを取得し、ポリシーキー(データの保持期間)とバケット名(bucketId)を決めてPOSTで取得するという手順でした。これをvb.netで実装してみます。アクセストークン取得モジュール
アクセストークンは様々な場面で必要なので、モジュールで関数にしておきます。プロジェクトにモジュールを追加して「mdlUtils.vb」とします。以下はコードサンプルです。
Imports System.Net
Module mdlUtils
Public Const CLIENTID As String = "自分のクライアントID"
Public Const CLIENTSECRET As String = "自分のクライアントシークレット"
Private ENDPOINT As String = "https://developer.api.autodesk.com"-
''' <summary>
''' 目的に応じたアクセストークンを取得する
''' </summary>
''' <param name="scopeString">スコープ</param>
''' <returns></returns>
Public Function GetToken(ByVal scopeString As String) As String
'RestSharpでクライアントを作成
Dim _client As New RestSharp.RestClient(ENDPOINT)
'RestSharpでリクエストを作成
Dim authReq As New RestSharp.RestRequest()
With authReq
.Resource = "authentication/v1/authenticate"
'メソッド
.Method = RestSharp.Method.POST
'ヘッダー
.AddHeader("Content-Type", "application/x-www-form-urlencoded")
'ボディ
.AddParameter("client_id", CLIENTID)
.AddParameter("client_secret", CLIENTSECRET)
.AddParameter("grant_type", "client_credentials")
'スコープ
.AddParameter("scope", scopeString)
End With
'POSTする
Dim result As RestSharp.IRestResponse = _client.Execute(authReq)
If result.StatusCode = HttpStatusCode.OK Then
'結果(json形式の結果が文字列で返ってくる)
'このjsonは以下の形式となる
'{
' "token_type": "Bearer",
' "expires_in": 1799,
' "access_token": "Ff387cyQXw1elOT3nldiFIKBqDOs"
'}
Dim responseString As String = result.Content
'ここからaccess_tokenの値だけを取り出す
'文字列を操作しても可能だが、Newtonsont.JsonのJSON解読メソッドを使うと便利です。
'使い方はまず以下の構文でオブジェクトを作成します。
Dim jsonObj As Object = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString)
'アクセストークンをオブジェクトに引数を与えて取得します
Dim acToken As String = jsonObj("access_token")
'Label1の表示を変更
Return acToken
Else
'失敗した場合
Return ""
End If
End Function
End Module
WebFormの追加
WebFormを一つ追加して、下の図のようにリストボックスとテキストボックス、ラベルを追加します。
WebFormにコントロールを追加 |
ボタンアクションを追加
btnCreateBucketをダブルクリックして、コードを追加すします。RestSharpで送信するデータは今回はJSONです。
Public Class WebForm2
Inherits System.Web.UI.Page
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles btnCreateBucket.Click
'**********************************
' アクセストークンを取得
'**********************************
Dim acToken As String = mdlUtils.GetToken("bucket:create")
If acToken = "" Then
Exit Sub
End If
'**********************************
' バケットを作成
'**********************************
'RestSharpでクライアントを作成
Dim url As String = "https://developer.api.autodesk.com"
Dim _client As New RestSharp.RestClient(url)
'RestSharpでリクエストを作成
Dim authReq As New RestSharp.RestRequest()
With authReq
.Resource = "oss/v2/buckets"
'メソッド
.Method = RestSharp.Method.POST
'ヘッダー
.AddHeader("Content-Type", "application/json")
.AddHeader("Authorization", "Bearer " + acToken)
'ボディ(JSON形式で送る場合には匿名型を使用します。)
'{
' "bucketKey":"mybucket",
' "policyKey":"transient"
'}
'{
' "bucketKey":"mybucket",
' "policyKey":"transient"
'}
.AddJsonBody(New With {
Key .bucketKey = tbxBucketKey.Text,
Key .policyKey = lbxPolicy.SelectedValue
})
End With
'POSTする
Dim result As RestSharp.IRestResponse = _client.Execute(authReq)
If result.StatusCode = Net.HttpStatusCode.OK Then
'結果(json形式の結果が文字列で返ってくる)
'{
' "bucketKey":"apptestbucket",
' "bucketOwner":"RlKfGlAbb7N8VJwLllOvpfonB1Ex52qG",
' "createdDate":1463785698600,
' "permissions":[
' {
' "authId":"RlKffonB1Ex52GlAbb7N8VJwLllOvpqG",
' "access":"full"
' }
' ],
' "policyKey":"transient"
'}
Dim responseString As String = result.Content
'文字列を操作しても可能だが、Newtonsont.JsonのJSON解読メソッドを使うと便利。
'使い方はまず以下の構文でオブジェクトを作成します。
Dim jsonObj As Object = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString)
'バケットキーを取り出す
Dim bucketKeyString As String = jsonObj("bucketKey")
'ステータスに出力
lblStatus.Text = bucketKeyString + "の作成に成功しました。"
Else
'エラーの場合は理由を示すJSONが返ってくる
' {
' "reason":"Valid field 'bucketKey' must be of the form [-_.a-z0-9]{3,128}"
'}
Dim responseString As String = result.Content
Dim jsonObj As Object = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString)
Dim reasonString As String = jsonObj("reason")
lblStatus.Text = "バケットの作成に失敗しました。理由:" + reasonString
End If
End Sub
End Class
RestSharpでJSONを送る
RestSharpでBODYにJSON形式のデータをセットする場合は、赤字で示した部分のように.AddJsonBodyの引数に匿名型のオブジェクトをセットします。
実行してみる
ビルドして実行してみます。
ブラウザで実行 |
データ保存期間とバケットキーを指定して「バケット作成」を押すと
バケットが作成された |
0 件のコメント:
コメントを投稿