Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,11 @@ to get a new pair of tokens.
# basic commands:
fairpost: help
fairpost: @userid get-user
fairpost: @userid put-user << payload
fairpost: @userid edit-user (cli only)
fairpost: @userid get-feed
fairpost: @userid get-fields --model=user|feed|platform|source|post [--platform=xxx]
fairpost: @userid put-feed << payload
fairpost: @userid edit-feed (cli only)
fairpost: @userid get-platform --platform=xxx
fairpost: @userid put-platform --platform=xxx << payload
fairpost: @userid edit-platform --platform=xxx (cli only)
Expand All @@ -159,16 +162,21 @@ fairpost: @userid test-platforms [--platforms=xxx,xxx]
fairpost: @userid refresh-platform --platform=xxx
fairpost: @userid refresh-platforms [--platforms=xxx,xxx]
fairpost: @userid get-source --source=xxx [--stage=xxx]
fairpost: @userid put-source << payload
fairpost: @userid edit-source (cli only)
fairpost: @userid get-sources [--sources=xxx,xxx|--stage=xxx]
fairpost: @userid get-post --post=xxx:xxx
fairpost: @userid put-post << payload
fairpost: @userid edit-post (cli only)
fairpost: @userid get-posts [--status=xxx] [--sources=xxx,xxx|--stage=xxx] [--platforms=xxx,xxx]
fairpost: @userid prepare-post --post=xxx:xxx
fairpost: @userid schedule-post --post=xxx:xxx --date=xxxx-xx-xx
fairpost: @userid schedule-posts [--source=xxx] [--platforms=xxx,xxx|--platform=xxx] --date=xxxx-xx-xx
fairpost: @userid schedule-next-post --platform=xxx [--date=xxxx-xx-xx] [--sources=xxx,xxx|--stage]
fairpost: @userid schedule-next-post --platform=xxx [--date=xxxx-xx-xx] [--sources=xxx,xxx|--stage=xxx]
fairpost: @userid publish-post --post=xxx:xxx [--dry-run]
fairpost: @userid publish-posts [--source=xxx] [--platforms=xxx,xxx|--platform=xxx]
fairpost: @userid set-status [--post=xxx:xxx|--posts=xxx:xxx,xxx:xxx]
fairpost: @userid get-fields --model=user|feed|platform|source|post [--platform=xxx]

# feed planning:
fairpost: @userid prepare-posts [--sources=xxx,xxx|--source=xxx|--stage=xxx] [--platforms=xxx,xxx|--platform=xxx]
Expand Down
12 changes: 12 additions & 0 deletions src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,18 @@ switch (COMMAND) {
case "edit-platform":
console.info(await editPayload("get-platform", "put-platform"));
break;
case "edit-user":
console.info(await editPayload("get-user", "put-user"));
break;
case "edit-feed":
console.info(await editPayload("get-feed", "put-feed"));
break;
case "edit-source":
console.info(await editPayload("get-source", "put-source"));
break;
case "edit-post":
console.info(await editPayload("get-post", "put-post"));
break;
default:
console.info(await execute(COMMAND));
}
7 changes: 1 addition & 6 deletions src/mappers/UserMapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@ export default class UserMapper extends AbstractMapper<UserDto> {
type: "string",
label: "ID",
get: ["any"],
set: ["manageUsers"],
required: true,
set: ["none"], // todo - there should be a rename-user command instead
},
homedir: {
type: "string",
Expand Down Expand Up @@ -79,10 +78,6 @@ export default class UserMapper extends AbstractMapper<UserDto> {
for (const field in dto) {
if (fields.includes(field)) {
switch (field) {
case "id":
// todo - there should be a rename-user command instead
throw this.user.log.error("Cannot set ID: unimplemented");
break;
case "loglevel":
this.user.data.set(
"settings",
Expand Down
180 changes: 118 additions & 62 deletions src/services/Fairpost.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,36 +163,6 @@ class Fairpost {
break;
}

/*case "get-settings": {
if (!permissions.manageAccount) {
throw new Error("Missing permissions for command " + command);
}
if (!user) {
throw new Error("user is required for command " + command);
}
output = user.getSettings();
break;
}

case "put-settings": {
if (!permissions.manageAccount) {
throw new Error("Missing permissions for command " + command);
}
if (!user) {
throw new Error("user is required for command " + command);
}
if (!args.payload) {
throw user.log.error(
"CommandHandler " + command,
"Missing argument: payload",
);
}
await user.putSettings(args.payload as { [key: string]: string });
output = { success: true };
break;
}
*/

case "get-fields": {
if (!permissions.manageAccount) {
throw new Error("Missing permissions for command " + command);
Expand Down Expand Up @@ -244,9 +214,31 @@ class Fairpost {
case "get-user": {
if (!user) {
throw new Error("Missing user for command " + command);
} else {
output = await user.mapper.getDto(operator);
}
output = await user.mapper.getDto(operator);
break;
}

case "put-user": {
if (!user) {
throw new Error("user is required for command " + command);
}
if (!args.payload) {
throw user.log.error(
"CommandHandler " + command,
"Missing payload",
);
}
if (
Buffer.isBuffer(args.payload || typeof args.payload === "string")
) {
throw user.log.error(
"CommandHandler " + command,
"Payload must be an object",
);
}
await user.mapper.putDto(operator, args.payload as UserDto);
output = await user.mapper.getDto(operator);
break;
}

Expand All @@ -262,51 +254,32 @@ class Fairpost {
break;
}

/*case "add-platform": {
case "put-feed": {
if (!permissions.manageFeed) {
throw new Error("Missing permissions for command " + command);
}
if (!user) {
throw new Error("user is required for command " + command);
}
if (!args.platform) {
if (!args.payload) {
throw user.log.error(
"CommandHandler " + command,
"Missing argument: platform",
"Missing payload",
);
}
await user.addPlatform(args.platform);
output = {
[args.platform]: {
success: true,
message: "Proceed to setup.",
},
};
break;
}

case "remove-platform": {
if (!permissions.manageFeed) {
throw new Error("Missing permissions for command " + command);
}
if (!user) {
throw new Error("user is required for command " + command);
}
if (!args.platform) {
if (
Buffer.isBuffer(args.payload || typeof args.payload === "string")
) {
throw user.log.error(
"CommandHandler " + command,
"Missing argument: platform",
"Payload must be an object",
);
}
await user.removePlatform(args.platform);
output = {
[args.platform]: {
success: true,
},
};
const feed = user.getFeed();
await feed.mapper.putDto(operator, args.payload as FeedDto);
output = await feed.mapper.getDto(operator);
break;
}
*/

case "setup-platform": {
if (!permissions.manageFeed) {
Expand Down Expand Up @@ -527,6 +500,39 @@ class Fairpost {
output = await source.mapper.getDto(operator);
break;
}
case "put-source": {
if (!permissions.manageSources) {
throw new Error("Missing permissions for command " + command);
}
if (!user) {
throw new Error("user is required for command " + command);
}
if (!args.payload) {
throw user.log.error(
"CommandHandler " + command,
"Missing payload",
);
}
if (!args.source) {
throw user.log.error(
"CommandHandler " + command,
"Missing argument: source",
);
}
if (
Buffer.isBuffer(args.payload || typeof args.payload === "string")
) {
throw user.log.error(
"CommandHandler " + command,
"Payload must be an object",
);
}
const feed = user.getFeed();
const source = await feed.getSource(args.source, args.stage);
await source.mapper.putDto(operator, args.payload as SourceDto);
output = await source.mapper.getDto(operator);
break;
}
case "get-sources": {
if (!permissions.manageSources) {
throw new Error("Missing permissions for command " + command);
Expand Down Expand Up @@ -568,6 +574,48 @@ class Fairpost {
output = await post.mapper.getDto(operator);
break;
}
case "put-post": {
if (!permissions.managePosts) {
throw new Error("Missing permissions for command " + command);
}
if (!user) {
throw new Error("user is required for command " + command);
}
if (!args.payload) {
throw user.log.error(
"CommandHandler " + command,
"Missing payload",
);
}
if (!args.source) {
throw user.log.error(
"CommandHandler " + command,
"Missing argument: source",
);
}
if (!args.platform) {
throw user.log.error(
"CommandHandler " + command,
"Missing argument: platform",
);
}

if (
Buffer.isBuffer(args.payload || typeof args.payload === "string")
) {
throw user.log.error(
"CommandHandler " + command,
"Payload must be an object",
);
}
const feed = user.getFeed();
const platform = user.getPlatform(args.platform);
const source = await feed.getSource(args.source);
const post = await platform.getPost(source);
await post.mapper.putDto(operator, args.payload as PostDto);
output = await post.mapper.getDto(operator);
break;
}
case "get-posts": {
if (!permissions.readPosts) {
throw new Error("Missing permissions for command " + command);
Expand Down Expand Up @@ -1004,8 +1052,11 @@ class Fairpost {
"# basic commands:",
`${cmd} help`,
`${cmd} @userid get-user`,
`${cmd} @userid put-user << payload`,
`${cmd} @userid edit-user (cli only)`,
`${cmd} @userid get-feed`,
`${cmd} @userid get-fields --model=user|feed|platform|source|post [--platform=xxx]`,
`${cmd} @userid put-feed << payload`,
`${cmd} @userid edit-feed (cli only)`,
`${cmd} @userid get-platform --platform=xxx`,
`${cmd} @userid put-platform --platform=xxx << payload`,
`${cmd} @userid edit-platform --platform=xxx (cli only)`,
Expand All @@ -1016,8 +1067,12 @@ class Fairpost {
`${cmd} @userid refresh-platform --platform=xxx`,
`${cmd} @userid refresh-platforms [--platforms=xxx,xxx]`,
`${cmd} @userid get-source --source=xxx [--stage=xxx] `,
`${cmd} @userid put-source << payload`,
`${cmd} @userid edit-source (cli only)`,
`${cmd} @userid get-sources [--sources=xxx,xxx|--stage=xxx]`,
`${cmd} @userid get-post --post=xxx:xxx`,
`${cmd} @userid put-post << payload`,
`${cmd} @userid edit-post (cli only)`,
`${cmd} @userid get-posts [--status=xxx] [--sources=xxx,xxx|--stage=xxx] [--platforms=xxx,xxx] `,
`${cmd} @userid prepare-post --post=xxx:xxx`,
`${cmd} @userid schedule-post --post=xxx:xxx --date=xxxx-xx-xx `,
Expand All @@ -1026,6 +1081,7 @@ class Fairpost {
`${cmd} @userid publish-post --post=xxx:xxx [--dry-run]`,
`${cmd} @userid publish-posts [--source=xxx] [--platforms=xxx,xxx|--platform=xxx]`,
`${cmd} @userid set-status [--post=xxx:xxx|--posts=xxx:xxx,xxx:xxx]`,
`${cmd} @userid get-fields --model=user|feed|platform|source|post [--platform=xxx]`,
"\n# feed planning:",
`${cmd} @userid prepare-posts [--sources=xxx,xxx|--source=xxx|--stage=xxx] [--platforms=xxx,xxx|--platform=xxx]`,
`${cmd} @userid schedule-next-posts [--date=xxxx-xx-xx] [--sources=xxx,xxx|--stage] [--platforms=xxx,xxx] `,
Expand Down