Browse Source

add sp2019 worker

pull/7615/head
Hervé de CHAVIGNY 4 years ago
parent
commit
6c4bda24f6
  1. 3
      packages/worker/package.json
  2. 31
      packages/worker/src/api/controllers/global/sp2019.ts
  3. 5
      packages/worker/src/api/index.ts
  4. 27
      packages/worker/src/api/routes/global/sp2019.js
  5. 4
      packages/worker/src/api/routes/index.js
  6. 37
      packages/worker/src/utilities/sp2019.js

3
packages/worker/package.json

@ -66,6 +66,7 @@
"pino-pretty": "4.8.0",
"pouchdb": "7.3.0",
"pouchdb-all-dbs": "1.1.1",
"sp-jsom-node": "^4.0.0",
"server-destroy": "1.0.1"
},
"devDependencies": {
@ -104,4 +105,4 @@
]
},
"gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc"
}
}

31
packages/worker/src/api/controllers/global/sp2019.ts

@ -0,0 +1,31 @@
const {
getGlobalDB,
getTenantId,
isUserInAppTenant,
} = require("@budibase/backend-core/tenancy")
const { sp2019Lists } = require("../../../utilities/sp2019")
exports.sp2019Lists = async ctx => {
let {
siteUrl,
username,
password,
domain,
} = ctx.request.body
let user
/*if (userId) {
const db = getGlobalDB()
user = await db.get(userId)
}*/
const response = await sp2019Lists(siteUrl,
username,
password,
domain,
)
ctx.body = {
...response
}
}

5
packages/worker/src/api/index.ts

@ -55,6 +55,11 @@ const PUBLIC_ENDPOINTS = [
route: "/api/global/users/tenant/:id",
method: "GET",
},
// sharepoint 2019 connector
{
route: "/api/global/sp2019/lists",
method: "POST",
},
]
const NO_TENANCY_ENDPOINTS = [

27
packages/worker/src/api/routes/global/sp2019.js

@ -0,0 +1,27 @@
const Router = require("@koa/router")
const controller = require("../../controllers/global/sp2019")
const { joiValidator } = require("@budibase/backend-core/auth")
const { adminOnly } = require("@budibase/backend-core/auth")
const Joi = require("joi")
const router = Router()
function buildSP2019Validation() {
// prettier-ignore
return joiValidator.body(Joi.object({
siteUrl: Joi.string().allow("", null),
username: Joi.string().allow("", null),
password: Joi.string().allow("", null),
domain: Joi.string().allow("", null),
}).required().unknown(true))
}
router.post(
"/api/global/sp2019/lists",
buildSP2019Validation(),
adminOnly,
controller.sp2019Lists
)
module.exports = router

4
packages/worker/src/api/routes/index.js

@ -13,6 +13,8 @@ const selfRoutes = require("./global/self")
const licenseRoutes = require("./global/license")
const migrationRoutes = require("./system/migrations")
const accountRoutes = require("./system/accounts")
// sharepoint 2019
const sp2019Routes = require("./global/sp2019")
let userGroupRoutes = api.groups
exports.routes = [
@ -31,4 +33,6 @@ exports.routes = [
userGroupRoutes,
migrationRoutes,
accountRoutes,
// sharepoint 2019
sp2019Routes,
]

37
packages/worker/src/utilities/sp2019.js

@ -0,0 +1,37 @@
import { JsomNode } from "sp-jsom-node"
exports.sp2019Lists = async (siteUrl,username,password,domain) => {
console.log("Site url :",siteUrl)
console.log("username :",username)
console.log("password :",password)
console.log("domain :",domain)
const sp2019 = new JsomNode({
modules: ["taxonomy", "userprofiles"],
})
const ctx = sp2019
.init({
siteUrl: siteUrl,
authOptions: {
username: username,
password: password,
domain: domain
}
})
const spctx = await ctx.getContext()
const oListsCollection = spctx.get_web().get_lists()
spctx.load(oListsCollection, "Include(Title)")
await spctx.executeQueryPromise()
const arrList = []
const listsTitlesArr = oListsCollection.get_data().map(l => {
arrList.push({ Title:l.get_title() })
})
console.log("List test :", arrList)
console.log("List :", listsTitlesArr)
return arrList
}
Loading…
Cancel
Save