/* * (non-Javadoc) * * @see comeon.commons.Commons#upload(comeon.model.Picture, * in.yuvi.http.fluent.ProgressListener) */ @Override public void upload(final Picture picture, final ProgressListener listener) throws NotLoggedInException, FailedLoginException, FailedUploadException, IOException { synchronized (this) { if (!this.api.isLoggedIn) { LOGGER.debug("Not logged in"); this.login(); } } final InputStream stream = Files.asByteSource(picture.getFile()).openBufferedStream(); try { LOGGER.debug("Uploading"); final ApiResult result = this.api.upload( picture.getFile().getName(), stream, picture.getFile().length(), picture.getRenderedTemplate(), MessageFormat.format( UI.BUNDLE.getString("upload.comment"), UI.BUNDLE.getString("comeon")), true, listener); final ApiResult error = result.getNode("/api/error"); if (error.getDocument() != null) { final String code = error.getString("@code"); final String info = error.getString("@info"); throw new FailedUploadException(code, info); } final List<ApiResult> warnings = result.getNodes("/api/warning"); if (warnings != null && !warnings.isEmpty()) { for (final ApiResult warning : warnings) { final String code = warning.getString("@code"); final String info = warning.getString("@info"); LOGGER.warn("Upload warning. MediaWiki says: {}: {}", code, info); } } } catch (final IOException e) { throw new FailedUploadException(e); } }