示例#1
0
        /// <summary>
        /// 通知ハブに登録されているタグに関連付いている登録情報を返します
        /// </summary>
        public async Task <IEnumerable <RegistrationModel> > Get(string expression)
        {
            // タグに関連付いている情報を全て取得
            var result = await _client.GetRegistrationsByTagExpressionAsync(expression);

            // モデルへマッピングして返す
            return(result.Select(p => new RegistrationModel(p)));
        }
        /// <summary>
        /// CSV 形式で登録されている情報の一覧を出力します
        /// </summary>
        public async Task <HttpResponseMessage> Get(string platform = "", string expression = null)
        {
            // 登録情報を取得
            var result = string.IsNullOrEmpty(expression) ? await _client.GetAllRegistrationsAsync(0) : await _client.GetRegistrationsByTagExpressionAsync(expression);

            // プラットフォームでフィルタリング
            var platforms = platform.Split(',');

            var records = result.Select(p => new RegistrationModel(p)).Where(p => platforms.Contains(p.Platform));

            // CSV として出力する
            var writer = new StringWriter();

            var csvWriter = new CsvWriter(writer);

            csvWriter.Configuration.RegisterClassMap <RegistrationModelMap>();

            csvWriter.WriteRecords(records);

            // ダウンロード可能な形でレスポンスを作成
            var response = new HttpResponseMessage
            {
                Content = new StringContent(writer.ToString())
            };

            response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = "export.csv"
            };
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

            return(response);
        }