--- apiVersion: v1 kind: List items: - apiVersion: v1 kind: ConfigMap metadata: labels: funktion.fabric8.io/kind: Connector provider: fabric8 project: connector-geocoder version: 1.1.53 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.53 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] ------------------------------------------------------------ org.apache.camel camel-geocoder x.x.x ------------------------------------------------------------ [[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") -----------------------------------