@Override Body process() throws IOException { Response.Body body = new Response.Body(); if (objects.size() > 0) { body.objects = new ArrayList<>(); for (LfsObject o : objects) { addObjectInfo(body, o); } } return body; }
@Override Body process() throws IOException { Response.Body body = new Response.Body(); if (objects.size() > 0) { body.objects = new ArrayList<>(); for (LfsObject o : objects) { addObjectInfo(body, o); } } return body; }
static TransferHandler forOperation(String operation, LargeFileRepository repository, List<LfsObject> objects) { switch (operation) { case UPLOAD: return new Upload(repository, objects); case DOWNLOAD: return new Download(repository, objects); case VERIFY: default: throw new UnsupportedOperationException(MessageFormat.format( LfsServerText.get().unsupportedOperation, operation)); } }
private void addObjectInfo(Response.Body body, LfsObject o) throws IOException { Response.ObjectInfo info = new Response.ObjectInfo(); body.objects.add(info); info.oid = o.oid; info.size = o.size; LongObjectId oid = LongObjectId.fromString(o.oid); if (repository.getSize(oid) >= 0) { info.actions = new HashMap<>(); info.actions.put(DOWNLOAD, repository.getDownloadAction(oid)); } else { info.error = new Response.Error(); info.error.code = SC_NOT_FOUND; info.error.message = MessageFormat.format( LfsServerText.get().objectNotFound, oid.getName()); } } }
/** {@inheritDoc} */ @Override public Response.Action getUploadAction(AnyLongObjectId oid, long size) { cacheObjectMetaData(oid, size); URL objectUrl = getObjectUrl(oid); Map<String, String> headers = new HashMap<>(); headers.put(X_AMZ_CONTENT_SHA256, oid.getName()); headers.put(HDR_CONTENT_LENGTH, Long.toString(size)); headers.put(X_AMZ_STORAGE_CLASS, s3Config.getStorageClass()); headers.put(HttpSupport.HDR_CONTENT_TYPE, "application/octet-stream"); //$NON-NLS-1$ headers = SignerV4.createHeaderAuthorization(s3Config, objectUrl, METHOD_PUT, headers, oid.getName()); Response.Action a = new Response.Action(); a.href = objectUrl.toString(); a.header = new HashMap<>(); a.header.putAll(headers); return a; }
@Override public Response.Action getDownloadAction(AnyLongObjectId oid) { URL endpointUrl = getObjectUrl(oid); Map<String, String> queryParams = new HashMap<String, String>(); queryParams.put(X_AMZ_EXPIRES, Integer.toString(s3Config.getExpirationSeconds())); Map<String, String> headers = new HashMap<String, String>(); String authorizationQueryParameters = SignerV4.createAuthorizationQuery( s3Config, endpointUrl, METHOD_GET, headers, queryParams, UNSIGNED_PAYLOAD); Response.Action a = new Response.Action(); a.href = endpointUrl.toString() + "?" + authorizationQueryParameters; //$NON-NLS-1$ return a; }
private void addObjectInfo(Response.Body body, LfsObject o) throws IOException { Response.ObjectInfo info = new Response.ObjectInfo(); body.objects.add(info); info.oid = o.oid; info.size = o.size; LongObjectId oid = LongObjectId.fromString(o.oid); if (repository.getSize(oid) == -1) { info.actions = new HashMap<>(); info.actions.put(UPLOAD, repository.getUploadAction(oid, o.size)); Action verify = repository.getVerifyAction(oid); if (verify != null) { info.actions.put(VERIFY, verify); } } } }
LfsRequest request = LfsGson.fromJson(r, LfsRequest.class); String path = req.getPathInfo(); LargeFileRepository repo = null; try { repo = getLargeFileRepository(request, path, req.getHeader(HDR_AUTHORIZATION)); if (repo == null) { .forOperation(request.operation, repo, request.objects); LfsGson.toJson(handler.process(), w); } catch (LfsValidationError e) { sendError(res, w, SC_UNPROCESSABLE_ENTITY, e.getMessage()); } catch (LfsRepositoryNotFound e) { sendError(res, w, SC_NOT_FOUND, e.getMessage()); } catch (LfsRepositoryReadOnly e) { sendError(res, w, SC_FORBIDDEN, e.getMessage()); } catch (LfsRateLimitExceeded e) { sendError(res, w, SC_RATE_LIMIT_EXCEEDED, e.getMessage()); } catch (LfsBandwidthLimitExceeded e) { sendError(res, w, SC_BANDWIDTH_LIMIT_EXCEEDED, e.getMessage()); } catch (LfsInsufficientStorage e) { sendError(res, w, SC_INSUFFICIENT_STORAGE, e.getMessage()); } catch (LfsUnavailable e) { sendError(res, w, SC_SERVICE_UNAVAILABLE, e.getMessage()); } catch (LfsUnauthorized e) { sendError(res, w, SC_UNAUTHORIZED, e.getMessage()); } catch (LfsException e) { sendError(res, w, SC_INTERNAL_SERVER_ERROR, e.getMessage());
LargeFileRepository repo = null; try { repo = getLargeFileRepository(request, path); if (repo == null) { throw new LfsException("unexpected error"); //$NON-NLS-1$ .forOperation(request.operation, repo, request.objects); gson.toJson(handler.process(), w); } catch (LfsValidationError e) { sendError(res, w, SC_UNPROCESSABLE_ENTITY, e.getMessage()); } catch (LfsRepositoryNotFound e) { sendError(res, w, SC_NOT_FOUND, e.getMessage()); } catch (LfsRepositoryReadOnly e) { sendError(res, w, SC_FORBIDDEN, e.getMessage()); } catch (LfsRateLimitExceeded e) { sendError(res, w, SC_RATE_LIMIT_EXCEEDED, e.getMessage()); } catch (LfsBandwidthLimitExceeded e) { sendError(res, w, SC_BANDWIDTH_LIMIT_EXCEEDED, e.getMessage()); } catch (LfsInsufficientStorage e) { sendError(res, w, SC_INSUFFICIENT_STORAGE, e.getMessage()); } catch (LfsUnavailable e) { sendError(res, w, SC_SERVICE_UNAVAILABLE, e.getMessage()); } catch (LfsException e) { sendError(res, w, SC_INTERNAL_SERVER_ERROR, e.getMessage()); } finally { w.flush();
/** * Constructs the Download / Upload actions to be supplied to the client. */ private Response.Action getAction(AnyLongObjectId id) { //LFS protocol has to provide the information on where to put or get the actual content, i. e. //the actual URI for up- and download. Response.Action a = new Response.Action(); a.href = baseUri + id.getName(); return a; } }
private void sendError(HttpServletResponse rsp, Writer writer, int status, String message) { rsp.setStatus(status); gson.toJson(new Error(message), writer); }
private void addObjectInfo(Response.Body body, LfsObject o) throws IOException { Response.ObjectInfo info = new Response.ObjectInfo(); body.objects.add(info); info.oid = o.oid; info.size = o.size; LongObjectId oid = LongObjectId.fromString(o.oid); if (repository.getSize(oid) >= 0) { info.actions = new HashMap<>(); info.actions.put(DOWNLOAD, repository.getDownloadAction(oid)); } else { info.error = new Response.Error(); info.error.code = SC_NOT_FOUND; info.error.message = MessageFormat.format( LfsServerText.get().objectNotFound, oid.getName()); } } }
@Override public Response.Action getUploadAction(AnyLongObjectId oid, long size) { cacheObjectMetaData(oid, size); URL objectUrl = getObjectUrl(oid); Map<String, String> headers = new HashMap<String, String>(); headers.put(X_AMZ_CONTENT_SHA256, oid.getName()); headers.put(HDR_CONTENT_LENGTH, Long.toString(size)); headers.put(X_AMZ_STORAGE_CLASS, s3Config.getStorageClass()); headers.put(HttpSupport.HDR_CONTENT_TYPE, "application/octet-stream"); //$NON-NLS-1$ headers = SignerV4.createHeaderAuthorization(s3Config, objectUrl, METHOD_PUT, headers, oid.getName()); Response.Action a = new Response.Action(); a.href = objectUrl.toString(); a.header = new HashMap<>(); a.header.putAll(headers); return a; }
/** {@inheritDoc} */ @Override public Response.Action getDownloadAction(AnyLongObjectId oid) { URL endpointUrl = getObjectUrl(oid); Map<String, String> queryParams = new HashMap<>(); queryParams.put(X_AMZ_EXPIRES, Integer.toString(s3Config.getExpirationSeconds())); Map<String, String> headers = new HashMap<>(); String authorizationQueryParameters = SignerV4.createAuthorizationQuery( s3Config, endpointUrl, METHOD_GET, headers, queryParams, UNSIGNED_PAYLOAD); Response.Action a = new Response.Action(); a.href = endpointUrl.toString() + "?" + authorizationQueryParameters; //$NON-NLS-1$ return a; }
private void addObjectInfo(Response.Body body, LfsObject o) throws IOException { Response.ObjectInfo info = new Response.ObjectInfo(); body.objects.add(info); info.oid = o.oid; info.size = o.size; LongObjectId oid = LongObjectId.fromString(o.oid); if (repository.getSize(oid) == -1) { info.actions = new HashMap<>(); info.actions.put(UPLOAD, repository.getUploadAction(oid, o.size)); Action verify = repository.getVerifyAction(oid); if (verify != null) { info.actions.put(VERIFY, verify); } } } }
static TransferHandler forOperation(String operation, LargeFileRepository repository, List<LfsObject> objects) { switch (operation) { case TransferHandler.UPLOAD: return new Upload(repository, objects); case TransferHandler.DOWNLOAD: return new Download(repository, objects); case TransferHandler.VERIFY: default: throw new UnsupportedOperationException(MessageFormat.format( LfsServerText.get().unsupportedOperation, operation)); } }
@Override Body process() throws IOException { Response.Body body = new Response.Body(); if (objects.size() > 0) { body.objects = new ArrayList<>(); for (LfsObject o : objects) { addObjectInfo(body, o); } } return body; }
@Override Body process() throws IOException { Response.Body body = new Response.Body(); if (objects.size() > 0) { body.objects = new ArrayList<>(); for (LfsObject o : objects) { addObjectInfo(body, o); } } return body; }
private Response.Action getAction(AnyLongObjectId id) { Response.Action a = new Response.Action(); a.href = url + id.getName(); a.header = Collections.singletonMap(HDR_AUTHORIZATION, "not:required"); //$NON-NLS-1$ return a; }
private Response.Action getAction(AnyLongObjectId id) { Response.Action a = new Response.Action(); a.href = url + id.getName(); a.header = Collections.singletonMap(HDR_AUTHORIZATION, "not:required"); //$NON-NLS-1$ return a; }