コード例 #1
0
ファイル: check_helpers.c プロジェクト: rafaelmartins/bluster
void
test_before_request_ctx_reload(void)
{
    name = "bola.md";
    title = "my title";
    content = "bolac";
    parsed_content = "parsed content";
    parsed_content_css = "my css";
    slug = "bola";
    headline = "head";
    commit = "guda";
    unix_utc = -1;
    needs_reload = TRUE;
    expected_ttl = 5.0;

    balde_app_t *app = balde_app_init();
    balde_app_set_user_data_destroy_func(app, (GDestroyNotify) bluster_gist_ctx_free);

    bluster_before_request(app, NULL);

    bluster_gist_ctx_t *ctx = balde_app_get_user_data(app);
    g_assert(ctx != NULL);
    g_assert(ctx->files != NULL);
    bluster_gist_file_t *file = ctx->files->data;
    g_assert_cmpstr(file->name, ==, "bola.md");
    g_assert_cmpstr(file->content, ==, "bolac");
    g_assert_cmpstr(file->slug, ==, "bola");
    g_assert(ctx->files->next == NULL);
    g_assert_cmpstr(ctx->commit, ==, "guda");
    g_assert(ctx->datetime != NULL);
    g_assert(ctx == balde_app_get_user_data(app));

    balde_app_free(app);
}
コード例 #2
0
ファイル: check_helpers.c プロジェクト: rafaelmartins/bluster
void
test_before_request_ctx_reload_with_old_ctx(void)
{
    name = "bola.md";
    title = "my title";
    content = "bolac";
    parsed_content = "<p>parsed content</p>";
    parsed_content_css = "my css";
    slug = "bola";
    headline = "head";
    commit = "guda";
    unix_utc = -1;
    needs_reload = TRUE;
    expected_ttl = 10.0;

    bluster_gist_ctx_t *old_ctx = g_new(bluster_gist_ctx_t, 1);
    old_ctx->files = NULL;
    old_ctx->headline = NULL;

    bluster_gist_file_t *f = g_new(bluster_gist_file_t, 1);
    f->name = g_strdup("bola.md");
    f->title = g_strdup("my old title");
    f->content = g_strdup("chunda");
    f->parsed_content = g_new(bluster_markdown_t, 1);
    f->parsed_content->content = g_strdup("<p>chunda</p>");
    f->parsed_content->css = NULL;
    f->slug = g_strdup("bola");

    old_ctx->files = g_slist_append(old_ctx->files, f);
    old_ctx->commit = g_strdup("arcoiro");
    old_ctx->datetime = NULL;

    balde_app_t *app = balde_app_init();
    balde_app_set_user_data_destroy_func(app, (GDestroyNotify) bluster_gist_ctx_free);
    balde_app_set_config(app, "gist_ttl", "10");
    balde_app_set_user_data(app, old_ctx);

    bluster_before_request(app, NULL);

    bluster_gist_ctx_t *ctx = balde_app_get_user_data(app);
    g_assert(ctx != NULL);
    g_assert(ctx->files != NULL);
    g_assert_cmpstr(ctx->headline, ==, "head");
    bluster_gist_file_t *file = ctx->files->data;
    g_assert_cmpstr(file->name, ==, "bola.md");
    g_assert_cmpstr(file->title, ==, "my title");
    g_assert_cmpstr(file->content, ==, "bolac");
    g_assert_cmpstr(file->parsed_content->content, ==, "<p>parsed content</p>");
    g_assert_cmpstr(file->parsed_content->css, ==, "my css");
    g_assert_cmpstr(file->slug, ==, "bola");
    g_assert(ctx->files->next == NULL);
    g_assert_cmpstr(ctx->commit, ==, "guda");
    g_assert(ctx->datetime != NULL);
    g_assert(ctx == balde_app_get_user_data(app));
    g_assert(ctx != old_ctx);

    balde_app_free(app);
}
コード例 #3
0
ファイル: check_app.c プロジェクト: GnLWeB/balde
void
test_app_free_user_data(void)
{
    balde_app_t *app = balde_app_init();
    balde_app_set_user_data_destroy_func(app, g_free);
    balde_app_set_user_data(app, g_strdup("bola"));
    g_assert_cmpstr(balde_app_get_user_data(app), ==, "bola");
    balde_app_free_user_data(app);
    g_assert(balde_app_get_user_data(app) == NULL);
    balde_app_free(app);
}
コード例 #4
0
ファイル: main.c プロジェクト: rafaelmartins/bluster
static balde_response_t*
main_view(balde_app_t *app, balde_request_t *request)
{
    bluster_gist_ctx_t *ctx = balde_app_get_user_data(app);
    if (ctx == NULL)
        return balde_abort(app, 404);

    const gchar *slug = balde_request_get_view_arg(request, "slug");

    if ((slug != NULL) ^ (ctx->files != NULL && ctx->files->next == NULL)) {
        bluster_gist_file_t *file = NULL;
        if (ctx->files != NULL && ctx->files->next == NULL) {
            file = ctx->files->data;
        }
        else {
            for (GSList *tmp = ctx->files; tmp != NULL; tmp = tmp->next) {
                bluster_gist_file_t *tmp_file = tmp->data;
                if (g_strcmp0(tmp_file->slug, slug) == 0) {
                    file = tmp_file;
                    break;
                }
            }
        }
        if (file == NULL)
            return balde_abort(app, 404);
        balde_response_t* response = create_response(ctx);
        balde_response_set_tmpl_var(response, "css",
            file->parsed_content->css == NULL ? "" : file->parsed_content->css);
        gchar *content;
        gchar *title;
        if (file->title != NULL) {
            title = file->title;
            content = g_strdup(file->parsed_content->content);
        }
        else {
            title = ctx->headline;
            content = g_strdup_printf("<h1>%s</h1>\n%s", ctx->headline,
                file->parsed_content->content);
        }
        balde_response_set_tmpl_var(response, "title", title);
        balde_response_set_tmpl_var(response, "content", content);
        balde_template_base(app, request, response);
        g_free(content);
        return response;
    }
    if (slug == NULL) {
        balde_response_t* response = create_response(ctx);
        balde_response_set_tmpl_var(response, "title", ctx->headline);
        GString *list = g_string_new("");
        for (GSList *tmp = ctx->files; tmp != NULL; tmp = tmp->next) {
            bluster_gist_file_t *tmp_file = tmp->data;
            balde_response_set_tmpl_var(response, "slug", tmp_file->slug);
            balde_response_set_tmpl_var(response, "link_title", tmp_file->title);
            g_string_append(list, balde_str_template_list(app, request, response));
        }
        balde_response_set_tmpl_var(response, "list", list->str);
        g_string_free(list, TRUE);
        balde_template_base(app, request, response);
        return response;
    }
    return balde_abort(app, 404);
}