Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* 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.
*/
package org.apache.camel.component.digitalocean;
import com.myjeeva.digitalocean.impl.DigitalOceanClient;
import org.apache.camel.Category;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.component.digitalocean.constants.DigitalOceanHeaders;
import org.apache.camel.component.digitalocean.producer.DigitalOceanAccountProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanActionsProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanBlockStoragesProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanDropletsProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanFloatingIPsProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanImagesProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanKeysProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanRegionsProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanSizesProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanSnapshotsProducer;
import org.apache.camel.component.digitalocean.producer.DigitalOceanTagsProducer;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
import org.apache.camel.support.DefaultEndpoint;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Manage Droplets and resources within the DigitalOcean cloud.
*/
@UriEndpoint(firstVersion = "2.19.0", scheme = "digitalocean", title = "DigitalOcean", syntax = "digitalocean:operation",
producerOnly = true, category = { Category.CLOUD, Category.MANAGEMENT }, headersClass = DigitalOceanHeaders.class)
public class DigitalOceanEndpoint extends DefaultEndpoint implements EndpointServiceLocation {
private static final transient Logger LOG = LoggerFactory.getLogger(DigitalOceanEndpoint.class);
@UriParam
private DigitalOceanConfiguration configuration;
private DigitalOceanClient digitalOceanClient;
public DigitalOceanEndpoint(String uri, DigitalOceanComponent component, DigitalOceanConfiguration configuration) {
super(uri, component);
this.configuration = configuration;
}
@Override
public String getServiceUrl() {
return "api.digitalocean.com";
}
@Override
public String getServiceProtocol() {
return "rest";
}
@Override
public Producer createProducer() throws Exception {
LOG.trace("Resolve producer digitalocean endpoint {{}}", configuration.getResource());
switch (configuration.getResource()) {
case account:
return new DigitalOceanAccountProducer(this, configuration);
case actions:
return new DigitalOceanActionsProducer(this, configuration);
case blockStorages:
return new DigitalOceanBlockStoragesProducer(this, configuration);
case droplets:
return new DigitalOceanDropletsProducer(this, configuration);
case images:
return new DigitalOceanImagesProducer(this, configuration);
case snapshots:
return new DigitalOceanSnapshotsProducer(this, configuration);
case keys:
return new DigitalOceanKeysProducer(this, configuration);
case regions:
return new DigitalOceanRegionsProducer(this, configuration);
case sizes:
return new DigitalOceanSizesProducer(this, configuration);
case floatingIPs:
return new DigitalOceanFloatingIPsProducer(this, configuration);
case tags:
return new DigitalOceanTagsProducer(this, configuration);
default:
throw new UnsupportedOperationException("Operation specified is not valid for producer");
}
}
@Override
public Consumer createConsumer(Processor processor) throws Exception {
throw new UnsupportedOperationException("You cannot receive messages from this endpoint");
}
@Override
public void doStart() throws Exception {
super.doStart();
if (configuration.getDigitalOceanClient() != null) {
digitalOceanClient = configuration.getDigitalOceanClient();
} else if (configuration.getHttpProxyHost() != null && configuration.getHttpProxyPort() != null) {
HttpClientBuilder builder = HttpClients.custom()
.useSystemProperties()
.setProxy(new HttpHost(configuration.getHttpProxyHost(), configuration.getHttpProxyPort()));
if (configuration.getHttpProxyUser() != null && configuration.getHttpProxyPassword() != null) {
BasicCredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope(configuration.getHttpProxyHost(), configuration.getHttpProxyPort()),
new UsernamePasswordCredentials(
configuration.getHttpProxyUser(), configuration.getHttpProxyPassword()));
builder.setDefaultCredentialsProvider(credsProvider);
}
digitalOceanClient = new DigitalOceanClient("v2", configuration.getOAuthToken(), builder.build());
} else {
digitalOceanClient = new DigitalOceanClient(configuration.getOAuthToken());
}
}
public DigitalOceanConfiguration getConfiguration() {
return configuration;
}
public DigitalOceanClient getDigitalOceanClient() {
return digitalOceanClient;
}
}