Data API Library for Xamarin(その5・初期化とSendメソッド)

  • 投稿日:
  • by
  • カテゴリ:

今回から、Data API Library for Xamarinでのプログラムの書き方を解説します。
今日は、初期化とSendメソッドについて解説します。

1.using文の追加

まず、Data API Library for Xamarinを使いたいソースで、先頭部分に以下の2行のusing文を追加します。

using Newtonsoft.Json.Linq;
using MovableType;

2.初期化

初期化を行うには、DataAPIクラスのオブジェクトを作成します。
コンストラクタのパラメータとして、以下の2つを取ります。

  • mt-data-api.cgiのディレクトリ
  • クライアントID

クライアントIDは、Data APIでMovable Typeにアクセスするアプリを表す文字列です。
半角英数字で任意のIDを決めて指定します。

例えば、Xamarin.Formsでアプリのクラス(App.xaml.cs)のコンストラクタでData APIの初期化も行うとします。
mt-data-api.cgiが「http://www.foo.com/mt/」ディレクトリにあるとします。
また、クライアントIDを「example」にするとします。
この場合だと、App.xaml.csは以下のようなコードになります。

using System;
using System.Collections.Generic;
using Xamarin.Forms;
using Newtonsoft.Json.Linq;
using MovableType;

namespace ネームスペース名
{
    public partial class App : Application
    {
        DataAPI api;

        public App ()
        {
            InitializeComponent();

            MainPage = new ネームスペース名.MainPage();
            api = new DataAPI("example", "http://www.foo.com/mt/");
        }
    ...
    }
}

3.Sendメソッド

Data APIのオブジェクトを初期化すると、「Send」というメソッドを使うことができます。
Sendメソッドは、Data APIで行う処理に応じて、様々な引数を取ります。
引数は以下の順に指定します。

項目データ型内容
メソッド名stringData APIで行う処理のメソッド名を渡します。
JavaScriptライブラリでのメソッド名と同じものを使います。
サイトIDint操作する対象のサイト(ウェブサイトまたはブログ)のIDを指定します。
メソッドによっては、サイトIDを指定しないものもあり、その場合はサイトIDを省略します。
オブジェクトIDint操作する対象のオブジェクト(記事)等のIDを指定します。
メソッドによっては、オブジェクトIDを指定しないものもあり、その場合はオブジェクトIDを省略します。
オブジェクトJObjectオブジェクトの作成/更新を行うメソッドでは、オブジェクトをJObject型で表したものを指定します。
作成/更新以外のメソッドではこの引数は省略します。
パラメータDictionary<string, string>メソッドのオプションのパラメータを指定します。
オプションのパラメータを指定しない場合は、この引数は省略します。

また、Data APIでは非同期処理を多用します。
C#では非同期処理を同期的に書けるasync/awaitという構文があります。
当ライブラリもasync/awaitを使っていて、Sendメソッドはこれらと組み合わせます。

Sendメソッドはawaitと共に使います。
また、Sendメソッドを含む関数には、asyncキーワードを追加します。

Sendメソッドの戻り値は、Data APIの処理結果になります。
戻り値の型はJObject型です。

例えば、クラスに記事の一覧を取得して返す「ListEntries」というメソッドを作るとします。
このメソッドは以下のように書きます。

public async Task<JObject> ListEntries(int site_id)
{
    JObject resp;

    resp = await api.Send("listEntries", site_id);
    return resp;
}