dev-api: add developer portal, OpenAPI spec, and Flatenbadet case study
- New /developers/ page with API docs, SDKs, pricing, use cases - OpenAPI 3.0 spec for Orders, Missions, Photos, Analytics - Case study: Glasskiosken i Flatenbadet — complete ROI analysis - Updated /order/ with recurring missions and frequency dropdown
This commit is contained in:
+61
@@ -0,0 +1,61 @@
|
||||
'use strict'
|
||||
|
||||
const MAX_TIMEOUT = 1000
|
||||
|
||||
function wait (state, index, expected, timeout, done) {
|
||||
const max = Date.now() + timeout
|
||||
let current = Atomics.load(state, index)
|
||||
if (current === expected) {
|
||||
done(null, 'ok')
|
||||
return
|
||||
}
|
||||
let prior = current
|
||||
const check = (backoff) => {
|
||||
if (Date.now() > max) {
|
||||
done(null, 'timed-out')
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
prior = current
|
||||
current = Atomics.load(state, index)
|
||||
if (current === prior) {
|
||||
check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)
|
||||
} else {
|
||||
if (current === expected) done(null, 'ok')
|
||||
else done(null, 'not-equal')
|
||||
}
|
||||
}, backoff)
|
||||
}
|
||||
}
|
||||
check(1)
|
||||
}
|
||||
|
||||
// let waitDiffCount = 0
|
||||
function waitDiff (state, index, expected, timeout, done) {
|
||||
// const id = waitDiffCount++
|
||||
// process._rawDebug(`>>> waitDiff ${id}`)
|
||||
const max = Date.now() + timeout
|
||||
let current = Atomics.load(state, index)
|
||||
if (current !== expected) {
|
||||
done(null, 'ok')
|
||||
return
|
||||
}
|
||||
const check = (backoff) => {
|
||||
// process._rawDebug(`${id} ${index} current ${current} expected ${expected}`)
|
||||
// process._rawDebug('' + backoff)
|
||||
if (Date.now() > max) {
|
||||
done(null, 'timed-out')
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
current = Atomics.load(state, index)
|
||||
if (current !== expected) {
|
||||
done(null, 'ok')
|
||||
} else {
|
||||
check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)
|
||||
}
|
||||
}, backoff)
|
||||
}
|
||||
}
|
||||
check(1)
|
||||
}
|
||||
|
||||
module.exports = { wait, waitDiff }
|
||||
Reference in New Issue
Block a user