abap-sdk/ZGOOG_SDK_QUICKSTART/zr_qs_cfinvoker.prog.abap (32 lines of code) (raw):

********************************************************************** * Copyright 2024 Google LLC * * * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * * software distributed under the License is distributed on an * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * * either express or implied. * * See the License for the specific language governing permissions * * and limitations under the License. * ********************************************************************** REPORT zr_qs_cfinvoker. DATA(lv_cf_name) = CONV string( 'cf-gen2-hello-with-args' ). DATA(lv_msg) = CONV string( '{"firstname": "John", "lastname" : "Doe"}' ). TRY. " Create a Client API stub for Cloud Functions DATA(lo_cloudfunc_client) = NEW /goog/cl_cloudfunc_v2( iv_key_name = 'DEMO_CF' ). " Create a Client API stub for Cloud Function Invoker. " Internally this uses the Cloud Function instance to fetch the cloud function HTTP endpoint DATA(lo_cfinvoker_client) = NEW /goog/cl_cloudfunc_invoker( iv_key_name = 'DEMO_CF_INVOKER' ). " Send additional query parameters as inputs to the cloud function. lo_cfinvoker_client->add_common_qparam( iv_name = 'name' iv_value = 'Johnny' ). lo_cfinvoker_client->invoke( EXPORTING iv_cf_name = lv_cf_name "Cloud Function Name iv_cf_location = 'us-central1' "Location where the Cloud Function is hosted io_cf_instance = lo_cloudfunc_client "Instance of cloud Function Client API Stub iv_body = lv_msg "Input payload to the Cloud Function iv_content_type = 'application/json' iv_method = 'POST' IMPORTING es_output = DATA(lv_output) ev_ret_code = DATA(lv_ret_code) ev_err_text = DATA(lv_err_text) es_err_resp = DATA(ls_err_resp) ). IF lo_cfinvoker_client->is_success( iv_code = lv_ret_code ). WRITE: / 'HTTP Return Code:', lv_ret_code. WRITE: / 'Response:', lv_output. "Output of cloud function ELSE. WRITE: / 'HTTP Return Code:', lv_ret_code. WRITE: / 'Error:', lv_err_text. ENDIF. CATCH /goog/cx_sdk INTO DATA(lo_exp). WRITE: / lo_exp->get_text( ). ENDTRY.