## Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agreements. See the NOTICE file# distributed with this work for additional information# regarding copyright ownership. The ASF licenses this file# to you 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## http://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."""Example HTTP operator and sensor"""from__future__importannotationsimportjsonimportosfromdatetimeimportdatetimefromairflowimportDAGfromairflow.providers.http.operators.httpimportHttpOperatorfromairflow.providers.http.sensors.httpimportHttpSensor
dag.doc_md=__doc__# task_post_op, task_get_op and task_put_op are examples of tasks created by instantiating operators# [START howto_operator_http_task_post_op]
[docs]defget_next_page_cursor(response)->dict|None:""" Take the raw `request.Response` object, and check for a cursor. If a cursor exists, this function creates and return parameters to call the next page of result. """next_cursor=response.json().get("cursor")ifnext_cursor:returndict(data={"cursor":next_cursor})returnNone
# [END howto_operator_http_pagination_function](task_http_sensor_check>>task_http_sensor_check_async>>task_post_op>>task_get_op>>task_get_op_response_filter)task_get_op_response_filter>>task_put_op>>task_del_op>>task_post_op_formenctask_post_op_formenc>>task_get_paginatedfromtests_common.test_utils.system_testsimportget_test_run# noqa: E402# Needed to run the example DAG with pytest (see: tests/system/README.md#run_via_pytest)