/** * @param distribution Distribution configuration * @return Configuration * @throws CloudFrontServiceException CloudFront failure details * @throws IOException Service error */ private DistributionConfig getDistributionConfig( final org.jets3t.service.model.cloudfront.Distribution distribution) throws IOException, CloudFrontServiceException { CloudFrontService cf = this.getClient(); if (distribution.isStreamingDistribution()) { return cf.getStreamingDistributionConfig(distribution.getId()); } return cf.getDistributionConfig(distribution.getId()); }
private Distribution convert( final org.jets3t.service.model.cloudfront.Distribution d, Distribution.Method method) throws IOException, CloudFrontServiceException { // Retrieve distributions configuration to access current logging status settings. final DistributionConfig distributionConfig = this.getDistributionConfig(d); final String loggingTarget; if (null == distributionConfig.getLoggingStatus()) { // Default logging target to origin itself loggingTarget = ServiceUtils.findBucketNameInHostname( d.getConfig().getOrigin().getDomainName(), Protocol.S3_SSL.getDefaultHostname()); } else { loggingTarget = ServiceUtils.findBucketNameInHostname( distributionConfig.getLoggingStatus().getBucket(), Protocol.S3_SSL.getDefaultHostname()); } final Distribution distribution = new Distribution( d.getId(), distributionConfig.getEtag(), distributionConfig.getCallerReference(), d.getConfig().getOrigin().getDomainName(), method, d.getConfig().isEnabled(), d.isDeployed(), // CloudFront URL String.format("%s://%s%s", method.getScheme(), d.getDomainName(), method.getContext()), method.equals(Distribution.DOWNLOAD) || method.equals(Distribution.CUSTOM) ? String.format("https://%s%s", d.getDomainName(), method.getContext()) : null, // No SSL null, Locale.localizedString(d.getStatus(), "S3"), distributionConfig.getCNAMEs(), distributionConfig.getLoggingStatus().isEnabled(), loggingTarget, distributionConfig.getDefaultRootObject()); if (this.isInvalidationSupported(method)) { distribution.setInvalidationStatus(this.readInvalidationStatus(distribution)); } if (this.isLoggingSupported(method)) { distribution.setContainers(this.getContainers()); } return distribution; }
/** * Amazon CloudFront Extension used to list all configured distributions * * @param origin Name of the container * @param method Distribution method * @throws CloudFrontServiceException CloudFront failure details * @throws IOException Service error */ private void cache(String origin, Distribution.Method method) throws IOException, CloudFrontServiceException { if (log.isDebugEnabled()) { log.debug(String.format("List distributions for origin %s", origin)); } CloudFrontService cf = this.getClient(); if (method.equals(Distribution.STREAMING)) { for (org.jets3t.service.model.cloudfront.Distribution d : cf.listStreamingDistributions(origin)) { for (Origin o : d.getConfig().getOrigins()) { if (o instanceof S3Origin) { // Write to cache distributionStatus.get(method).put(origin, this.convert(d, method)); // We currently only support one distribution per bucket break; } } } } else if (method.equals(Distribution.DOWNLOAD)) { // List distributions restricting to bucket name origin for (org.jets3t.service.model.cloudfront.Distribution d : cf.listDistributions(origin)) { for (Origin o : d.getConfig().getOrigins()) { if (o instanceof S3Origin) { // Write to cache distributionStatus.get(method).put(origin, this.convert(d, method)); // We currently only support one distribution per bucket break; } } } } else if (method.equals(Distribution.CUSTOM) || method.equals(Distribution.WEBSITE_CDN)) { for (org.jets3t.service.model.cloudfront.Distribution d : cf.listDistributions()) { for (Origin o : d.getConfig().getOrigins()) { // Listing all distributions and look for custom origin if (o instanceof CustomOrigin) { if (o.getDomainName().equals(origin)) { distributionStatus.get(method).put(origin, this.convert(d, method)); } } } } } }