use of org.opendatakit.briefcase.reused.http.response.Response in project briefcase by opendatakit.
the class CommonsHttpTest method can_handle_3xx_errors.
@Test
public void can_handle_3xx_errors() throws Exception {
server.request(and(by(uri("/")), by(method(GET)))).response(status(302));
running(server, () -> {
Response response = http.execute(RequestBuilder.get(BASE_URL).build());
assertThat(response.isSuccess(), is(false));
});
}
use of org.opendatakit.briefcase.reused.http.response.Response in project briefcase by opendatakit.
the class PullFormFromAggregate method pullFormFromAggregate.
public static void pullFormFromAggregate(Path storageDir, Optional<String> formId, String username, String password, URL server, boolean resumeLastPull, Optional<LocalDate> startFromDate, boolean includeIncomplete, Optional<Integer> maybeMaxHttpConnections) {
CliEventsCompanion.attach(log);
Path briefcaseDir = Common.getOrCreateBriefcaseDir(storageDir);
FormCache formCache = FormCache.from(briefcaseDir);
formCache.update();
BriefcasePreferences appPreferences = BriefcasePreferences.appScoped();
FormMetadataPort formMetadataPort = FileSystemFormMetadataAdapter.at(briefcaseDir);
int maxHttpConnections = Optionals.race(maybeMaxHttpConnections, appPreferences.getMaxHttpConnections()).orElse(DEFAULT_HTTP_CONNECTIONS);
Http http = appPreferences.getHttpProxy().map(host -> CommonsHttp.of(maxHttpConnections, host)).orElseGet(() -> CommonsHttp.of(maxHttpConnections));
AggregateServer aggregateServer = AggregateServer.authenticated(server, new Credentials(username, password));
Response<List<RemoteFormDefinition>> response = http.execute(aggregateServer.getFormListRequest());
if (!response.isSuccess()) {
System.err.println(response.isRedirection() ? "Error connecting to Aggregate: Redirection detected" : response.isUnauthorized() ? "Error connecting to Aggregate: Wrong credentials" : response.isNotFound() ? "Error connecting to Aggregate: Aggregate not found" : "Error connecting to Aggregate");
return;
}
List<FormStatus> filteredForms = response.orElseThrow(BriefcaseException::new).stream().filter(f -> formId.map(id -> f.getFormId().equals(id)).orElse(true)).map(FormStatus::new).collect(toList());
if (formId.isPresent() && filteredForms.isEmpty())
throw new BriefcaseException("Form " + formId.get() + " not found");
TransferForms forms = TransferForms.empty();
forms.load(filteredForms);
forms.selectAll();
PullFromAggregate pullOp = new PullFromAggregate(http, aggregateServer, briefcaseDir, includeIncomplete, PullFormFromAggregate::onEvent, formMetadataPort);
JobsRunner.launchAsync(forms.map(form -> pullOp.pull(form, resolveCursor(resumeLastPull, startFromDate, form, formMetadataPort))), PullFormFromAggregate::onError).waitForCompletion();
System.out.println();
System.out.println("All operations completed");
System.out.println();
}
use of org.opendatakit.briefcase.reused.http.response.Response in project briefcase by opendatakit.
the class PullFormFromCentral method pullFromCentral.
private static void pullFromCentral(Args args) {
CliEventsCompanion.attach(log);
Path briefcaseDir = Common.getOrCreateBriefcaseDir(args.get(STORAGE_DIR));
FormCache formCache = FormCache.from(briefcaseDir);
formCache.update();
BriefcasePreferences appPreferences = BriefcasePreferences.appScoped();
FormMetadataPort formMetadataPort = FileSystemFormMetadataAdapter.at(briefcaseDir);
int maxHttpConnections = Optionals.race(args.getOptional(MAX_HTTP_CONNECTIONS), appPreferences.getMaxHttpConnections()).orElse(DEFAULT_HTTP_CONNECTIONS);
Http http = appPreferences.getHttpProxy().map(host -> CommonsHttp.of(maxHttpConnections, host)).orElseGet(() -> CommonsHttp.of(maxHttpConnections));
CentralServer server = CentralServer.of(args.get(SERVER_URL), args.get(PROJECT_ID), new Credentials(args.get(CREDENTIALS_EMAIL), args.get(CREDENTIALS_PASSWORD)));
String token = http.execute(server.getSessionTokenRequest()).orElseThrow(() -> new BriefcaseException("Can't authenticate with ODK Central"));
Response<List<RemoteFormDefinition>> response = http.execute(server.getFormsListRequest(token));
if (!response.isSuccess()) {
System.err.println(response.isRedirection() ? "Error connecting to Central: Redirection detected" : response.isUnauthorized() ? "Error connecting to Central: Wrong credentials" : response.isNotFound() ? "Error connecting to Central: Central not found" : "Error connecting to Central");
return;
}
Optional<String> formId = args.getOptional(FORM_ID);
List<FormStatus> filteredForms = response.orElseThrow(BriefcaseException::new).stream().filter(f -> formId.map(id -> f.getFormId().equals(id)).orElse(true)).map(FormStatus::new).collect(toList());
if (formId.isPresent() && filteredForms.isEmpty())
throw new BriefcaseException("Form " + formId.get() + " not found");
TransferForms forms = TransferForms.empty();
forms.load(filteredForms);
forms.selectAll();
PullFromCentral pullOp = new PullFromCentral(http, server, briefcaseDir, token, PullFormFromCentral::onEvent, formMetadataPort);
JobsRunner.launchAsync(forms.map(pullOp::pull), PullFormFromCentral::onError).waitForCompletion();
System.out.println();
System.out.println("All operations completed");
System.out.println();
}
use of org.opendatakit.briefcase.reused.http.response.Response in project briefcase by opendatakit.
the class PullFromAggregate method downloadSubmissionAttachment.
void downloadSubmissionAttachment(FormStatus form, DownloadedSubmission submission, AggregateAttachment attachment, RunnerStatus runnerStatus, PullFromAggregateTracker tracker, int submissionNumber, int totalSubmissions, int attachmentNumber, int totalAttachments) {
if (runnerStatus.isCancelled()) {
tracker.trackCancellation("Download attachment " + attachmentNumber + " of " + totalAttachments + " of submission " + submissionNumber + " of " + totalSubmissions);
return;
}
Path target = form.getSubmissionMediaFile(briefcaseDir, submission.getInstanceId(), attachment.getFilename());
createDirectories(target.getParent());
tracker.trackStartDownloadingSubmissionAttachment(submissionNumber, totalSubmissions, attachmentNumber, totalAttachments);
Response response = http.execute(get(attachment.getDownloadUrl()).downloadTo(target).build());
if (response.isSuccess())
tracker.trackEndDownloadingSubmissionAttachment(submissionNumber, totalSubmissions, attachmentNumber, totalAttachments);
else
tracker.trackErrorDownloadingSubmissionAttachment(submissionNumber, totalSubmissions, attachmentNumber, totalAttachments, response);
}
use of org.opendatakit.briefcase.reused.http.response.Response in project briefcase by opendatakit.
the class PullFromAggregate method downloadFormAttachment.
void downloadFormAttachment(FormStatus form, AggregateAttachment attachment, RunnerStatus runnerStatus, PullFromAggregateTracker tracker, int attachmentNumber, int totalAttachments) {
if (runnerStatus.isCancelled()) {
tracker.trackCancellation("Download form attachment " + attachment.getFilename());
return;
}
Path target = form.getFormMediaFile(briefcaseDir, attachment.getFilename());
createDirectories(target.getParent());
tracker.trackStartDownloadingFormAttachment(attachmentNumber, totalAttachments);
Response response = http.execute(get(attachment.getDownloadUrl()).downloadTo(target).build());
if (response.isSuccess())
tracker.trackEndDownloadingFormAttachment(attachmentNumber, totalAttachments);
else
tracker.trackErrorDownloadingFormAttachment(attachmentNumber, totalAttachments, response);
}
Aggregations