---
apiVersion: v1
kind: List
items:
- apiVersion: v1
  kind: ConfigMap
  metadata:
    labels:
      funktion.fabric8.io/kind: Connector
      provider: fabric8
      project: connector-geocoder
      version: 1.1.42
      group: io.fabric8.funktion.connector
    name: geocoder
  data:
    deployment.yml: |
      ---
      apiVersion: extensions/v1beta1
      kind: Deployment
      metadata:
        labels:
          funktion.fabric8.io/kind: Subscription
          connector: geocoder
      spec:
        replicas: 1
        template:
          metadata:
            labels:
              funktion.fabric8.io/kind: Subscription
              connector: geocoder
          spec:
            containers:
            - image: funktion/connector-geocoder:1.1.42
              name: connector
    schema.yml: |
      ---
      component:
        kind: component
        scheme: geocoder
        syntax: geocoder:address:latlng
        title: Geocoder
        description: The geocoder component is used for looking up geocodes (latitude and longitude) for a given address or reverse lookup.
        label: api,location
        deprecated: false
        async: false
        producerOnly: true
        javaType: org.apache.camel.component.geocoder.GeoCoderComponent
        groupId: org.apache.camel
        artifactId: camel-geocoder
        version: 2.18.1
      componentProperties: {}
      properties:
        address:
          kind: path
          group: producer
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: 'The geo address which should be prefixed with address:'
          order: 0
        latlng:
          kind: path
          group: producer
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: 'The geo latitude and longitude which should be prefixed with latlng:'
          order: 1
        clientId:
          kind: parameter
          group: producer
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: To use google premium with this client id
          order: 2
        clientKey:
          kind: parameter
          group: producer
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: To use google premium with this client key
          order: 3
        headersOnly:
          kind: parameter
          group: producer
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: Whether to only enrich the Exchange with headers and leave the body as-is.
          order: 4
        language:
          kind: parameter
          group: producer
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          defaultValue: en
          description: The language to use.
          order: 5
        httpClientConfigurer:
          kind: parameter
          group: advanced
          label: advanced
          type: object
          javaType: org.apache.camel.component.geocoder.http.HttpClientConfigurer
          deprecated: false
          secret: false
          description: Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc
          order: 6
        httpConnectionManager:
          kind: parameter
          group: advanced
          label: advanced
          type: object
          javaType: org.apache.commons.httpclient.HttpConnectionManager
          deprecated: false
          secret: false
          description: To use a custom HttpConnectionManager to manage connections
          order: 7
        synchronous:
          kind: parameter
          group: advanced
          label: advanced
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
          order: 8
        proxyAuthDomain:
          kind: parameter
          group: proxy
          label: proxy
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: Domain for proxy NTML authentication
          order: 9
        proxyAuthHost:
          kind: parameter
          group: proxy
          label: proxy
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: Optional host for proxy NTML authentication
          order: 10
        proxyAuthMethod:
          kind: parameter
          group: proxy
          label: proxy
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: Authentication method for proxy either as Basic Digest or NTLM.
          order: 11
        proxyAuthPassword:
          kind: parameter
          group: proxy
          label: proxy
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: Password for proxy authentication
          order: 12
        proxyAuthUsername:
          kind: parameter
          group: proxy
          label: proxy
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: Username for proxy authentication
          order: 13
        proxyHost:
          kind: parameter
          group: proxy
          label: proxy
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: The proxy host name
          order: 14
        proxyPort:
          kind: parameter
          group: proxy
          label: proxy
          type: integer
          javaType: java.lang.Integer
          deprecated: false
          secret: false
          description: The proxy port number
          order: 15
    documentation.adoc: |
      [[Geocoder-GeocoderComponent]]
      Geocoder Component
      ~~~~~~~~~~~~~~~~~~

      *Available as of Camel 2.12*

      The *geocoder:* component is used for looking up geocodes (latitude and
      longitude) for a given address, or reverse lookup. The component uses
      the https://code.google.com/p/geocoder-java/[Java API for Google
      Geocoder] library.

      Maven users will need to add the following dependency to their `pom.xml`
      for this component:

      [source,xml]
      ------------------------------------------------------------
      <dependency>
          <groupId>org.apache.camel</groupId>
          <artifactId>camel-geocoder</artifactId>
          <version>x.x.x</version>
          <!-- use the same version as your Camel core version -->
      </dependency>
      ------------------------------------------------------------

      [[Geocoder-URIformat]]
      URI format
      ^^^^^^^^^^

      [source,java]
      --------------------------------------------
      geocoder:address:name[?options]
      geocoder:latlng:latitude,longitude[?options]
      --------------------------------------------

      [[Geocoder-Options]]
      Options
      ^^^^^^^


      // component options: START
      The Geocoder component has no options.
      // component options: END




      // endpoint options: START
      The Geocoder component supports 16 endpoint options which are listed below:

      {% raw %}
      [width="100%",cols="2,1,1m,1m,5",options="header"]
      |=======================================================================
      | Name | Group | Default | Java Type | Description
      | address | producer |  | String | The geo address which should be prefixed with address:
      | latlng | producer |  | String | The geo latitude and longitude which should be prefixed with latlng:
      | clientId | producer |  | String | To use google premium with this client id
      | clientKey | producer |  | String | To use google premium with this client key
      | headersOnly | producer | false | boolean | Whether to only enrich the Exchange with headers and leave the body as-is.
      | language | producer | en | String | The language to use.
      | httpClientConfigurer | advanced |  | HttpClientConfigurer | Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc
      | httpConnectionManager | advanced |  | HttpConnectionManager | To use a custom HttpConnectionManager to manage connections
      | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
      | proxyAuthDomain | proxy |  | String | Domain for proxy NTML authentication
      | proxyAuthHost | proxy |  | String | Optional host for proxy NTML authentication
      | proxyAuthMethod | proxy |  | String | Authentication method for proxy either as Basic Digest or NTLM.
      | proxyAuthPassword | proxy |  | String | Password for proxy authentication
      | proxyAuthUsername | proxy |  | String | Username for proxy authentication
      | proxyHost | proxy |  | String | The proxy host name
      | proxyPort | proxy |  | Integer | The proxy port number
      |=======================================================================
      {% endraw %}
      // endpoint options: END



      [[Geocoder-Exchangedataformat]]
      Exchange data format
      ^^^^^^^^^^^^^^^^^^^^

      Camel will deliver the body as a
      `com.google.code.geocoder.model.GeocodeResponse` type. +
       And if the address is `"current"` then the response is a String type
      with a JSON representation of the current location.

      If the option `headersOnly` is set to `true` then the message body is
      left as-is, and only headers will be added to the
      link:exchange.html[Exchange].

      [[Geocoder-MessageHeaders]]
      Message Headers
      ^^^^^^^^^^^^^^^

      [width="100%",cols="50%,50%",options="header",]
      |=======================================================================
      |Header |Description

      |`CamelGeoCoderStatus` |Mandatory. Status code from the geocoder library. If status is
      `GeocoderStatus.OK` then additional headers is enriched

      |`CamelGeoCoderAddress` |The formatted address

      |`CamelGeoCoderLat` |The latitude of the location.

      |`CamelGeoCoderLng` |The longitude of the location.

      |`CamelGeoCoderLatlng` |The latitude and longitude of the location. Separated by comma.

      |`CamelGeoCoderCity` |The city long name.

      |`CamelGeoCoderRegionCode` |The region code.

      |`CamelGeoCoderRegionName` |The region name.

      |`CamelGeoCoderCountryLong` |The country long name.

      |`CamelGeoCoderCountryShort` |The country short name.
      |=======================================================================

      Notice not all headers may be provided depending on available data and
      mode in use (address vs latlng).

      [[Geocoder-Samples]]
      Samples
      ^^^^^^^

      In the example below we get the latitude and longitude for Paris, France

      [source,java]
      -----------------------------------------
        from("direct:start")
          .to("geocoder:address:Paris, France")
      -----------------------------------------

      If you provide a header with the `CamelGeoCoderAddress` then that
      overrides the endpoint configuration, so to get the location of
      Copenhagen, Denmark we can send a message with a headers as shown:

      [source,java]
      ------------------------------------------------------------------------------------------------------
      template.sendBodyAndHeader("direct:start", "Hello", GeoCoderConstants.ADDRESS, "Copenhagen, Denmark");
      ------------------------------------------------------------------------------------------------------

      To get the address for a latitude and longitude we can do:

      [source,java]
      ---------------------------------------------------------------------------------------------------------------------------------------------------
        from("direct:start")
          .to("geocoder:latlng:40.714224,-73.961452")
          .log("Location ${header.CamelGeocoderAddress} is at lat/lng: ${header.CamelGeocoderLatlng} and in country ${header.CamelGeoCoderCountryShort}")
      ---------------------------------------------------------------------------------------------------------------------------------------------------

      Which will log

      [source,java]
      --------------------------------------------------------------------------------------------------------------
      Location 285 Bedford Avenue, Brooklyn, NY 11211, USA is at lat/lng: 40.71412890,-73.96140740 and in country US
      --------------------------------------------------------------------------------------------------------------

      To get the current location you can use "current" as the address as
      shown:

      [source,java]
      -----------------------------------
        from("direct:start")
          .to("geocoder:address:current")
      -----------------------------------
