• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

DataBiosphere / consent / #5525

22 Jan 2025 01:20PM UTC coverage: 79.195% (+0.07%) from 79.124%
#5525

push

web-flow
DT-1143: Passthrough APIs for support requests and content uploads (#2448)

59 of 62 new or added lines in 12 files covered. (95.16%)

2 existing lines in 2 files now uncovered.

10251 of 12944 relevant lines covered (79.19%)

0.79 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

84.21
/src/main/java/org/broadinstitute/consent/http/resources/SupportResource.java
1
package org.broadinstitute.consent.http.resources;
2

3
import com.google.api.client.http.HttpStatusCodes;
4
import com.google.gson.Gson;
5
import com.google.gson.JsonObject;
6
import com.google.inject.Inject;
7
import jakarta.ws.rs.Consumes;
8
import jakarta.ws.rs.POST;
9
import jakarta.ws.rs.Path;
10
import jakarta.ws.rs.Produces;
11
import jakarta.ws.rs.core.MediaType;
12
import jakarta.ws.rs.core.Response;
13
import org.broadinstitute.consent.http.models.support.DuosTicket;
14
import org.broadinstitute.consent.http.models.support.TicketFactory;
15
import org.broadinstitute.consent.http.models.support.TicketFields;
16
import org.broadinstitute.consent.http.service.SupportRequestService;
17
import org.broadinstitute.consent.http.util.gson.GsonUtil;
18
import org.owasp.fileio.FileValidator;
19
import org.zendesk.client.v2.model.Request;
20

21
@Path("support")
22
public class SupportResource extends Resource {
23

24
  private final SupportRequestService supportRequestService;
25
  private static final Gson gson = GsonUtil.getInstance();
1✔
26
  static final long MAX_FILE_UPLOAD_SIZE = new FileValidator().getMaxFileUploadSize();
1✔
27

28
  @Inject
29
  public SupportResource(SupportRequestService supportRequestService) {
1✔
30
    this.supportRequestService = supportRequestService;
1✔
31
  }
1✔
32

33
  @POST
34
  @Path("request")
35
  @Consumes(MediaType.APPLICATION_JSON)
36
  @Produces(MediaType.APPLICATION_JSON)
37
  public Response postRequest(String body) {
38
    try {
39
      TicketFields ticketFields = gson.fromJson(body, TicketFields.class);
1✔
40
      DuosTicket ticket = TicketFactory.createTicket(ticketFields);
1✔
41
      logInfo("Support Request Ticket: " + ticket);
1✔
42
      Request request = supportRequestService.postTicketToSupport(ticket);
1✔
43
      return Response.status(HttpStatusCodes.STATUS_CODE_CREATED).entity(request).build();
1✔
44
    } catch (Exception e) {
1✔
45
      return createExceptionResponse(e);
1✔
46
    }
47
  }
48

49
  @POST
50
  @Path("upload")
51
  @Consumes("application/binary")
52
  @Produces(MediaType.APPLICATION_JSON)
53
  public Response postUpload(byte[] content) {
54
    try {
55
      if (content.length > MAX_FILE_UPLOAD_SIZE) {
1✔
NEW
56
        return Response.status(Response.Status.BAD_REQUEST).build();
×
57
      }
58
      JsonObject token = supportRequestService.postAttachmentToSupport(content);
1✔
59
      logInfo("Support Request Content Upload: " + content.length + " bytes");
1✔
60
      return Response.status(HttpStatusCodes.STATUS_CODE_CREATED).entity(token).build();
1✔
NEW
61
    } catch (Exception e) {
×
NEW
62
      return createExceptionResponse(e);
×
63
    }
64
  }
65

66
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc