2015-01-06 06:07:14 +00:00
|
|
|
Desirae
|
2015-01-03 19:26:23 +00:00
|
|
|
=====
|
|
|
|
|
2015-01-06 06:07:14 +00:00
|
|
|
In development.
|
|
|
|
|
|
|
|
Blog Platform. A Ruhoh knock-off written in JavaScript for the Browser
|
|
|
|
|
|
|
|
Key Features
|
|
|
|
------------
|
|
|
|
|
|
|
|
Really good use of `try { ... } catch(e) ...` - it won't all blow up at the slightest parse error (*cough* ruhoh *cough* jekyll)... bless me.
|
|
|
|
|
|
|
|
JavaScript - it's so stable it takes 10 years to get new any features. Won't break every time you upgrade OS X and reinstall brew (*cough* ruby).
|
|
|
|
|
|
|
|
Browser (optional) - using your front-end templates to build in your front-end? Imagine that!
|
|
|
|
|
|
|
|
Node (optional) - if you'd prefer to go headless, you can.
|
|
|
|
|
|
|
|
The server is *very* minimal and could easily be implemented in any language (such as ruby or python).
|
|
|
|
|
|
|
|
Server
|
|
|
|
======
|
|
|
|
|
|
|
|
Obviously there has to be a server with some sort of storage and retrieval mechanism.
|
|
|
|
|
|
|
|
I've implemented a very simple node server using the filesystem.
|
|
|
|
|
|
|
|
/api/fs/walk
|
|
|
|
------------
|
|
|
|
|
|
|
|
`GET http://local.dear.desi:8080/api/fs/walk?dir=posts&dotfiles=true&extensions=md,markdown,jade,htm,html`
|
|
|
|
|
|
|
|
* `dir` **must** be supplied. returns a flat list of all files, recursively
|
|
|
|
* `dotfiles` default to `false`. includes dotfiles when `true`.
|
|
|
|
* `extensions` defaults to `null`. inclode **only** the supplied extensions when `true`.
|
|
|
|
|
|
|
|
```json
|
|
|
|
[
|
|
|
|
{ "name": "happy-new-year.md"
|
|
|
|
, "lastModifiedDate": "2015-01-05T18:19:30.000Z"
|
|
|
|
, "size": 2121
|
|
|
|
, "relativePath": "posts/2015"
|
|
|
|
}
|
|
|
|
|
|
|
|
, { "name": "tips-for-the-ages.jade"
|
|
|
|
, "lastModifiedDate": "2014-06-16T18:19:30.000Z"
|
|
|
|
, "size": 389
|
|
|
|
, "relativePath": "posts"
|
|
|
|
}
|
|
|
|
, { "name": "my-first-post.html"
|
|
|
|
, "lastModifiedDate": "2013-08-01T22:47:37.000Z"
|
|
|
|
, "size": 4118
|
|
|
|
, "relativePath": "posts/2013"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
```
|
|
|
|
|
|
|
|
To retrieve multiple dir listings at once:
|
|
|
|
|
|
|
|
* for a few simple dirs without special chars just change `dir` to `dirs` and separate with commas
|
|
|
|
|
|
|
|
`GET http://local.dear.desi:8080/api/fs/walk?dirs=posts/2015,posts/2013&dotfiles=true&extensions=md,markdown,jade,htm,html`
|
|
|
|
|
|
|
|
* for many dirs, or dirs with special chars, `POST` an object containing an array of `dirs` with `&_method=GET` appended to the url.
|
|
|
|
|
|
|
|
```
|
|
|
|
POST http://local.dear.desi:8080/api/fs/walk?dotfiles=true&extensions=md,markdown,jade,htm,html&_method=GET
|
|
|
|
|
|
|
|
{ "dirs": [ "old", "2013,12", "2013,11" ] }
|
|
|
|
```
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
{
|
|
|
|
"posts/2015": [ { "name": ... }, { ... } ]
|
|
|
|
, "posts/2013": [ ... ]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
/api/fs/files
|
|
|
|
-------------
|
|
|
|
|
|
|
|
`GET http://local.dear.desi:8080/api/fs/files?path=posts/happy-new-year.md`
|
|
|
|
|
|
|
|
```json
|
|
|
|
{ "path": "posts/intro-to-http-with-netcat-node-connect.md"
|
|
|
|
, "lastModifiedDate": "2013-08-01T22:47:37.000Z"
|
|
|
|
, "contents": "..."
|
|
|
|
, "sha1": "6eae3a5b062c6d0d79f070c26e6d62486b40cb46"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
To retrieve multiple files at once:
|
|
|
|
|
|
|
|
* for a few simple files without special chars just change `path` to `paths` and separate with commas
|
|
|
|
|
|
|
|
`GET http://local.dear.desi:8080/api/fs/files?paths=posts/foo.md,posts/bar.md`
|
|
|
|
|
|
|
|
* for many files, or files with special chars, `POST` an object containing an array of `pathss` with `&_method=GET` appended to the url.
|
|
|
|
|
|
|
|
```
|
|
|
|
POST http://local.dear.desi:8080/api/fs/files?dotfiles=true&extensions=md,markdown,jade,htm,html&_method=GET
|
|
|
|
|
|
|
|
{ "paths": [ "posts/foo.md", "posts/2013,11,30.md" ] }
|
|
|
|
```
|
|
|
|
|
|
|
|
```json
|
|
|
|
[
|
|
|
|
{ "path": "posts/foo.md"
|
|
|
|
, "lastModifiedDate": "2013-08-01T22:47:37.000Z"
|
|
|
|
, "contents": "..."
|
|
|
|
, "sha1": "6eae3a5b062c6d0d79f070c26e6d62486b40cb46"
|
|
|
|
}
|
|
|
|
, ...
|
|
|
|
]
|
|
|
|
```
|