about summary refs log tree commit diff
path: root/tools/blog_cli/README.md
blob: 7afa0fe9207a02f4da9d09d1f3f8ccdb74b82d80 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
tazblog CLI
===========

My blog stores its content in DNS, spread out over three types of `TXT` entries:

* `TXT _posts.blog.tazj.in.`: A sorted list of posts, serialised as a JSON list of
  strings (e.g. `["1486830338", "1476807384"]`)

* `TXT _chunks.$postID.blog.tazj.in`: JSON chunks containing the blog post text

* `TXT _meta.$postID.blog.tazj.in`: JSON blob with blog post metadata

All JSON blobs are base64-encoded.

This CLI tool helps to update those records.

Each blog post data is a series of JSON-encoded structures which follow one of
these formats:

```
struct metadata {
    chunks: int
    title: string
    date: date
}
```

Where `chunks` describes the number of chunks following this format:

```
struct chunk {
    c: int
    t: string
}
```

Writing a blog post to DNS means taking its text and metadata, chunking it up
and writing the chunks.

Reading a blog post means retrieving all data, reading the metadata and then
assembling the chunks in order.