Last active
August 19, 2023 05:28
-
-
Save NeilHanlon/7f86ac9607d3fe77afc37d49db8777cd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
async function qualification(component: Input): Promise<Output> { | |
const url = component.domain?.url; | |
const token = component.domain?.token; | |
if (!(url && token)) { | |
return { | |
result: 'failure', | |
message: 'url and token are required' | |
} | |
} | |
const res = await fetch(`${url}/api`, { | |
method: 'GET', | |
headers: { | |
authorization: `Token ${token}` | |
} | |
}); | |
const data = await res.json(); | |
if (typeof data !== 'object') { | |
// This is a generic catch all, as a valid response should be a json object | |
return { | |
result: 'failure', | |
message: "something went wrong with the request" | |
}; | |
} | |
const keys = Object.keys(data); | |
if (data.hasOwnProperty('details')) { | |
// an error will return the reason the request failed in the details field, e.g. | |
// {"detail":"Invalid token"} | |
return { | |
result: 'failure', | |
message:data.details; | |
}; | |
} | |
console.log(data); | |
return { | |
result: 'success', | |
message: 'Component qualified' | |
}; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function createAsset() { | |
// Inputs | |
const url = new SocketDefinitionBuilder() | |
.setName("Url") | |
.setArity("one") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("inputSocket") | |
.setSocketName("Url") | |
.build()) | |
.build(); | |
const token = new SocketDefinitionBuilder() | |
.setName("Token") | |
.setArity("one") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("inputSocket") | |
.setSocketName("Token") | |
.build()) | |
.build(); | |
const locationInputSocket = new SocketDefinitionBuilder() | |
.setName("Location") | |
.setArity("one") | |
.build(); | |
// Outputs | |
const locationOutputSocket = new SocketDefinitionBuilder() | |
.setName("Location") | |
.setArity("many") | |
.setValueFrom( new ValueFromBuilder() | |
.setKind("prop") | |
.setPropPath(["root", "domain", "name"]) | |
.build()) | |
.build(); | |
// Props | |
const site = new SocketDefinitionBuilder() | |
.setName("Site") | |
.setArity("one") | |
.build(); | |
const name = new PropBuilder() | |
.setName("name") | |
.setKind("string") | |
.build(); | |
const slug = new PropBuilder() | |
.setName("slug") | |
.setKind("string") | |
.build(); | |
const validStatusOptions = ["Planned", "Staging", "Active", "Decomissioning", "Retired"] | |
const statusOptionWidget = new PropWidgetDefinitionBuilder() | |
.setKind("comboBox"); | |
validStatusOptions.forEach(option => { | |
statusOptionWidget.addOption(option, option) | |
}) | |
const status = new PropBuilder() | |
.setName("status") | |
.setKind("string") | |
.setWidget(statusOptionWidget.build()) | |
.build(); | |
const setNameProp = new SiPropValueFromDefinitionBuilder() | |
.setKind("name") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("prop") | |
.setPropPath(["root", "domain", "name"]) | |
.build()) | |
.build(); | |
return new AssetBuilder() | |
.addProp(name) | |
.addProp(slug) | |
.addProp(status) | |
.addInputSocket(token) | |
.addInputSocket(url) | |
.addOutputSocket(locationOutputSocket) | |
.addInputSocket(locationInputSocket) | |
.addInputSocket(site) | |
.addSiPropValueFrom(setNameProp) | |
.build() | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function createAsset() { | |
const url = new PropBuilder() | |
.setName("url") | |
.setKind("string") | |
.build(); | |
const token = new PropBuilder() | |
.setName("token") | |
.setKind("string") | |
.build(); | |
const urlOutputSoket = new SocketDefinitionBuilder() | |
.setName("Url") | |
.setArity("many") | |
.setValueFrom( new ValueFromBuilder() | |
.setKind("prop") | |
.setPropPath(["root", "domain", "url"]) | |
.build()) | |
.build(); | |
const tokenOutputSoket = new SocketDefinitionBuilder() | |
.setName("Token") | |
.setArity("many") | |
.setValueFrom( new ValueFromBuilder() | |
.setKind("prop") | |
.setPropPath(["root", "domain", "token"]) | |
.build()) | |
.build(); | |
const setNameProp = new SiPropValueFromDefinitionBuilder() | |
.setKind("name") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("prop") | |
.setPropPath(["root", "domain", "url"]) | |
.build()) | |
.build(); | |
return new AssetBuilder() | |
.addProp(url) | |
.addProp(token) | |
.addOutputSocket(tokenOutputSoket) | |
.addOutputSocket(urlOutputSoket) | |
.addSiPropValueFrom(urlPropFunc) | |
.addSiPropValueFrom(tokenPropFunc) | |
.build() | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function createAsset() { | |
// Inputs | |
const url = new SocketDefinitionBuilder() | |
.setName("Url") | |
.setArity("one") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("inputSocket") | |
.setSocketName("Url") | |
.build()) | |
.build(); | |
const token = new SocketDefinitionBuilder() | |
.setName("Token") | |
.setArity("one") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("inputSocket") | |
.setSocketName("Token") | |
.build()) | |
.build(); | |
const regionInputSocket = new SocketDefinitionBuilder() | |
.setName("Region") | |
.setArity("one") | |
.build(); | |
// Outputs | |
const regionOutputSocket = new SocketDefinitionBuilder() | |
.setName("Region") | |
.setArity("many") | |
.setValueFrom( new ValueFromBuilder() | |
.setKind("prop") | |
.setPropPath(["root", "domain", "name"]) | |
.build()) | |
.build(); | |
// Props | |
const name = new PropBuilder() | |
.setName("name") | |
.setKind("string") | |
.build(); | |
const slug = new PropBuilder() | |
.setName("slug") | |
.setKind("string") | |
.build(); | |
const setNameProp = new SiPropValueFromDefinitionBuilder() | |
.setKind("name") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("prop") | |
.setPropPath(["root", "domain", "name"]) | |
.build()) | |
.build(); | |
return new AssetBuilder() | |
.addProp(name) | |
.addProp(slug) | |
.addInputSocket(token) | |
.addInputSocket(url) | |
.addOutputSocket(regionOutputSocket) | |
.addInputSocket(regionInputSocket) | |
.addSiPropValueFrom(setNameProp) | |
.build() | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function createAsset() { | |
// Inputs | |
const url = new SocketDefinitionBuilder() | |
.setName("Url") | |
.setArity("one") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("inputSocket") | |
.setSocketName("Url") | |
.build()) | |
.build(); | |
const token = new SocketDefinitionBuilder() | |
.setName("Token") | |
.setArity("one") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("inputSocket") | |
.setSocketName("Token") | |
.build()) | |
.build(); | |
const region = new SocketDefinitionBuilder() | |
.setName("Token") | |
.setArity("one") | |
.build(); | |
// Outputs | |
const site = new SocketDefinitionBuilder() | |
.setName("Site") | |
.setArity("many") | |
.setValueFrom( new ValueFromBuilder() | |
.setKind("prop") | |
.setPropPath(["root", "domain", "name"]) | |
.build()) | |
.build(); | |
// Props | |
const name = new PropBuilder() | |
.setName("name") | |
.setKind("string") | |
.build(); | |
const slug = new PropBuilder() | |
.setName("slug") | |
.setKind("string") | |
.build(); | |
const validStatusOptions = ["Planned", "Staging", "Active", "Decomissioning", "Retired"] | |
const statusOptionWidget = new PropWidgetDefinitionBuilder() | |
.setKind("comboBox"); | |
validStatusOptions.forEach(option => { | |
statusOptionWidget.addOption(option, option) | |
}) | |
const status = new PropBuilder() | |
.setName("status") | |
.setKind("string") | |
.setWidget(statusOptionWidget.build()) | |
.build(); | |
// Dynamic Props | |
const setNameProp = new SiPropValueFromDefinitionBuilder() | |
.setKind("name") | |
.setValueFrom(new ValueFromBuilder() | |
.setKind("prop") | |
.setPropPath(["root", "domain", "name"]) | |
.build()) | |
.build(); | |
return new AssetBuilder() | |
.addProp(name) | |
.addProp(slug) | |
.addProp(status) | |
.addInputSocket(token) | |
.addInputSocket(url) | |
.addInputSocket(region) | |
.addOutputSocket(site) | |
.addSiPropValueFrom(setNameProp) | |
.build() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment