kentico-cloud-delivery
Version:
Official Kentico Cloud Delivery SDK
189 lines (150 loc) • 6.17 kB
Markdown
//badge.fury.io/js/kentico-cloud-delivery.svg)](https://www.npmjs.com/package/kentico-cloud-delivery)
[](https://travis-ci.org/Enngage/kentico-cloud-js)
[](https://www.npmjs.com/package/kentico-cloud-delivery)
[](https://forums.kenticocloud.com)
[](https://coveralls.io/github/Enngage/kentico-cloud-js?branch=master)
[](https://snyk.io/test/github/enngage/kentico-cloud-js)
[](https://github.com/Enngage/kentico-cloud-js)
[](https://github.com/igrigorik/ga-beacon)
A client library for retrieving content from [Kentico Cloud](https://kenticocloud.com/) for both `Node` and `browsers`. Library supports `ES2015` and is fully written in `TypeScript`.
```
npm i rxjs --save
npm i kentico-cloud-delivery --save
```
```
https://unpkg.com/kentico-cloud-delivery@latest/_bundles/kentico-cloud-delivery-sdk.browser.umd.min.js
```
```
https://unpkg.com/kentico-cloud-delivery@latest/_bundles/kentico-cloud-delivery-sdk.umd.min.js
```
```typescript
import {
ContentItem,
Fields,
TypeResolver,
DeliveryClient
} from 'kentico-cloud-delivery';
/**
* This is optional, but it is considered a best practice to define your models
* so you can leverage intellisense and so that you can extend your models with
* additional properties / methods.
*/
export class Movie extends ContentItem {
public title: Fields.TextField;
}
const deliveryClient = new DeliveryClient({
projectId: 'xxx',
typeResolvers: [
new TypeResolver('movie', () => new Movie()),
]
});
/** Getting items from Kentico Cloud as Promise */
deliveryClient.items<Movie>()
.type('movie')
.getPromise()
.then(response => {
const movieText = response.items[0].title.text;
)
});
/** Getting items from Kentico Cloud as Observable */
deliveryClient.items<Movie>()
.type('movie')
.getObservable()
.subscribe(response => {
const movieText = response.items[0].title.text;
)
});
/**
* Get data without having custom models
*/
deliveryClient.items<ContentItem>()
.type('movie')
.get()
.subscribe(response => {
// you can access properties same way as with strongly typed models, but note
// that you don't get any intellisense and the underlying object
// instance is of 'ContentItem' type
console.log(response.items[0].title.text);
});
```
```javascript
const KenticoCloud = require('kentico-cloud-delivery');
class Movie extends KenticoCloud.ContentItem {
constructor() {
super();
}
}
const deliveryClient = new KenticoCloud.DeliveryClient({
projectId: 'xxx',
typeResolvers: [
new KenticoCloud.TypeResolver('movie', () => new Movie()),
]
});
/** Getting items from Kentico Cloud as Promise */
deliveryClient.items()
.type('movie')
.getPromise()
.then(response => {
const movieText = response.items[0].title.text;
)
});
/** Getting items from Kentico Cloud as Observable */
deliveryClient.items()
.type('movie')
.getObservable()
.subscribe(response => {
const movieText = response.items[0].title.text;
)
});
/**
* Fetch all items of 'movie' type and given parameters from Kentico Cloud.
* Important note: SDK will convert items to your type if you registered it. For example,
* in this case the objects will be of 'Movie' type we defined above.
* If you don't use custom models, 'ContentItem' object instances will be returned.
*/
deliveryClient.items()
.type('movie')
.getObservable()
.subscribe(response => console.log(response));
```
```html
<!DOCTYPE html>
<html>
<head>
<title>Kentico Cloud SDK - Html sample</title>
<script type="text/javascript" src="https://unpkg.com/kentico-cloud-delivery@latest/_bundles/kentico-cloud-delivery-sdk.browser.umd.min.js"></script>
</head>
<body>
<script type="text/javascript">
var deliveryClient = new DeliveryClient({
projectId: 'da5abe9f-fdad-4168-97cd-b3464be2ccb9'
});
deliveryClient.items()
.type('movie')
.getPromise()
.then(response => console.log(response));
</script>
<h1>See console</h1>
</body>
</html>
```
Both browser & node.js are supported by this library. However, due to some differences (especially around parsing HTML) library uses `parse5` to parse HTML in node.js environment and DOM in browsers. Since `parse5` is relatively bulky library, we are shipping a browser only UMD package without this dependency to keep the library size to a minimum.
## Testing
Note: You need to have `Firefox` installed in order to run tests via Karma.
- `npm run test:browser` Runs tests in Firefox
- `npm run test:node` Runs tests in node.js
- `npm run test:dev` Runs developer tests (useful for testing functionality)
- `npm run test:travis` Runs browser tests that are executed by travis
## Feedback & Contribution
Feedback & Contributions are welcomed. Feel free to take/start an issue & submit PR.
[![npm version](https: