Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
rsjones committed Dec 3, 2021
0 parents commit 1a61081
Show file tree
Hide file tree
Showing 12 changed files with 32,539 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
119 changes: 119 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# Koop Provider for ArcGIS Knowledge Server

This is a [Koop](http://koopjs.github.io) [provider](https://koopjs.github.io/docs/available-plugins/providers) that transforms [ArcGIS Knowledge Server](https://enterprise.arcgis.com/en/knowledge/latest/introduction/get-started-with-arcgis-knowledge.htm) graph entity data into [GeoJSON](https://geojson.org/) Feature Collections by entity type. Common usage would be to use the Koop [Geoservices](https://koopjs.github.io/docs/available-plugins/outputs) output plugin to reflect the entity GeoJSON Feature Collections as an [ArcGIS Server Feature Service](https://developers.arcgis.com/rest/services-reference/enterprise/feature-service.htm) with layers (contains geometry) and tables.

## Requirements

To support ArcGIS Enterprise authentication token pass through, the following Koop Output plugins are required

* [Koop Geoservices Output Plugin](https://github.com/koopjs/koop-output-geoservices) v3.1.0+
* [Koop FeatureServer Output Plugin](https://github.com/koopjs/FeatureServer) v3.2.0+

## Install using Koop CLI

1. Install the [Koop CLI](https://koopjs.github.io/docs/basics/quickstart)
1. Create an application
```
koop new app demo-app
cd demo-app
```
1. Add the Koop Provider for ArcGIS Knowledge Server
```
koop add provider koop-provider-knowledge
```
1. [Configure the Provider](#Configure-the-Provider) in the Koop Config
1. Start Koop
```
koop serve
```

## Use in a Koop Application

1. Install the provider
```
npm install koop-provider-knowledge
```
1. Add Provider to the application
```js
const knowledgeProvider = require('koop-provider-knowledge')
koop.register(knowledgeProvider)
```

## Configure the Provider

### AuthInfo for ArcGIS Enterprise Security Configuration
Adding an authInfo object to the koop config will allow a token service url to be specified so that clients can directly get a token from ArcGIS Enterprise. This is the recommended configuration to use the ArcGIS Knowledge Koop Provider. This is a feature of the [Koop Geoservices Output Plugin](https://github.com/koopjs/koop-output-geoservices) v3.1.0+
```json
{
"authInfo":{
"isTokenBasedSecurity" : true,
"tokenServicesUrl" : "<token url>"
}
}
```
Example
```json
{
"port": 8080,
"authInfo":{
"isTokenBasedSecurity" : true,
"tokenServicesUrl" : "https://myserver.domain.com/portal/sharing/rest/generateToken"
},
"provider-knowledge":{
...
}
}
```

### Configure Services for Knowledge Provider
Named ArcGIS Knowledge Services are added to the koop configuration, while not recommended a token can be specified. This token will need to be a long lived token and updated by an administrator.
```json
{
"provider-knowledge": {
"sources": {
"<key>": {
"url": "<url>",
"token": "<token>" // not recommended
}
}
}
}
```
Examples with and without token
```json
{
"port": 8080,
"authInfo":{
...
},
"provider-knowledge": {
"sources": {
"MyKnowledgeService": {
"url": "https://myserver.domain.com/server/rest/services/Hosted/MyKnowledgeService/KnowledgeGraphServer"
},
"MyKnowledgeServiceWithToken": {
"url": "https://myserver.domain.com/server/rest/services/Hosted/MyKnowledgeService/KnowledgeGraphServer",
"token": "<Token Generated from ArcGIS Enterprise>"
}
}
}
}
```

The following is a sample configuration file showing most capabilities in the recommended configuration, if using the Koop CLI look under config/default.json
```json
{
"port": 8080,
"authInfo":{
"isTokenBasedSecurity" : true,
"tokenServicesUrl" : "https://myserver.domain.com/portal/sharing/rest/generateToken"
},
"provider-knowledge": {
"sources": {
"MyKnowledgeService": {
"url": "https://myserver.domain.com/server/rest/services/Hosted/MyKnowledgeService/KnowledgeGraphServer"
}
}
}
}
```
3 changes: 3 additions & 0 deletions koop.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"type": "provider"
}
Loading

0 comments on commit 1a61081

Please sign in to comment.