Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
ibm-connections-wikis
Advanced tools
an implementation for the IBM Connections Wiki API
$ npm install --save ibm-connections-wikis-service
After you require wiki service, you may easily setup the default properties.
const IbmConnectionsWikisService = require('ibm-connections-wikis-service');
const defaults = {
headers: {
Authorization: 'Basic 12345', // or any other auth method
},
};
Beside default authorization, this service supports oniyi-http-plugin-credentials
and oniyi-http-plugin-format-url-template
.
Credentials plugin is used only if plugins.credentials
is provided.
Format-url-template is used by default, and it is recommended to use it in combination with credentials plugin.
For more details about plugins usage, please visit:
oniyi-http-plugin-format-url-template
const plugins = {
credentials: {
providerName: 'customProvider',
userRelationProp: 'credentials',
},
formatUrlTemplate: {
valuesMap: {
authType: {
basic: 'customAuthType',
}
},
applyToQueryString: true,
}
};
const serviceOptions = {
defaults,
plugins,
baseUrl: 'https://fake.base.url.com',
};
const service = new IbmConnectionsWikisService(serviceOptions.baseUrl, serviceOptions);
If not, please provide you own authorization type directly into options
object as explained in service.navigationFeed
usage below.
Once service instance is created, you are able to use next methods:
1. service.navigationFeed
2. service.wikiPage
3. service.pageVersionDetails
4. service.pageComments
5. service.pageVersions
6. service.mediaContent
Every method comes with three arguments, query
, options
and callback
.
query
- valid query parameters for each method can be found in the source code: /lib/methods/*
options
- additional options merged into default http request params
In order to retrieve wiki navigation tree, it is necessary to provide wikiLabel
through query
object.
const query = {
wikiLabel: '444a24f4-28a2-45a4-b21a-a55120f1ca72',
};
const options = {
authType: 'oauth',
};
service.navigationFeed(query, options, (err, response) => {
const { navigationFeed } = response;
// use navigationFeed object to retrieve data about wiki navigation tree
});
If you require wiki page, simply provide wikiLabel
and pageLabel
to query
object.
const query = {
wikiLabel: '444a24f4-28a2-45a4-b21a-a55120f1ca72',
pageLabel: '123a24f4-48a2-45a4-551a-a5fferq1ca66',
};
service.wikiPage(query, {/* request options param */}, (err, response) => {
const { wikiPage } = response;
// use wikiPage object to extract metadata about title, updated time, content, author, modifier etc.
});
Page version belongs to a wiki page. Every page have one initial version, and could have many more.
Provide query
with wikiLabel
, pageLabel
and versionLabel
in order to get info about certain version.
const query = {
wikiLabel: '444a24f4-28a2-45a4-b21a-a55120f1ca72',
pageLabel: '123a24f4-48a2-45a4-551a-a5fferq1ca66',
versionLabel: '3214a24f4-48a2-45a4-b21a-b5f4433ckl2',
};
service.pageVersionDetails(query, {/* request options param */}, (err, response) => {
const { pageVersionDetails } = response;
// use pageVersionDetails object to extract metadata about this particular version
});
Mapping between this service and an actual IBM Connections Wiki API:
/api/wiki/{wikiId}/page/{pageId}/version/{versionId}/entry
wikiId = wikiLabel
pageId = pageLabel
versionId = versionLabel
This is an API that returns feed of comments that belong to a wiki page.
const query = {
wikiLabel: '444a24f4-28a2-45a4-b21a-a55120f1ca72',
pageLabel: '123a24f4-48a2-45a4-551a-a5fferq1ca66',
};
service.pageArtifacts(query, {/* request options param */}, (err, response) => {
const { pageComments } = response;
// use pageComments Array get content and metadata of all comments for provided wikiLabel and pageLabel
});
This is an API that returns feed of versions that belong to a wiki page.
const query = {
wikiLabel: '444a24f4-28a2-45a4-b21a-a55120f1ca72',
pageLabel: '123a24f4-48a2-45a4-551a-a5fferq1ca66',
};
service.pageVersions(query, {/* request options param */}, (err, response) => {
const { pageVersions } = response;
// use pageVersions Array get content and metadata of all versions with provided wikiLabel and pageLabel
});
In order to retrieve media content from a wiki page, or wiki version page, it is necessary to follow these steps:
content.src
from the response objectmediaAuthType
, which can be configurable by using format-url-template plugincontent
and mediaAuthType
through options
param: const query = {
wikiLabel: '2feb2356-ab0f-458d-8a27-334363d9d192',
pageLabel: '0f8ee02f-0bcb-435a-859c-857845cd9d78',
};
service.wikiPage(query, {/* request options param */}, (err, response) => {
/* Handle error here */
const content = response.wikiPage.content.src;
service.mediaContent(query, { content, mediaAuthType: 'oauth' }, (error, mediaData) => {
// use mediaData here
});
});
Since mediaContent
might require different authentication while making a request,this way we are making sure that
only mediaContent
request is affected by any mediaAuthType
mapping.
If, however, we used regular authType
template mechanism, this would lead to mapping all uris that support authType
template
in order to change only one single request (assuming that mediaContent
requires different authentication from any other service method).
For the best performance and readability, it is recommended to use async
module if creating connected API calls.
const async = require('async');
// ... setup service instance
async.waterfall([
(done) => service.wikiPage({/* query param */}, {/* request options param */}, done),
(response, done) => {
/* parse response here */
service.mediaContent({/* query param */}, {/* request options param */}, done);
},
//...
(err, result) => {/* parse result */ }
]);
UNLICENSED © GIS AG
FAQs
An implementation of the IBM Connections Wikis API
We found that ibm-connections-wikis demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.