はじめに
前回に続きResource Scriptについてです。今回は,
今回紹介しているコードはC#を使用しています。実際にコードを実行するには,
- ※1
%programfiles%\Microsoft SDKs\Live Framework\v0.
91\API Toolkits\.Net Libraryにある以下のDLLを追加します。 - Microsoft.
LiveFX. Client. dll - Microsoft.
LiveFX. ResourceModel. dll - Microsoft.
Web. dll
- Microsoft.
また,
using Microsoft.LiveFX.Client;
using Microsoft.LiveFX.ResourceModel;
using Microsoft.LiveFX.ResourceModel.Scripting;
リソースの作成
手始めにStatementを使用してリソースを作成してみましょう。リソースの作成には,
// News アイテムリソースの生成
var news = new NewsItemResource("LiveMesh.AppMessagePost");
news.Contexts.Add(new NewsItemContext("Target", "text/plain", "メッセージテスト", null, null));
// CreateResourceStatement の生成
var s1 = Statement.CreateResource<NewsItemResource>("s1", new Uri("https://user-ctp.windows.net/V0.1/Mesh/News"), news, null);
CreateResourceメソッドの戻り値がCreateResourceStatementオブジェクトで,
- CreateResourceStatementのNameプロパティ
- CreateResourceStatementのCollectionUrlプロパティ
- CreateResourceStatementのRequestプロパティ
CollectionUrlに指定したコレクション
CreateResourceメソッドは,
var s1 = Statement.CreateResource<NewsItemResource>(new Uri("https://user-ctp.windows.net/V0.1/Mesh/News"), news);
CreateResourceStatementだけでは実行できないため,
// Sequence Statement の生成
var sequence = Statement.Sequence(s1);
// コンパイル
var script = sequence.Compile();
// 実行
var creds = new NetworkCredential("user@example.jp", "password", "https://user-ctp.windows.net/V0.1/Script");
script.RunAtServer(creds);
実行後,
上記のResource Scriptによるリソース作成は,
var creds = new NetworkCredential(User.UserId, User.Password);
var loe = new LiveOperatingEnvironment();
var news = new NewsItem("LiveMesh.AppMessagePost");
news.Resource.Contexts.Add(new NewsItemContext("Target", "text/plain", "メッセージテスト", null, null));
loe.Mesh.News.Add(ref news);
データフロー
リソースの作成はひとつのStatementで処理を完結することが可能でしたが,
例えば,
Live Meshフォルダを作成する例を示します。Mesh Objectの作成は先ほどのNewsアイテムの作成と同等です。
// Live Mesh フォルダとなる Mesh Object の作成
var folder = new MeshObjectResource("アルバム");
folder.Type = "LiveMeshFolder";
var s1 = Statement.CreateResource<MeshObjectResource>("s1", new Uri("https://user-ctp.windows.net/V0.1/Mesh/MeshObjects"), folder);
プロパティの連結
続いてData Feedを作成します。Data Feedを作成する先は,
CreateResourceStatementクラスは,
以上からData Feedリソースを作成するコードは次のようなイメージになります。ただし,
// 間違った Data Feed 作成のStatement 記述
var s2 = Statement.CreateResource<DataFeedResource>("s2", s1.Response.DataFeedsLink, df);
このコードが処理される時点では,
Data Feedを作成する例では,
var s2 = Statement.CreateResource<DataFeedResource>("s2", null, df, Statement.Bind("CollectionUrl", "s1", "Response.DataFeedsLink"));
Statement.
ふたつのStatementを順次処理するとLive Meshフォルダが作成されます。
var sequence = Statement.Sequence(s1, s2);
var script = sequence.Compile();
var creds = new NetworkCredential("user@example.jp", "password", "https://user-ctp.windows.net/V0.1/Script");
script.RunAtServer(creds);