WebMatrix 3: Windows Store oEmbed API を利用する
執筆日時:
Windows Store oEmbed API は、なかなかいいですね。ブログにこんなかんじでストアアプリの情報が貼り付けられます。
使い方などは以下の URL を参照してください。
またストアアプリを作りたくなりました(ぁ
WebMatrix 3 で Windows Store oEmbed API を利用する
Windows Store oEmbed API と jquery-oembed を組み合わせて使う方法 - しばやん雑記 のように JavaScript(クライアントサイド)で利用するのがよいと思いますが、C#(サーバーサイド)で使うこともできます。説明するのは面倒なので、コードだけおいておきます。APS.NET の“空のサイト”を作成し、Default.cshtml を以下のように編集してください。
@{
const string API_ENDPOINT = @"http://wsoembed.com/oembed";
const string APP_URL = @"http://apps.microsoft.com/windows/ja-jp/app/86b6ecdc-e810-4aa2-9bdb-bb0da5b34737";
var url = string.Format("{0}?url={1}", API_ENDPOINT, APP_URL);
var response = string.Empty;
using (var downloader = new WebClient(){ Encoding = System.Text.Encoding.UTF8 })
{
response = downloader.DownloadString(url);
}
var json_object = Json.Decode(response);
}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8" />
<title>マイ サイトのタイトル</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
</head>
<body>
<h1>Query</h1>
<p>@url</p>
<h1>JSON</h1>
<pre>
@response
</pre>
<h1>json_object Member</h1>
<p>var json_object = Json.Decode(response);</p>
<ul>
@foreach(var member in json_object.GetDynamicMemberNames())
{
<li>json_object.@member</li>
}
</ul>
<h1>Html.Raw(json_object.html)</h1>
@Html.Raw(json_object.html)
</body>
</html>
結果はこんなかんじです。

API_ENDPOINT を叩けば JSON が返ってくるので、JSON ヘルパーを利用してオブジェクトにしてやりましょう。このオブジェクトは dynamic なので、json_object.html などとしてやれば値がとれます。大文字小文字に注意してね ☆(ゝω・)vキャピ
Windows Store oEmbed API ヘルパー
こんなコード、毎回書くのは面倒なので、ヘルパーにしてしまいましょう。ルートフォルダーに App_Code フォルダーを作成し、WindowsStore.cshtml を作成します。中身はこんな感じ。
@helper GetHtml(string app_id) { // app_id が url で渡されても許容する app_id = app_id.Split('/').Last();const string API_ENDPOINT = @"http://wsoembed.com/oembed"; const string APP_BASEURL = @"http://apps.microsoft.com/windows/ja-jp/app/";
var url = string.Format("{0}?url={1}", API_ENDPOINT, APP_BASEURL + app_id);
using (var downloader = new WebClient(){ Encoding = System.Text.Encoding.UTF8 }) { var response = downloader.DownloadString(url); var json_object = Json.Decode(response);
@Html.Raw(json_object.html) } }
使い方はこんな感じ。Default.cshtml の最後の方にでも書き足してみてください。
: : <h1>Helper</h1> @WindowsStore.GetHtml(APP_URL) @WindowsStore.GetHtml("86b6ecdc-e810-4aa2-9bdb-bb0da5b34737") </body> </html>
結果はこんなかんじです。

ja-jp で決め打ちになっているのはアレなので、
@helper GetHtml(string app_id, string locale = "en-us") { : :
みたいなシグネチャの方がいいのかもしれませんね。