連載第5回目は今までの処理をWebアプリケーションにまとめます。
連載目次
はじめに
第1回 Google Analytics APIの利用準備
第2回 Google AnalyticsからPVを取得する
第3回 Twitter APIの利用準備
第4回 Twitterに投稿する
第5回 Webアプリケーションにまとめる
最終回 Azureへのデプロイ
ASP.NET Webアプリケーションプロジェクトの追加
ソリューションにASP.NET Webアプリケーションプロジェクトを追加します。
プロジェクト名は「WebApplication」にしました。
テンプレートは「Web API」にし、認証は「なし」にしておきましょう。
参照の追加
前回までで作ったクラスが参照できるよう、プロジェクトの参照に TweetPVApps を追加しておきます。
コントローラの作成
テンプレートで「ValuesController」というコントーラーが作成されていますので、これを「TweetPVController」に変更します。
public class TweetPVController : ApiController { // GET api/TweetPV public async Task<string> Get() { var file = ConfigurationManager.AppSettings["analyticsKeyFile"]; var analyticsKeyFile = file.StartsWith("~") ? HttpContext.Current.Server.MapPath(file) : file; // ~で始まっていれば絶対パスに変換 var helper = new AnalyticsHelper(analyticsKeyFile); var pv = await helper.GetPvAsync(); var message = string.Format("昨日のなか日記のPVは{0}でしたyo https://nakaji.hatenablog.com/ ", pv); await TwitterHelper.UpdateStatusAsync(message); return message; } }
確認し易いようにGETメソッドで実装していますが、必要に応じてPOSTに変更するなどして下さい。
前半でGoogle AnalyticsからのPV取得、後半でTwitterへの投稿を行っています。
P12キーファイルの配置
Google Analytics の P12キーファイルを、App_Dataフォルダにコピーします。
忘れがちですが、このファイルがリリース対象になるようファイルのプロパティにある「出力ディレクトリにコピー」にて、「新しい場合はコピーする」もしくは「常にコピー」に変更しておきます。
web.configの編集
第2回、第4回で app.config に設定した内容を web.config に追加します。
P12キーファイルの指定(analyticsKeyFile)ですが、Azureにデプロイしたときのことを考え、Webサイトの相対パスで指定しておき、TweetPVController内で絶対パスに変換するようにしています*1。
<configuration> <appSettings> <add key="analyticsKeyFile" value="~/App_Data/xxxxx.p12"/> <add key="analyticsCredentialId" value="xxxxx@developer.gserviceaccount.com"/> <add key="analyticsViewId" value="99999999"/> <add key="consumerKey" value="xxxxxxxxxx"/> <add key="consumerSecret" value="xxxxxxxxxx"/> <add key="accessToken" value="xxxxxxxxxx-xxxxxxxxxx"/> <add key="accessTokenSecret" value="xxxxxxxxxx"/>
動作確認
動作確認ですが、デバッグ実行してみましょう。
その後、ブラウザで「http://localhost:22763/api/TweetPV」*2にアクセスしてみます。
正常に動作すれば以下の様な結果が返ってくるはずです。
そして、Twitterには同じ内容でつぶやかれているはずです。
おわり
さて、いよいよ大詰め。最終回はAzureへのデプロイとスケジュール実行の設定を行います。