カプチーノと言うライブラリを使いたかった

初めに

この記事はごちうさ Advent Calendar 20167日目の記事です。 www.adventar.org 遅れてしまって申し訳ないです .
(と思いつつ,今の時刻は2016/12/7 14:00(EST東部時間)なので許していただけると……、と言う気持ちです。)

モチベーション

このようなライブラリを見つけました。
GitHub - cappuccino/cappuccino: Web Application Framework in JavaScript and Objective-J
しかし JavaScriptもObjective-Jも触ったことがないのとより身近なライブラリを作って
出来る限りチノちゃんと一緒にコントリビュートしたということでカプチーノと言うライブラリを作りました。
今回はこれを紹介したいと思います

  • 「この部分はチノちゃんに働いてもらう?」
  • 「ココはチノちゃんが働いているから問題ないと思うよ」 等が聞こえるチームにしたいです。

作ったもの

github.com

C言語のSocket周りの練習がてら上の夢をかなえるために動きだしました。

環境

READMEにも書いてあるのですが基本的にc++14がビルドできる環境なら動きます。 シンプルにしたかったのでboostは使ってないです。

簡単な例

#include "../cappuccino.hpp"
#include <json.hpp>

using json = nlohmann::json;
using Response = Cappuccino::Response;
using Request = Cappuccino::Request;

int main(int argc, char *argv[]){
    Cappuccino::Cappuccino(argc, argv);

    Cappuccino::templates("html");
    Cappuccino::publics("public");

    Cappuccino::route<Method::GET>("/",[](std::shared_ptr<Request> request) -> Response{
        auto res =  Response(request);
        res.file("index.html");
        return res;
    });

    Cappuccino::run();

    return 0;
}

こんな形でかけます。

実行

$ ./chino
$ curl -X POST   http://localhost:1204/

改善点

  • スレッドプールとか作りたい
  • 一応RFCは見ているが本当に準拠してるのか修正
  • C++の書き方わからない

作ってみて

  • チノちゃんと何かモノを作ると言う経験が可能になったのは大きい。
  • port番号の意味でチノちゃんの誕生日を共有しやすくなった。

最後に

チノちゃん誕生日おめでとう!いつも癒やしありがたき🙏