1.1.3 • Published 2 years ago

abap_cloud_platform v1.1.3

Weekly downloads
9
License
MIT
Repository
github
Last release
2 years ago

Abap cloud platform

The minimum cloud foundry/SAP cloud platform APIs required to access an ABAP repository. Might be useful for other cloud foundry services

Usage example

Get the authentication token

const CFENDPOINT = "https://api.cf.eu10.hana.ondemand.com" // EU cloud trial
// get the login URL
const info = await cfInfo(CFENDPOINT)
const loginUrl = info.links.login.href
// get logon token
const pwdGrant = await cfPasswordGrant(loginUrl, "username", "password")
const token = pwdGrant.accessToken

Use it to get the cf account organizations/spaces/instances/...

// cf Organizations
const organizations = await cfOrganizations(CFENDPOINT, token)
//cf spaces
const spaces = await cfSpaces(CFENDPOINT, organizations[0].entity, token)
// cf Service instances
const instances = await cfServiceInstances(CFENDPOINT, spaces[0].entity, token)
// cf Services
const services = await cfServices(CFENDPOINT, token)

...and then get the ABAP service key

// now I want the ABAP service key, so let's find the right service instance
const findAbapTag = (tags: string[]) => tags && tags.find(t => t === "abapcp")
const abapService = services.find(s => findAbapTag(s.entity.tags))
const abapServiceInstance = instances.find(
  i => i.entity.service_guid === abapService?.metadata.guid
)
// list of all keys
const abapServiceKeys = await cfInstanceServiceKeys(
  CFENDPOINT,
  abapServiceInstance.entity,
  token
)
// a single key named SAP_ADT, usually used by Eclipse
const abapServiceKey = await cfInstanceServiceKey(
  CFENDPOINT,
  abapServiceInstance.entity,
  "SAP_ADT",
  token
)

Finally ask the user to login (on his browser) and get some ABAP code

const { url, clientid, clientsecret } = abapServiceKey.entity.credentials.uaa

// code token This will open a browser window where the user can login.
// Beware: no timeout
const codeGrant = await cfCodeGrant(url, clientid, clientsecret, loginServer())

const headers = {
  Authorization: `bearer ${codeGrant.accessToken}`,
  Accept: "text/plain"
}
const resp = await got(
  `${key.credentials.url}/sap/bc/adt/oo/classes/cx_root/source/main`,
  { headers }
)

Get system details based on the given token

const user = await getAbapUserInfo(key.credentials.url, codeGrant.accessToken)
console.log(user.UNAME)

const info = await getAbapSystemInfo(key.credentials.url, codeGrant.accessToken)
console.log(info.SYSID)
1.1.3

2 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago