@POST
    @Path("/{repoName}/{fileName}/issue")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_JSON)
    public String submitIssue(
            @PathParam("repoName") String repoName, 
            @PathParam("fileName") String fileName,
            @FormDataParam("battleScribeVersion") String battleScribeVersion,
            @FormDataParam("platform") String platform,
            @FormDataParam("usingDropbox") String usingDropbox,
            @FormDataParam("issueBody") String issueBody,
            @Context HttpServletRequest request) {
        
        Gson gson = new Gson();
        
        if (StringUtils.isEmpty(repoName)) {
            throw new WebApplicationException(Response.Status.NOT_FOUND);
        }
        if (StringUtils.isEmpty(fileName)) {
            throw new WebApplicationException(Response.Status.NOT_FOUND);
        }
        
        ResponseVm response = new ResponseVm();
        if (StringUtils.isEmpty(battleScribeVersion)) {
            response.setErrorMessage("You must enter the version of BattleScribe you are using.");
        }
        if (StringUtils.isEmpty(platform)) {
            response.setErrorMessage("You must select the platform you use BattleScribe on.");
        }
        if (StringUtils.isEmpty(usingDropbox)) {
            response.setErrorMessage("You must select whether or not you are using Dropbox.");
        }
        if (StringUtils.isEmpty(issueBody)) {
            response.setErrorMessage("You must enter a bug description.");
        }
        
        if (!StringUtils.isEmpty(response.getErrorMessage())) {
            return gson.toJson(response);
        }
        
        try {
            response = dao.createIssue(repoName, fileName, battleScribeVersion, platform, Boolean.parseBoolean(usingDropbox), issueBody);
        }
        catch (NotFoundException e) {
            logger.log(Level.WARNING, e.getMessage(), e);
            response = new ResponseVm();
            response.setErrorMessage("Could not find repository " + repoName + ".");
        }
        catch (IOException e) {
            logger.log(Level.SEVERE, "Failed to submit issue: {0}", e.getMessage());
            response = new ResponseVm();
            response.setErrorMessage("There was an error submitting your bug report. Please try again later.");
        }
        
        return gson.toJson(response);
    }