/** * Builds a packages.json file as a {@code Content} instance containing the actual JSON for the given providers. */ private Content buildPackagesJson(final Repository repository, final Set<String> names) throws IOException { Map<String, Object> packagesJson = new LinkedHashMap<>(); packagesJson.put(PROVIDERS_URL_KEY, repository.getUrl() + PACKAGE_JSON_PATH); packagesJson.put(PROVIDERS_KEY, names.stream() .collect(Collectors.toMap((each) -> each, (each) -> singletonMap(SHA256_KEY, null)))); return new Content(new StringPayload(mapper.writeValueAsString(packagesJson), ContentTypes.APPLICATION_JSON)); }
/** * Rewrites the provider JSON so that source entries are removed and dist entries are pointed back to Nexus. */ public Payload rewriteProviderJson(final Repository repository, final Payload payload) throws IOException { Map<String, Object> json = parseJson(payload); if (json.get(PACKAGES_KEY) instanceof Map) { Map<String, Object> packagesMap = (Map<String, Object>) json.get(PACKAGES_KEY); for (String packageName : packagesMap.keySet()) { Map<String, Object> packageVersions = (Map<String, Object>) packagesMap.get(packageName); for (String packageVersion : packageVersions.keySet()) { // TODO: Make this more robust, right now it makes a lot of assumptions and doesn't deal with bad things well Map<String, Object> versionInfo = (Map<String, Object>) packageVersions.get(packageVersion); versionInfo.remove(SOURCE_KEY); // TODO: For now don't allow sources, probably should make this configurable? Map<String, Object> distInfo = (Map<String, Object>) versionInfo.get(DIST_KEY); if (distInfo != null && ZIP_TYPE.equals(distInfo.get(TYPE_KEY))) { versionInfo.put(DIST_KEY, buildDistInfo(repository, packageName, packageVersion, (String) distInfo.get(REFERENCE_KEY), (String) distInfo.get(SHASUM_KEY), ZIP_TYPE)); } } } } return new StringPayload(mapper.writeValueAsString(json), payload.getContentType()); }
return new Content(new StringPayload(mapper.writeValueAsString(singletonMap(PACKAGES_KEY, packages)), ContentTypes.APPLICATION_JSON));
private String generatePom(final Repository repository, final String basePath, final String groupId, final String artifactId, final String version, @Nullable final String packaging) throws IOException { log.debug("Generating pom for {} {} {} with packaging {}", groupId, artifactId, version, packaging); String pom = mavenPomGenerator.generatePom(groupId, artifactId, version, packaging); MavenPath mavenPath = parser.parsePath(basePath + ".pom"); storeAssetContent(repository, mavenPath, new StringPayload(pom, "text/xml")); return mavenPath.getPath(); }
public static void addHashes(final MavenFacet mavenFacet, final MavenPath mavenPath, final Map<HashAlgorithm, HashCode> hashCodes, final DateTime now) throws IOException { for (HashType hashType : HashType.values()) { final HashCode hashCode = hashCodes.get(hashType.getHashAlgorithm()); if (hashCode != null) { final Content hashContent = new Content( new StringPayload(hashCode.toString(), Constants.CHECKSUM_CONTENT_TYPE)); hashContent.getAttributes().set(Content.CONTENT_LAST_MODIFIED, now); mavenFacet.put(mavenPath.hash(hashType), hashContent); } } }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { TemplateParameters params = templateHelper.parameters(); params.set("repository", context.getRepository()); String html = templateHelper.render(template, params); return HttpResponses.ok(new StringPayload(html, "text/html")); }
@Override protected Response doGet(@Nonnull final Context context, @Nonnull final DispatchedRepositories dispatched) throws Exception { checkNotNull(context); checkNotNull(dispatched); Request request = context.getRequest(); Parameters parameters = request.getParameters(); String text = npmSearchParameterExtractor.extractText(parameters); NpmSearchResponse response; if (text.isEmpty()) { response = npmSearchResponseFactory.buildEmptyResponse(); } else { response = searchMembers(context, dispatched, parameters); } String content = npmSearchResponseMapper.writeString(response); return HttpResponses.ok(new StringPayload(content, ContentTypes.APPLICATION_JSON)); }
return new Content(new StringPayload(mapper.writeValueAsString(singletonMap(PACKAGES_KEY, packages)), ContentTypes.APPLICATION_JSON));
final StringPayload mavenChecksum = new StringPayload(assetChecksum, Constants.CHECKSUM_CONTENT_TYPE); mavenFacet.put(checksumPath, mavenChecksum);
/** * Writes passed in metadata as XML. */ public static void write(final Repository repository, final MavenPath mavenPath, final Metadata metadata) throws IOException { MavenFacet mavenFacet = repository.facet(MavenFacet.class); final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); MavenModels.writeMetadata(buffer, metadata); mavenFacet.put(mavenPath, new BytesPayload(buffer.toByteArray(), MavenMimeRulesSource.METADATA_TYPE)); final Map<HashAlgorithm, HashCode> hashCodes = mavenFacet.get(mavenPath).getAttributes() .require(Content.CONTENT_HASH_CODES_MAP, Content.T_CONTENT_HASH_CODES_MAP); checkState(hashCodes != null, "hashCodes"); for (HashType hashType : HashType.values()) { MavenPath checksumPath = mavenPath.hash(hashType); HashCode hashCode = hashCodes.get(hashType.getHashAlgorithm()); checkState(hashCode != null, "hashCode: type=%s", hashType); mavenFacet.put(checksumPath, new StringPayload(hashCode.toString(), Constants.CHECKSUM_CONTENT_TYPE)); } }
return new Content(new StringPayload(content, ContentTypes.APPLICATION_JSON));