# ---------------------------------------------------------------------------
# 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.
# ---------------------------------------------------------------------------
apiVersion: camel.apache.org/v1alpha1
kind: Kamelet
metadata:
  name: http-secured-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "main-SNAPSHOT"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "HTTP"
  labels:
    camel.apache.org/kamelet.type: sink
spec:
  definition:
    title: Secured HTTP Sink
    description: Forwards an event to a secured HTTP endpoint
    required:
    - url
    type: object
    properties:
      url:
        title: URL
        description: The URL to send data to
        type: string
        example: "https://my-service/path"
        pattern: "^(http|https)://.*"
      method:
        title: Method
        description: The HTTP method to use
        type: string
        default: POST
      authMethod:
        title: Authentication Method
        description: Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM.
        type: string
        default: "Basic"
      authenticationPreemptive:
        title: Authentication Preemptive
        description: If this option is true, camel-http sends preemptive basic authentication to the server.
        type: boolean
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
        default: false
      authUsername:
        title: Authentication Username
        description: Authentication username
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      authPassword:
        title: Authentication Password
        description: Authentication password
        type: string
        format: password
        x-descriptors:
        - urn:alm:descriptor:com.tectonic.ui:password
        - urn:camel:group:credentials
  dependencies:
  - "camel:http"
  - "camel:kamelet"
  - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - remove-header:
          name: CamelHttpUri
      - set-header:
          name: CamelHttpMethod
          constant: "{{method}}"
      - to:
          uri: "{{url}}"
          parameters: 
            authMethod: "{{authMethod}}"
            authUsername: "{{authUsername}}"
            authPassword: "{{authPassword}}"
            authenticationPreemptive: "{{authenticationPreemptive}}"
