quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

SIMPLE1 (4755B)


      1       * Curl simple URL request
      2       *
      3      h DFTACTGRP(*NO) ACTGRP(*NEW)
      4      h OPTION(*NOSHOWCPY)
      5      h BNDDIR('CURL')
      6       *
      7       **************************************************************************
      8       *                                  _   _ ____  _
      9       *  Project                     ___| | | |  _ \| |
     10       *                             / __| | | | |_) | |
     11       *                            | (__| |_| |  _ <| |___
     12       *                             \___|\___/|_| \_\_____|
     13       *
     14       * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
     15       *
     16       * This software is licensed as described in the file COPYING, which
     17       * you should have received as part of this distribution. The terms
     18       * are also available at https://curl.se/docs/copyright.html.
     19       *
     20       * You may opt to use, copy, modify, merge, publish, distribute and/or sell
     21       * copies of the Software, and permit persons to whom the Software is
     22       * furnished to do so, under the terms of the COPYING file.
     23       *
     24       * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
     25       * ANY KIND, either express or implied.
     26       *
     27       * SPDX-License-Identifier: curl
     28       *
     29       **************************************************************************
     30       *
     31       /include H,CURL.INC
     32       *
     33       * Simple example to request the URL given as command line parameter and
     34       * output its response.
     35       *
     36      d                 pi
     37      d url                          120
     38       *
     39      d urllen          s             10u 0                                      URL length
     40       *
     41       **************************************************************************
     42       *
     43      c                   eval      urllen = trimmed_length(url: %len(url))
     44       *
     45       * Do the curl stuff.
     46       *
     47      c                   callp     curl_global_init(CURL_GLOBAL_ALL)
     48      c                   callp     main
     49      c                   callp     curl_global_cleanup()
     50      c                   seton                                            lr    Exit
     51       *
     52       **************************************************************************
     53       * Main procedure: do the curl job.
     54       **************************************************************************
     55       *
     56      p main            b
     57      d main            pi
     58       *
     59      d h               s               *                                        Easy handle
     60      d result          s                   like(CURLcode)                       Curl return code
     61      d                                     inz(CURLE_OUT_OF_MEMORY)
     62      d errmsgp         s               *                                        Error string pointer
     63      d response        s             52                                         For error display
     64       *
     65       * Create and fill curl handle.
     66       *
     67      c                   eval      h = curl_easy_init()
     68      c                   if        h <> *NULL
     69      c                   callp     curl_easy_setopt_ccsid(h: CURLOPT_URL:
     70      c                               %subst(url: 1: urllen): 0)
     71      c                   callp     curl_easy_setopt_long(h:
     72      c                               CURLOPT_FOLLOWLOCATION: 1)
     73       *
     74       * Perform the request.
     75       *
     76      c                   eval      result = curl_easy_perform(h)
     77      c                   callp     curl_easy_cleanup(h)                         Release handle
     78      c                   endif
     79       *
     80       * Check for error and report if some.
     81       *
     82      c                   if        result <> CURLE_OK
     83      c                   eval      errmsgp = curl_easy_strerror_ccsid(result: 0)
     84      c                   eval      response = %str(errmsgp)
     85      c                   dsply                   response
     86      c                   endif
     87      p main            e
     88       *
     89       **************************************************************************
     90       * Get the length of right-trimmed string
     91       **************************************************************************
     92       *
     93      p trimmed_length  b
     94      d trimmed_length  pi            10u 0
     95      d  string                   999999    const options(*varsize)
     96      d  length                       10u 0 value
     97       *
     98      d len             s             10u 0
     99       *
    100      c                   eval      len = %scan(X'00': string: 1: length)        Limit null-terminated
    101      c                   if        len = 0
    102      c                   eval      len = length + 1
    103      c                   endif
    104      c                   if        len <= 1
    105      c                   return    0
    106      c                   endif
    107      c                   return    %checkr(' ': string: len - 1)                Trim right
    108      p trimmed_length  e