Developing for HotdogEd
HotdogEd is pluggable software. It hosts an sqlite3 database and provides methods of accessing it under Android via the content-provider mechanism.
If you would like to create a plugin (i.e. you want a 3-rd party FTN-mailer and tosser), you can access the content by the following URIs:
- content://com.pushkin.hotdoged.provider/notifications - get a list of notifications
- content://com.pushkin.hotdoged.provider/templates/# - access the message template by _id
- content://com.pushkin.hotdoged.provider/filters - get a list of filters
- content://com.pushkin.hotdoged.provider/filters/# - access the filter by _id
- content://com.pushkin.hotdoged.provider/scores - get a list of scores
- content://com.pushkin.hotdoged.provider/scores/# - access the score by _id
- content://com.pushkin.hotdoged.provider/addresses - get a list of addresses
- content://com.pushkin.hotdoged.provider/addresses/# - access the address by _id
- content://com.pushkin.hotdoged.provider/Categories - get a list of categories
- content://com.pushkin.hotdoged.provider/Categories/# - access the category by _id
- content://com.pushkin.hotdoged.provider/Categories/* - access the category by name
- content://com.pushkin.hotdoged.provider/servers, - get a list of servers
- content://com.pushkin.hotdoged.provider/*/servers, - get a list of servers for category (by category name)
- content://com.pushkin.hotdoged.provider/servers/# - access the server by _id
- content://com.pushkin.hotdoged.provider/*/servers/# - access the server by _id (for the category)
- content://com.pushkin.hotdoged.provider/*/servers/#/groups - get a list of groups (for category name and server _id)
- content://com.pushkin.hotdoged.provider/groups/# - access the group by _id
- content://com.pushkin.hotdoged.provider/*/servers/#/groups/# - access the group by _id (for category name and server _id)
- content://com.pushkin.hotdoged.provider/*/servers/#/groups#/items - get a list of messages (for category name, server _id and group _id)
- content://com.pushkin.hotdoged.provider/*/servers/#/groups#/items/# - access the message by _id (for category name, server _id and group _id)
- content://com.pushkin.hotdoged.provider/*/items - get a list of messages (for category name)
- content://com.pushkin.hotdoged.provider/*/items/# - access the message by _id (for category name)
- content://com.pushkin.hotdoged.provider/*/servers/#/groups#/filters - get a list of filters (for category name, server _id and group _id)
- content://com.pushkin.hotdoged.provider/*/servers/#/groups#/filters/# - access the filter by _id (for category name, server _id and group _id)
There are some more URIs that are intended for internal purposes.
Here is a database scheme actual for 2.13.x:
CREATE TABLE grouptypes
(
_id INTEGER PRIMARY KEY
, code TEXT
);
CREATE TABLE templates
(
_id INTEGER PRIMARY KEY
, template TEXT
, template_r TEXT
, template_f TEXT
, template_aa TEXT
);
CREATE TABLE servers
(
_id INTEGER PRIMARY KEY
, category_id INTEGER
, template_id INTEGER
, server_active INTEGER
, server_name TEXT
, server_ip TEXT
, server_description TEXT
, server_codepage TEXT
, server_auth_enable INTEGER
, keep_msg_amount_per_group INTEGER
, keep_msg_days_per_group INTEGER
, user_name TEXT
, user_address TEXT
, server_quoting TEXT
, signature TEXT
, custom_headers TEXT
, outputheadersformat INTEGER
, origin TEXT
, schedule_time INT
, last_sync INT
, add_int_01 INT
, add_int_02 INT
, add_info_01 TEXT
, areasurl TEXT
, domain TEXT,
FOREIGN KEY(category_id) REFERENCES categories(_id) ON DELETE CASCADE
);
CREATE TABLE groups
(
_id INTEGER PRIMARY KEY
, server_id INTEGER
, grouptype_id INTEGER
, template_id INTEGER
, invisible INTEGER
, NAME TEXT
, description TEXT
, filter_id INTEGER
, server_codepage TEXT
, keep_msg_amount_per_group INTEGER
, keep_msg_days_per_group INTEGER
, user_name TEXT
, user_address TEXT
, server_quoting TEXT
, new_msgs INTEGER
, last_read INTEGER
, last_downloaded INTEGER
, purge_read INTEGER
, signature TEXT
, custom_headers TEXT
, purged INTEGER
, notify INT
, include_special INT
, last_notified INT,
FOREIGN KEY(server_id) REFERENCES servers(_id) ON DELETE CASCADE,
FOREIGN KEY(template_id) REFERENCES templates(_id),
FOREIGN KEY(grouptype_id) REFERENCES grouptypes(_id)
);
CREATE TABLE items_nntp
(
_id INTEGER PRIMARY KEY
, group_id INTEGER
, article_id INTEGER
, from_name TEXT
, to_name TEXT
, subject TEXT
, date INTEGER
, message_id TEXT
, in_reply_to TEXT
, ref TEXT
, article TEXT
, READ INTEGER
, starred INTEGER
, add_info_01 TEXT
, tree INTEGER,
FOREIGN KEY(group_id) REFERENCES groups(_id) ON DELETE CASCADE
);
CREATE TABLE items_ftn
(
_id INTEGER PRIMARY KEY
, group_id INTEGER
, from_name TEXT
, from_addr TEXT
, to_name TEXT
, to_addr TEXT
, subject TEXT
, date INTEGER
, message_id TEXT
, reply_to TEXT
, article TEXT
, READ INTEGER
, starred INTEGER
, add_info_01 TEXT
, tree INTEGER,
FOREIGN KEY(group_id) REFERENCES groups(_id) ON DELETE CASCADE
);
CREATE TABLE filters
(
_id INTEGER PRIMARY KEY
, group_id INTEGER
, NAME TEXT
, description TEXT
, filter_type INTEGER
, parent_filter INTEGER
, field INTEGER
, filter_relation INTEGER
, field_value TEXT
, field_value_type INTEGER,
FOREIGN KEY(group_id) REFERENCES groups(_id) ON DELETE CASCADE,
FOREIGN KEY(parent_filter) REFERENCES filters(_id) ON DELETE CASCADE
);
CREATE TABLE scores
(
_id INTEGER PRIMARY KEY
, NAME TEXT
, filter_id INTEGER
, rate INTEGER
, rate_type INTEGER,
FOREIGN KEY(filter_id) REFERENCES filters(_id) ON DELETE CASCADE
);
CREATE TABLE address_book
(
_id INTEGER PRIMARY KEY
, category_id INTEGER
, address TEXT
, NAME TEXT
, add_info_01 TEXT,
FOREIGN KEY(category_id) REFERENCES categories(_id) ON DELETE CASCADE
);
You are free to use this data as you like :) If you have any questions or would like to develop some other provider (and extend category list), please feel free to contact me.