Indiekit.addSyndicator
A syndicator shares content to a third-party service such as a social network, typically via its API.
Syntax
new Indiekit.addSyndicator(options);Constructor
options- An object used to customise the behaviour of the plug-in.
Properties
infoAn object representing information about the third-party service. Required.
The
infoproperty should return the following values:nameA string representing the name of the third-party service the plug-in supports. Required.
uidA string representing the URL to third-party service. Required.
checkedA boolean indicating whether this syndicator should be enabled by default in Micropub clients.
errorInformation about any configuration errors. This will be shown in Indiekit’s interface.
serviceAn object containing information about the third-party service.
name- A string representing the name of the third-party service.
url- A string representing the URL of the third-party service.
photo- A string providing a URL to an icon, logo or photo used to identify the third-party service in Micropub clients.
userAn object containing information about the user account on the third-party service.
name- A string representing the name of the user account.
url- A string representing the URL for the user account.
Methods
syndicate()
An async function used to syndicate posts to the third-party service.
init()
Used to register the plug-in. Accepts an Indiekit instance to allow its modification before returning.
Parameters
properties- An object containing properties for a post. These conform to the JF2 Post Serialisation Format. Required
publication- An object containing the publication’s configuration. Required
Return value
A string representing the URL for the syndicated content if successful, else IndiekitError.
Example
import { IndiekitError } from "@indiekit/error";
import exampleClient from 'example-client';
export default class ExampleStore {
constructor(options) {
this.name = "Example syndicator";
this.options = options;
}
get info() {
const { user } = this.options;
return {
name: `${user} on Example service`,
uid: `https://service.example/${user}`,
checked: true,
service: {
name: "Example service",
url: "https://service.example/",
photo: "/assets/example-syndicator/icon.svg",
},
user: {
name: user,
url: `https://service.example/${user}`,
},
};
}
async syndicate(properties, publication) {
try {
return await exampleClient.post(properties, publication);
} catch (error) {
throw new IndiekitError(error.message, {
cause: error,
plugin: this.name,
status: error.status,
});
}
}
init(Indiekit) {
Indiekit.addSyndicator(this);
}
}Add target information
Indiekit’s web interface expects a syndicator plug-in to provide some information about the third-party service it supports. In addition, some Micropub clients may also use this information in their publishing interface. This information is provided by the info property:
get info() {
const { user } = this.options;
return {
name: `${user} on Example service`,
uid: `https://service.example/${user}`,
checked: true,
service: {
name: "Example service",
url: "https://service.example/",
photo: "/assets/example-syndicator/icon.svg",
},
user: {
name: user,
url: `https://service.example/${user}`,
},
};
}See also
Example syndicator plug-ins:
@indiekit/syndicator-internet-archivesaves content to the Internet Archive.