substitutions:
  verify_ssl: "true"

network:

esphome:
  on_boot:
    then:
      - http_request.get:
          url: https://esphome.io
          request_headers:
            Content-Type: application/json
          on_error:
            logger.log: "Request failed"
          on_response:
            then:
              - logger.log:
                  format: "Response status: %d, Duration: %lu ms"
                  args:
                    - response->status_code
                    - (long) response->duration_ms
      - http_request.post:
          url: https://esphome.io
          request_headers:
            Content-Type: application/json
          json:
            key: value
      - http_request.send:
          method: PUT
          url: https://esphome.io
          request_headers:
            Content-Type: application/json
          body: "Some data"
      - http_request.post:
          url: https://esphome.io
          request_headers:
            Content-Type: application/json
          json:
            key: value
          capture_response: true
          on_response:
            then:
              - logger.log:
                  format: "Captured response status: %d, Body: %s"
                  args:
                    - response->status_code
                    - body.c_str()
              - delay: 1s
              - logger.log:
                  format: "After delay, body still: %s"
                  args:
                    - body.c_str()
              # Regression test for esphome/esphome#16224: a LightControlAction
              # nested inside on_response with capture_response: true puts
              # `std::string &` into the trigger's Ts..., which exposed a codegen
              # bug where the apply lambda's parameter list did not match the
              # ApplyFn signature.
              - light.turn_on:
                  id: test_regression_light
                  brightness: 100%
                  effect: "None"
      - http_request.get:
          url: https://esphome.io
          capture_response: true
          on_response:
            then:
              # Regression test: http_request.post with json: (dict variant) inside
              # on_response of a capture_response: true request puts std::string&
              # (body) into the nested action's Ts..., which exposes a
              # const-correctness bug in HttpRequestSendAction::play() where
              # encode_json_ receives const copies of non-const reference args.
              - http_request.post:
                  url: https://esphome.io
                  json:
                    status: "ok"
              # Same with json: lambda variant, exercises json_func_ path
              - http_request.post:
                  url: https://esphome.io
                  json: !lambda "root[\"status\"] = \"ok\";"

http_request:
  useragent: esphome/tagreader
  timeout: 10s
  verify_ssl: ${verify_ssl}

output:
  - platform: template
    id: test_regression_output
    type: float
    write_action:
      - logger.log: "set"

light:
  - platform: monochromatic
    id: test_regression_light
    output: test_regression_output

script:
  - id: does_not_compile
    parameters:
      api_url: string
    then:
      - http_request.get:
          url: "http://google.com"
