Esempio n. 1
0
 public NexusCommand(Processor parent, NexusOptions options) throws Exception {
   super(parent);
   this.options = options;
   if (this.options == null) {
     error("No -u/--url set");
     return;
   }
   HttpClient client = new HttpClient();
   client.readSettings(parent);
   this.nexus = new Nexus(options.url(), client);
 }
  public boolean delete(String path) throws Exception {
    URL url = new URL(base + path);
    TaggedData go = client.build().put().delete().get(TaggedData.class).go(url);
    if (go == null) return false;

    if (go.getResponseCode() == HttpURLConnection.HTTP_OK
        || go.getResponseCode() == HttpURLConnection.HTTP_NO_CONTENT) {
      client.build().delete().async(new URL(base + path + ".sha1"));
      client.build().delete().async(new URL(base + path + ".md5"));
      return true;
    }

    throw new HttpRequestException(go);
  }
  public TaggedData fetch(String path, File file) throws Exception {
    URL url = new URL(base + path);
    int n = 0;
    while (true)
      try {
        reporter.trace("Fetching %s", path);

        TaggedData tag =
            client
                .build()
                .headers("User-Agent", "Bnd")
                .useCache(file, DEFAULT_MAX_STALE)
                .asTag()
                .go(url);
        reporter.trace("Fetched %s", tag);
        if (tag.getState() == State.UPDATED) {

          // https://issues.sonatype.org/browse/NEXUS-4900

          if (!path.endsWith("/maven-metadata.xml")) {
            URL shaUrl = new URL(base + path + ".sha1");
            URL md5Url = new URL(base + path + ".md5");
            String sha = client.build().asString().timeout(15000).go(shaUrl);
            if (sha != null) {
              String fileSha = SHA1.digest(file).asHex();
              checkDigest(fileSha, sha, file);
            } else {
              String md5 = client.build().asString().timeout(15000).go(md5Url);
              if (md5 != null) {
                String fileMD5 = MD5.digest(file).asHex();
                checkDigest(fileMD5, md5, file);
              }
            }
          }
        }
        return tag;
      } catch (Exception e) {
        n++;
        if (n > 3) throw e;
        Thread.sleep(1000 * n);
      }
  }
  public void store(File file, String path) throws Exception {

    int n = 0;
    URL url = new URL(base + path);
    SHA1 sha1 = SHA1.digest(file);
    MD5 md5 = MD5.digest(file);

    TaggedData go = client.build().put().upload(file).updateTag().asTag().go(url);

    switch (go.getState()) {
      case NOT_FOUND:
      case OTHER:
        throw new IOException("Could not store " + path + " from " + file + " with " + go);

      case UNMODIFIED:
      case UPDATED:
      default:
        break;
    }
    client.build().put().upload(sha1.asHex()).asTag().go(new URL(base + path + ".sha1"));
    client.build().put().upload(md5.asHex()).asTag().go(new URL(base + path + ".md5"));
  }
 public String getUser() throws Exception {
   return client.getUserFor(base);
 }