mirror of
https://github.com/google/nomulus.git
synced 2025-06-18 02:14:49 +02:00
Import code from internal repository to git
This commit is contained in:
commit
0ef0c933d2
2490 changed files with 281594 additions and 0 deletions
|
@ -0,0 +1,104 @@
|
|||
// Copyright 2016 Google Inc. All Rights Reserved.
|
||||
//
|
||||
// Licensed 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 com.google.domain.registry.tools;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.domain.registry.export.PublishDetailReportAction;
|
||||
import com.google.domain.registry.model.registrar.Registrar;
|
||||
import com.google.domain.registry.tools.Command.GtechCommand;
|
||||
|
||||
import com.beust.jcommander.Parameter;
|
||||
import com.beust.jcommander.Parameters;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Command to publish a given billing detail report to a registrar's Drive folder.
|
||||
*/
|
||||
@Parameters(separators = " =", commandDescription = "Publish detail report for a registrar")
|
||||
public class PublishDetailReportCommand extends ConfirmingCommand
|
||||
implements ServerSideCommand, GtechCommand {
|
||||
|
||||
@Parameter(
|
||||
names = "--registrar_id",
|
||||
description = "Client identifier of the registrar to publish the report for",
|
||||
required = true)
|
||||
private String registrarId;
|
||||
|
||||
@Parameter(
|
||||
names = "--report_name",
|
||||
description = "Name of the detail report (without directory prefixes)",
|
||||
required = true)
|
||||
private String reportName;
|
||||
|
||||
@Parameter(
|
||||
names = "--gcs_bucket",
|
||||
description = "Name of the GCS bucket that holds billing output files.")
|
||||
private String gcsBucket = "domain-registry-billing";
|
||||
|
||||
@Parameter(
|
||||
names = "--gcs_folder",
|
||||
description = "GCS folder under which report was exported.",
|
||||
required = true)
|
||||
private String gcsFolder;
|
||||
|
||||
private static final String DRIVE_FOLDER_URL_TEMPLATE =
|
||||
"https://drive.google.com/corp/drive/#folders/%s";
|
||||
|
||||
private String gcsFolderPrefix;
|
||||
private String driveFolderUrl;
|
||||
|
||||
private Connection connection;
|
||||
|
||||
@Override
|
||||
public void setConnection(Connection connection) {
|
||||
this.connection = connection;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() throws Exception {
|
||||
// Append a trailing slash to the GCS folder (if there is one, and if it doesn't already end
|
||||
// in a slash) to get the "folder prefix" version.
|
||||
// TODO(b/18611424): Fix PublishDetailReportAction to take fewer error-prone parameters.
|
||||
gcsFolderPrefix =
|
||||
(gcsFolder.isEmpty() || gcsFolder.endsWith("/")) ? gcsFolder : gcsFolder + "/";
|
||||
Registrar registrar = checkNotNull(
|
||||
Registrar.loadByClientId(registrarId), "Registrar with ID %s not found", registrarId);
|
||||
driveFolderUrl = String.format(DRIVE_FOLDER_URL_TEMPLATE, registrar.getDriveFolderId());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String prompt() {
|
||||
String gcsFile = String.format("gs://%s/%s%s", gcsBucket, gcsFolderPrefix, reportName);
|
||||
return "Publish detail report:\n"
|
||||
+ " - Registrar: " + registrarId + "\n"
|
||||
+ " - Drive folder: " + driveFolderUrl + "\n"
|
||||
+ " - GCS file: " + gcsFile;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String execute() throws Exception {
|
||||
final ImmutableMap<String, String> params = ImmutableMap.of(
|
||||
PublishDetailReportAction.REGISTRAR_ID_PARAM, registrarId,
|
||||
PublishDetailReportAction.DETAIL_REPORT_NAME_PARAM, reportName,
|
||||
PublishDetailReportAction.GCS_FOLDER_PREFIX_PARAM, gcsFolderPrefix,
|
||||
PublishDetailReportAction.GCS_BUCKET_PARAM, gcsBucket);
|
||||
Map<String, Object> response =
|
||||
connection.sendJson(PublishDetailReportAction.PATH, params);
|
||||
return "Success! Published report with drive file ID: " + response.get("driveId");
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue