@Override
  public void handlePut(RestRequest restRequest, RestResponseChannel restResponseChannel) {
    if (shouldProceed(restRequest, restResponseChannel)) {
      try {
        //set the internal key during preProcessRequest.
        restRequest.setArg(InternalKeys.SEND_TRACKING_INFO, "true");
        if (CONTINUE.equals(restRequest.getArgs().get(EXPECT))) {
          restResponseChannel.setStatus(ResponseStatus.Continue);
          restResponseChannel.setHeader(RestUtils.Headers.CONTENT_LENGTH, 0);
          handleResponse(restRequest, restResponseChannel, null, null);
          return;
        }
        restRequest.setArg(RestUtils.InternalKeys.TARGET_ACCOUNT_KEY, InMemAccountService.UNKNOWN_ACCOUNT);
        restRequest.setArg(RestUtils.InternalKeys.TARGET_CONTAINER_KEY, Container.UNKNOWN_CONTAINER);
        BlobProperties blobProperties = RestUtils.buildBlobProperties(restRequest.getArgs());
        byte[] usermetadata = RestUtils.buildUserMetadata(restRequest.getArgs());
        router.putBlob(null, blobProperties, usermetadata, restRequest, new PutBlobOptionsBuilder().build(),
            new MockPostCallback(this, restRequest, restResponseChannel, blobProperties), null);
      } catch (RestServiceException e) {
        handleResponse(restRequest, restResponseChannel, null, e);
      }
    }
  }
{@inheritDoc}
<p/>
PUT is not supported by {@link MockRestRequestService}.
@param restRequest the {@link RestRequest} that needs to be handled.
@param restResponseChannel the {@link RestResponseChannel} over which response to {@code restRequest} can be sent.
ambry-api/src/test/java/com/github/ambry/rest/MockRestRequestService.java