Content Record Library
Description
The content record library is a library for skapp developers, allowing them to
record the interactions of their users with pieces of content within the skapp
that they are building. The main purpose of this tool is content discovery; if
all skapps were to make use of this library, the end result would be a scrapable
global record of all content and the popularity of that content and the skapp.
This information will eventually get displayed in a type of leaderboard that
ranks top pieces of content and top skapps.
Interface
The library itself is a simple class that acts as a wrapper around the Content
Record DAC. This DAC, or Data Access Controller, is built and hosted by
Skynetlabs. The library will contain a hardcoded reference to its domain, thus
abstracting all of its complexities from the skapp developer.
The skapp developer is expected to call upon the content record when its user
perform the following two types of actions. This is when a user
creates
contentinteracts
with a piece of content
The content record library exports the following types, allowing the skapp
developer to record new entries in the content record. Note that the content
info has a metadata field, the skapp developer can add whatever metadata he
would like to add here. In the case of an interaction with a piece of content,
the metadata could give more information about the type of interaction for
instance, e.g. "liked", "commented", etc...
export interface IContentRecordDAC {
recordNewContent(...content: IContentInfo[]): Promise<IDACResponse>;
recordInteraction(...content: IContentInfo[]): Promise<IDACResponse>;
}
export interface IContentInfo {
skylink: string;
metadata: object;
}
export interface IDACResponse {
submitted: boolean;
error?: string;
}
Usage
Using the library is very straightforward. In this section we'll show an example
of how a skapp could use the content record library and record user interactions.
import { SkynetClient } from "skynet-js";
import { ContentRecordDAC } from "skynet-content-record-library";
(async () => {
const client = new SkynetClient();
const contentRecord = new ContentRecordDAC();
const mySky = await client.loadMySky("exampleskapp.hns");
await mySky.loadDacs(contentRecord);
const isLoggedIn = await mySky.checkLogin();
if (!isLoggedIn) {
}
})();
Metadata
The metadata submitted to the content record can be used for a lot of purposes,
there are other DACs that make use of this metadata already, and which supply a
link
field in the metadata under the content
property.
This link
field is described in the skystandards, and should contain a URI
from which the content can be retrieved. E.g. if you are submitting a record to
the content record DAC that describes the creation of an image at certain
skylink _AT2YIzNUnzFH4QV-MMa_CuIJBTTypcbnv2_irbjYUMNxQ
, then a good submission
would be:
await contentRecord.recordNewContent({
skylink: '_AT2YIzNUnzFH4QV-MMa_CuIJBTTypcbnv2_irbjYUMNxQ',
metadata: {
content: { link: "https://siasky.net/_AT2YIzNUnzFH4QV-MMa_CuIJBTTypcbnv2_irbjYUMNxQ" },
description: "beautiful wallpaper"
}
});