Sample code for 30+ languages & platforms
PureBasic

Example: Secrets.SecretSpecToJson method

Demonstrates the SecretSpecToJson method. This method converts a secret specification string to the JSON required to create or lookup the secret.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkJsonObject.pb"
IncludeFile "CkSecrets.pb"

Procedure ChilkatExample()

    success.i = 0

    secrets.i = CkSecrets::ckCreate()
    If secrets.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::setCkEmitCompact(json, 0)

    ; A secret name can include up to 4 components:
    ; [appName] / service / [domain] / username

    ; This example will demonstrate secret specification strings
    ; for each possible combination.

    ; ------------------------------------------------------
    ; 1: service + username
    sspec.s = "!!imap|john@example.com"

    CkSecrets::ckSecretSpecToJson(secrets,sspec,json)
    Debug CkJsonObject::ckEmit(json)

    ; Result:
    ; {
    ;   "service": "imap",
    ;   "username": "john@example.com"
    ; }

    ; ------------------------------------------------------
    ; 2: appName + service + username
    sspec = "!!myApp|imap|john@example.com"

    CkSecrets::ckSecretSpecToJson(secrets,sspec,json)
    Debug CkJsonObject::ckEmit(json)

    ; Result:
    ; {
    ;   "appName": "myApp",
    ;   "service": "imap",
    ;   "username": "john@example.com"
    ; }

    ; ------------------------------------------------------
    ; 3: service + domain + username
    sspec = "!!|imap|imap.example.com|john"

    CkSecrets::ckSecretSpecToJson(secrets,sspec,json)
    Debug CkJsonObject::ckEmit(json)

    ; Result:
    ; {
    ;   "service": "imap",
    ;   "domain": "imap.example.com",
    ;   "username": "john"
    ; }

    ; ------------------------------------------------------
    ; 4: appName + service + domain + username
    sspec = "!!myApp|imap|imap.example.com|john"

    CkSecrets::ckSecretSpecToJson(secrets,sspec,json)
    Debug CkJsonObject::ckEmit(json)

    ; Result:
    ; {
    ;   "appName": "myApp",
    ;   "service": "imap",
    ;   "domain": "imap.example.com",
    ;   "username": "john"
    ; }


    CkSecrets::ckDispose(secrets)
    CkJsonObject::ckDispose(json)


    ProcedureReturn
EndProcedure