Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JENKINS-64388] Update endpoints after AppCenter changes #60

Merged
merged 24 commits into from
Jan 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
134cee9
[JENKINS-64388] Move non null builder parameters
mezpahlan Dec 8, 2020
e66184a
[JENKINS-64388] Update releaseUploadCreate task
mezpahlan Dec 8, 2020
48126e9
[JENKINS-64388] Add SetMetadataTask
mezpahlan Dec 8, 2020
c499d64
[JENKINS-64388] Add new service definitions for AppCenter
mezpahlan Dec 9, 2020
8496e82
[JENKINS-64388] Disable tests temporarily
mezpahlan Dec 9, 2020
f6e5a08
[JENKINS-64388] Add additional API models
mezpahlan Dec 9, 2020
3ca0848
[JENKINS-64388] Add additional tasks
mezpahlan Dec 9, 2020
bfeb376
[JENKINS-64388] Add new internal tasks to public task
mezpahlan Dec 9, 2020
d704ac9
[JENKINS-64388] Add chunked support for app uploads
mezpahlan Dec 9, 2020
57325b9
[JENKINS-64388] Fix integration tests
mezpahlan Dec 9, 2020
9f236ef
[JENKINS-64388] Add tests for FinishReleaseTask
mezpahlan Dec 10, 2020
97243e3
[JENKINS-64388] Remove CommitUploadResourceTask.java
mezpahlan Dec 10, 2020
b2e5fc4
[JENKINS-64388] Remove redundant statements in test
mezpahlan Dec 10, 2020
87a3bd1
[JENKINS-64388] Add test for PollForReleaseTaskTest
mezpahlan Dec 10, 2020
0fb2760
[JENKINS-64388] Add test for RemoteFileUtils
mezpahlan Dec 10, 2020
86052a4
[JENKINS-64388] Add test for SetMetadataTask
mezpahlan Dec 13, 2020
e0afbdc
[JENKINS-64388] Add test for UpdateReleaseTask
mezpahlan Dec 13, 2020
3727e5d
[JENKINS-64388] Fix test for CreateUploadResourceTaskTest
mezpahlan Dec 13, 2020
fd99e30
[JENKINS-64388] Fix test for UploadAppToResourceTaskTest
mezpahlan Dec 13, 2020
8895c9b
[JENKINS-64388] Remove ignore annotation
mezpahlan Dec 13, 2020
25f56ef
[JENKINS-64388] Add OS check for file size
mezpahlan Dec 13, 2020
780c3ad
[JENKINS-64388] Read file in chunks more efficiently using Okio
mezpahlan Dec 20, 2020
6fe3f96
[JENKINS-64388] Implement an exponential backoff for polling.
mezpahlan Dec 20, 2020
38e2033
[JENKINS-64388] Add count of number of blocks to log
mezpahlan Dec 20, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,31 +1,44 @@
package io.jenkins.plugins.appcenter.api;

import io.jenkins.plugins.appcenter.model.appcenter.ReleaseDetailsUpdateResponse;
import io.jenkins.plugins.appcenter.model.appcenter.ReleaseUpdateRequest;
import io.jenkins.plugins.appcenter.model.appcenter.ReleaseUploadBeginRequest;
import io.jenkins.plugins.appcenter.model.appcenter.ReleaseUploadBeginResponse;
import io.jenkins.plugins.appcenter.model.appcenter.ReleaseUploadEndRequest;
import io.jenkins.plugins.appcenter.model.appcenter.ReleaseUploadEndResponse;
import io.jenkins.plugins.appcenter.model.appcenter.SymbolUpload;
import io.jenkins.plugins.appcenter.model.appcenter.SymbolUploadBeginRequest;
import io.jenkins.plugins.appcenter.model.appcenter.SymbolUploadBeginResponse;
import io.jenkins.plugins.appcenter.model.appcenter.SymbolUploadEndRequest;
import retrofit2.http.Body;
import retrofit2.http.PATCH;
import retrofit2.http.POST;
import retrofit2.http.Path;
import io.jenkins.plugins.appcenter.model.appcenter.*;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.http.*;

import javax.annotation.Nonnull;
import java.util.concurrent.CompletableFuture;

public interface AppCenterService {

@POST("v0.1/apps/{owner_name}/{app_name}/release_uploads")
@POST("v0.1/apps/{owner_name}/{app_name}/uploads/releases")
CompletableFuture<ReleaseUploadBeginResponse> releaseUploadsCreate(
@Path("owner_name") @Nonnull String user,
@Path("app_name") @Nonnull String appName,
@Body @Nonnull ReleaseUploadBeginRequest releaseUploadBeginRequest);

@POST
CompletableFuture<SetMetadataResponse> setMetaData(@Url @Nonnull String url);

@Headers("Content-Type: application/octet-stream")
@POST
CompletableFuture<ResponseBody> uploadApp(@Url @Nonnull String url, @Body @Nonnull RequestBody file);

@POST
CompletableFuture<ResponseBody> finishRelease(@Url @Nonnull String url);

@PATCH("v0.1/apps/{owner_name}/{app_name}/uploads/releases/{upload_id}")
CompletableFuture<UpdateReleaseUploadResponse> updateReleaseUpload(
@Path("owner_name") @Nonnull String user,
@Path("app_name") @Nonnull String appName,
@Path("upload_id") @Nonnull String uploadId,
@Body @Nonnull UpdateReleaseUploadRequest updateReleaseUploadRequest);

@GET("v0.1/apps/{owner_name}/{app_name}/uploads/releases/{upload_id}")
CompletableFuture<PollForReleaseResponse> pollForRelease(
@Path("owner_name") @Nonnull String user,
@Path("app_name") @Nonnull String appName,
@Path("upload_id") @Nonnull String uploadId);

@PATCH("v0.1/apps/{owner_name}/{app_name}/release_uploads/{upload_id}")
CompletableFuture<ReleaseUploadEndResponse> releaseUploadsComplete(
@Path("owner_name") @Nonnull String user,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package io.jenkins.plugins.appcenter.model.appcenter;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Objects;

public final class PollForReleaseResponse {
@Nonnull
public final String id;
@Nonnull
public final StatusEnum upload_status;
@Nullable
public final String error_details;
@Nullable
public final Integer release_distinct_id;
@Nullable
public final String release_url;

public PollForReleaseResponse(@Nonnull String id,
@Nonnull StatusEnum upload_status,
@Nullable String error_details,
@Nullable Integer release_distinct_id,
@Nullable String release_url) {

this.id = id;
this.upload_status = upload_status;
this.error_details = error_details;
this.release_distinct_id = release_distinct_id;
this.release_url = release_url;
}

@Override
public String toString() {
return "PollForReleaseResponse{" +
"id='" + id + '\'' +
", upload_status=" + upload_status +
", error_details='" + error_details + '\'' +
", release_distinct_id=" + release_distinct_id +
", release_url='" + release_url + '\'' +
'}';
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PollForReleaseResponse that = (PollForReleaseResponse) o;
return id.equals(that.id) && upload_status == that.upload_status && Objects.equals(error_details, that.error_details) && Objects.equals(release_distinct_id, that.release_distinct_id) && Objects.equals(release_url, that.release_url);
}

@Override
public int hashCode() {
return Objects.hash(id, upload_status, error_details, release_distinct_id, release_url);
}

public enum StatusEnum {
uploadStarted,
uploadFinished,
readyToBePublished,
malwareDetected,
error
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,19 @@

public final class ReleaseUploadBeginRequest {

@Nullable
public final Integer release_id;
@Nullable
public final String build_version;
@Nullable
public final String build_number;

public ReleaseUploadBeginRequest(@Nullable Integer releaseId, @Nullable String buildVersion, @Nullable String buildNumber) {
this.release_id = releaseId;
public ReleaseUploadBeginRequest(@Nullable String buildVersion, @Nullable String buildNumber) {
this.build_version = buildVersion;
this.build_number = buildNumber;
}

@Override
public String toString() {
return "ReleaseUploadBeginRequest{" +
"release_id=" + release_id +
", build_version='" + build_version + '\'' +
", build_number='" + build_number + '\'' +
'}';
Expand All @@ -32,13 +28,12 @@ public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ReleaseUploadBeginRequest that = (ReleaseUploadBeginRequest) o;
return Objects.equals(release_id, that.release_id) &&
Objects.equals(build_version, that.build_version) &&
return Objects.equals(build_version, that.build_version) &&
Objects.equals(build_number, that.build_number);
}

@Override
public int hashCode() {
return Objects.hash(release_id, build_version, build_number);
return Objects.hash(build_version, build_number);
}
}
Original file line number Diff line number Diff line change
@@ -1,37 +1,36 @@
package io.jenkins.plugins.appcenter.model.appcenter;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Objects;

public final class ReleaseUploadBeginResponse {
@Nonnull
public final String upload_id;
public final String id;
@Nonnull
public final String upload_url;
@Nullable
public final String asset_id;
@Nullable
public final String asset_domain;
@Nullable
public final String asset_token;
public final String upload_domain;
@Nonnull
public final String token;
@Nonnull
public final String url_encoded_token;
@Nonnull
public final String package_asset_id;

public ReleaseUploadBeginResponse(@Nonnull String uploadId, @Nonnull String uploadUrl, @Nullable String assetId, @Nullable String assetDomain, @Nullable String assetToken) {
this.upload_id = uploadId;
this.upload_url = uploadUrl;
this.asset_id = assetId;
this.asset_domain = assetDomain;
this.asset_token = assetToken;
public ReleaseUploadBeginResponse(@Nonnull String id, @Nonnull String uploadDomain, @Nonnull String token, @Nonnull String urlEncodedToken, @Nonnull String packageAssetId) {
this.id = id;
this.upload_domain = uploadDomain;
this.token = token;
this.url_encoded_token = urlEncodedToken;
this.package_asset_id = packageAssetId;
}

@Override
public String toString() {
return "ReleaseUploadBeginResponse{" +
"upload_id='" + upload_id + '\'' +
", upload_url='" + upload_url + '\'' +
", asset_id='" + asset_id + '\'' +
", asset_domain='" + asset_domain + '\'' +
", asset_token='" + asset_token + '\'' +
"id='" + id + '\'' +
", upload_domain='" + upload_domain + '\'' +
", token='" + token + '\'' +
", url_encoded_token='" + url_encoded_token + '\'' +
", package_asset_id='" + package_asset_id + '\'' +
'}';
}

Expand All @@ -40,15 +39,15 @@ public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ReleaseUploadBeginResponse that = (ReleaseUploadBeginResponse) o;
return upload_id.equals(that.upload_id) &&
upload_url.equals(that.upload_url) &&
Objects.equals(asset_id, that.asset_id) &&
Objects.equals(asset_domain, that.asset_domain) &&
Objects.equals(asset_token, that.asset_token);
return id.equals(that.id) &&
upload_domain.equals(that.upload_domain) &&
token.equals(that.token) &&
url_encoded_token.equals(that.url_encoded_token) &&
package_asset_id.equals(that.package_asset_id);
}

@Override
public int hashCode() {
return Objects.hash(upload_id, upload_url, asset_id, asset_domain, asset_token);
return Objects.hash(id, upload_domain, token, url_encoded_token, package_asset_id);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package io.jenkins.plugins.appcenter.model.appcenter;

import javax.annotation.Nonnull;
import java.util.Objects;

public final class SetMetadataResponse {
@Nonnull
public final Integer chunk_size;

public SetMetadataResponse(@Nonnull Integer chunkSize) {
this.chunk_size = chunkSize;
}

@Override
public String toString() {
return "SetMetadataResponse{" +
"chunk_size=" + chunk_size +
'}';
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SetMetadataResponse that = (SetMetadataResponse) o;
return chunk_size.equals(that.chunk_size);
}

@Override
public int hashCode() {
return Objects.hash(chunk_size);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package io.jenkins.plugins.appcenter.model.appcenter;

import javax.annotation.Nonnull;
import java.util.Objects;

public final class UpdateReleaseUploadRequest {
@Nonnull
public final StatusEnum upload_status;

public UpdateReleaseUploadRequest(@Nonnull StatusEnum upload_status) {
this.upload_status = upload_status;
}

@Override
public String toString() {
return "UpdateReleaseUploadRequest{" +
"upload_status=" + upload_status +
'}';
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UpdateReleaseUploadRequest that = (UpdateReleaseUploadRequest) o;
return upload_status == that.upload_status;
}

@Override
public int hashCode() {
return Objects.hash(upload_status);
}

public enum StatusEnum {
uploadFinished,
uploadCanceled
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package io.jenkins.plugins.appcenter.model.appcenter;

import javax.annotation.Nonnull;
import java.util.Objects;

public final class UpdateReleaseUploadResponse {
@Nonnull
public final String id;
@Nonnull
public final StatusEnum upload_status;

public UpdateReleaseUploadResponse(@Nonnull String id,
@Nonnull StatusEnum upload_status) {

this.id = id;
this.upload_status = upload_status;
}

@Override
public String toString() {
return "UpdateReleaseUploadResponse{" +
"id='" + id + '\'' +
", upload_status=" + upload_status +
'}';
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UpdateReleaseUploadResponse that = (UpdateReleaseUploadResponse) o;
return id.equals(that.id) && upload_status == that.upload_status;
}

@Override
public int hashCode() {
return Objects.hash(id, upload_status);
}

public enum StatusEnum {
uploadStarted,
uploadFinished,
uploadCanceled,
readyToBePublished,
malwareDetected,
error
}
}
Loading