<commit_before># teratailApiClient
.NET teratail API Client Library

## teratail
[teratail](https://teratail.com/)
> teratailは、日本のエンジニアが集うQ&Aコミュニティサイトです。

## teratail API
[teratail API](https://teratail.com/api)
> teratail APIは、teratailで使われている質問や回答、ユーザー、タグなどの情報を利用するためのWeb APIです。

## 注意点
質問一覧等を取得した際に、ユーザが`退会済み`や`ゲストユーザ`だとUserプロパティは`null`になります。

## Sample
```csharp
using System;
using TeratailApiClient;
using TeratailApiClient.Common;
using TeratailApiClient.Data;
namespace ApiExec
{
    class Program
    {
        private static readonly string tagGitHub = "GitHub";

        static void Main(string[] args)
        {
            // アクセストークンを指定する場合
            // TeratailApi tera = new TeratailApi("hogeAccessToken");

            // アクセストークンを指定しない場合
            TeratailApi tera = new TeratailApi();

            // 10件ずつGitHubタグの付いた質問をリストアップ
            int page = 1;
            int limit = 10;
            var meta =  ListUpTag(tera, page, limit);
            while (meta.HasNext())
            {
                Console.WriteLine("====================");
                page++;
                meta = ListUpTag(tera, page, limit);
            }
            Console.ReadKey();
        }

        private static MetaPage ListUpTag(TeratailApi tera, int page, int limit)
        {
            var tagq = tera.GetTagQuestionList(tagGitHub, limit, page);
            tera.GetTagQuestionList(tagGitHub, limit, page).Questions.ForEach(x =>
            {
                Console.WriteLine(x.Title);
                Console.WriteLine(x.User.DisplayName);
            });
            return tagq.Meta;
        }

    }
}

```
## TODO
非同期対応
WebClient -> HttpClient<commit_msg>NugetGalleryのアドレスを追記<commit_after># teratailApiClient
.NET teratail API Client Library

## teratail
[teratail](https://teratail.com/)
> teratailは、日本のエンジニアが集うQ&Aコミュニティサイトです。

## teratail API
[teratail API](https://teratail.com/api)
> teratail APIは、teratailで使われている質問や回答、ユーザー、タグなどの情報を利用するためのWeb APIです。

## Client Library
### Nuget
[NuGet Gallery | teratailApiClient 1.0.0](https://www.nuget.org/packages/teratailApiClient/)
```
PM> Install-Package teratailApiClient
```

### 注意点
質問一覧等を取得した際に、ユーザが`退会済み`や`ゲストユーザ`だとUserプロパティは`null`になります。

### Sample
```csharp
using System;
using TeratailApiClient;
using TeratailApiClient.Common;
using TeratailApiClient.Data;
namespace ApiExec
{
    class Program
    {
        private static readonly string tagGitHub = "GitHub";

        static void Main(string[] args)
        {
            // アクセストークンを指定する場合
            // TeratailApi tera = new TeratailApi("hogeAccessToken");

            // アクセストークンを指定しない場合
            TeratailApi tera = new TeratailApi();

            // 10件ずつGitHubタグの付いた質問をリストアップ
            int page = 1;
            int limit = 10;
            var meta =  ListUpTag(tera, page, limit);
            while (meta.HasNext())
            {
                Console.WriteLine("====================");
                page++;
                meta = ListUpTag(tera, page, limit);
            }
            Console.ReadKey();
        }

        private static MetaPage ListUpTag(TeratailApi tera, int page, int limit)
        {
            var tagq = tera.GetTagQuestionList(tagGitHub, limit, page);
            tera.GetTagQuestionList(tagGitHub, limit, page).Questions.ForEach(x =>
            {
                Console.WriteLine(x.Title);
                Console.WriteLine(x.User.DisplayName);
            });
            return tagq.Meta;
        }

    }
}

```
### TODO
* 非同期対応
* WebClient -> HttpClient
{'fraction_non_alphanumeric': 0.11792986425339366, 'fraction_numerical': 0.003676470588235294, 'mean_word_length': 2.2599078341013823, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 12, 'https://': 5, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2157818', 'n_tokens_mistral': 1352, 'n_tokens_neox': 1279, 'n_words': 207}