LoginSignup
1
2

More than 5 years have passed since last update.

Azure FunctionsでTrello.NETを使う方法

Last updated at Posted at 2017-03-31

Trelloのとあるリストに入ったもののラベルの色を特定の色にするバッチプログラムをAzure Functionで(しかもC#で)書こうとしたのですが、ライブラリが古くて結構つらかったので書きます。
Trelloのラベルの色を変えるFunctionはgithubに公開しています。

結論をいうと

以下のようにproject.jsonに"MyTrelloNet": "1.0.8"と書くことで解決させました。

project.json
{
  "frameworks": {
    "net46":{
      "dependencies": {
      "MyTrelloNet": "1.0.8"
      }
    }
  }
}

もしかしたら、Azure Functionにpublishした後に、手動でnuget restoreしないといけないかもしれません。

Trello.NET

TrelloのクライアントとしてTrello.NETというものがあります。
これがだいぶメンテされていなくて、結構エラーが出ていたのが今回の話です。
すぐ使いたかったしプルリクはテストに失敗するみたいなので修正して自分が使う用にMyTrelloNetとしてnugetにあげました。MyTrelloNetという名前で使えます。namespaceはTrelloNetのままです。
以下修正したところの紹介です。

ターゲットフレームワークを変えた

Azure Functionが.net46なので合わせて.net46でビルドしました。
RestSharpのrestclientのAuthenticatorが下のようになっていて後方互換性がなかったので再ビルドも必要でした。

RestClient.cs
public IAuthenticator Authenticator { get; set; }

合わせてNewtonsoft.Jsonを10.0.1、RestSharpを105.2.3を使うようにしました。

参照エラー

using RestSharp.Authenticators;
をMemberTokenAuthenticator.csに追記

TrelloNet\Internal\MemberTokenAuthenticator.cs
using RestSharp;
using RestSharp.Authenticators;

色追加

これはプルリクにもあるやつをコピペ

TrelloNet\Cards\Color.cs
namespace TrelloNet
{
    public enum Color
    {
        Green,
        Yellow,
        Orange,
        Red,
        Purple,
        Blue,
        Sky,
        Lime,
        Pink,
        Black
    }
}

エスケープ処理追加

私はEleganttというガントチャートツールを使っているのですが、どうもこれがあるとカードのdescに変な値が入るみたいでJsonパースエラーが起きていました。
RestShartにExecute<T>(request)みたいなリクエストしてレスポンスをデシリアライズしてくれるメソッドがあるのですが、この中にエスケープ処理が入っていないので普通のExecuteでJson取得して、手動でデシリアライズします。
その時にJsonをエスケープのためにリテラル文字列に変えます。

TrelloNet\Internal\TrelloRestClient.cs
        public T Request<T>(IRestRequest request) where T : class, new()
        {
            var response = Execute(request);

            ThrowIfRequestWasUnsuccessful(request, response);

            return response.StatusCode == HttpStatusCode.NotFound ? null : JsonConvert.DeserializeObject<T>(@response.Content);
        }
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2