如何使用RAlly API将屏幕截图添加到RallyDev中

时间:2014-08-14 18:40:35

标签: rally

如何使用拉力赛休息api将截图上传到集会开发中。我能够记录缺陷。我需要记录截图

1 个答案:

答案 0 :(得分:0)

以下是使用Rally REST Api Tookit for Java创建缺陷然后在缺陷上创建附件的示例:

public class CreateDefectAddAttachment{
    public static void main(String[] args) throws URISyntaxException, IOException {


           String host = "https://rally1.rallydev.com";
           String apiKey = "_abc123";
           String projectRef = "/project/12352608219";
           String applicationName = "RestExample_createDefectAttachScreenshot";


           RallyRestApi restApi = new RallyRestApi(new URI(host),apiKey);
           restApi.setApplicationName(applicationName);   

         //Read User
           QueryRequest userRequest = new QueryRequest("User");
           userRequest.setQueryFilter(new QueryFilter("UserName", "=", "user@company.com"));
           QueryResponse userQueryResponse = restApi.query(userRequest);
           JsonArray userQueryResults = userQueryResponse.getResults();
           JsonElement userQueryElement = userQueryResults.get(0);
           JsonObject userQueryObject = userQueryElement.getAsJsonObject();
           String userRef = userQueryObject.get("_ref").getAsString();



        try {
            for (int i=0; i<1; i++) {

                //Create a defect
                JsonObject newDefect = new JsonObject();
                newDefect.addProperty("Name", "bug1234");
                newDefect.addProperty("Project", projectRef); 


                CreateRequest createRequest = new CreateRequest("defect", newDefect);
                CreateResponse createResponse = restApi.create(createRequest);  
                if (createResponse.wasSuccessful()) {

                    System.out.println(String.format("Created %s", createResponse.getObject().get("_ref").getAsString()));          

                    //Read defect
                    String ref = Ref.getRelativeRef(createResponse.getObject().get("_ref").getAsString());
                    System.out.println(String.format("\nReading Defect %s...", ref));  

                    String imageFilePath = "C:/";
                    String imageFileName = "pic.png";
                    String fullImageFile = imageFilePath + imageFileName;
                    String imageBase64String;
                    long attachmentSize;

                    // Open file
                    RandomAccessFile myImageFileHandle = new RandomAccessFile(fullImageFile, "r");

                    try {
                        long longLength = myImageFileHandle.length();
                        long maxLength = 5000000;
                        if (longLength >= maxLength) throw new IOException("File size >= 5 MB Upper limit for Rally.");
                        int fileLength = (int) longLength;            

                        // Read file and return data
                        byte[] fileBytes = new byte[fileLength];
                        myImageFileHandle.readFully(fileBytes);
                        imageBase64String = Base64.encodeBase64String(fileBytes);
                        attachmentSize = fileLength;

                        // First create AttachmentContent from image string
                        JsonObject myAttachmentContent = new JsonObject();
                        myAttachmentContent.addProperty("Content", imageBase64String);
                        CreateRequest attachmentContentCreateRequest = new CreateRequest("AttachmentContent", myAttachmentContent);
                        CreateResponse attachmentContentResponse = restApi.create(attachmentContentCreateRequest);
                        String myAttachmentContentRef = attachmentContentResponse.getObject().get("_ref").getAsString();
                        System.out.println("Attachment Content created: " + myAttachmentContentRef);            

                        //Create the Attachment
                        JsonObject myAttachment = new JsonObject();
                        myAttachment.addProperty("Artifact", ref);
                         myAttachment.addProperty("Content", myAttachmentContentRef);
                         myAttachment.addProperty("Name", "AttachmentFromREST.png");
                         myAttachment.addProperty("Description", "Attachment From REST");
                         myAttachment.addProperty("ContentType","image/png");
                         myAttachment.addProperty("Size", attachmentSize);
                         myAttachment.addProperty("User", userRef);         

                         CreateRequest attachmentCreateRequest = new CreateRequest("Attachment", myAttachment);
                         CreateResponse attachmentResponse = restApi.create(attachmentCreateRequest);
                         String myAttachmentRef = attachmentResponse.getObject().get("_ref").getAsString();
                         System.out.println("Attachment  created: " + myAttachmentRef);  

                         if (attachmentResponse.wasSuccessful()) {
                            System.out.println("Successfully created Attachment");
                         } else {
                            String[] attachmentContentErrors;
                            attachmentContentErrors = attachmentResponse.getErrors();
                            System.out.println("Error occurred creating Attachment: ");
                            for (int j=0; j<attachmentContentErrors.length;j++) {
                                System.out.println(attachmentContentErrors[j]);
                            }
                         }
                    }catch (Exception e) {
                        System.out.println("Exception occurred while attempting to create Content and/or Attachment: ");
                        e.printStackTrace();            
                    }

                } else {
                    String[] createErrors;
                    createErrors = createResponse.getErrors();
                    System.out.println("Error occurred creating a defect: ");
                    for (int j=0; i<createErrors.length;j++) {
                        System.out.println(createErrors[j]);
                    }
                }
            }

        } finally {
            //Release all resources
            restApi.close();
        }   

    } 
}