- import com.google.gson.Gson; 
- import com.google.gson.JsonArray; 
- import com.google.gson.JsonObject; 
- import com.google.gson.JsonParser; 
- import io.restassured.RestAssured; 
- import io.restassured.http.ContentType; 
- import io.restassured.path.json.JsonPath; 
- import io.restassured.response.Response; 
-   
- import java.util.ArrayList; 
-   
- import static io.restassured.RestAssured.given; 
-   
- public class Server { 
-   
-     Gson gson = new Gson(); 
-     JsonParser parser = new JsonParser(); 
-   
-     private boolean useRelaxedHTTP = false; 
-     private String-  persona  = "admin";
 
-     private JsonArray templateJsonArray; 
-     private ArrayList<Template> templates = new ArrayList<>(); 
-   
-         this.clientName = clientName; 
-         this.restUrl = restUrl; 
-         this.username = username; 
-         this.password = password; 
-     } 
-   
-     public void connect() { 
-         RestAssured.baseURI = this.restUrl; 
-   
-         if (useRelaxedHTTP) { 
-             RestAssured.useRelaxedHTTPSValidation();                                                                       // Ignores SSL issues for testing on lab server, not needed for real cloud servers 
-         } 
-                 "\"password\":\"" + this.password + "\"," + 
-                 "\"user_id\":\"" + this.username + "\"," + 
-                 "\"persona\":\"" + this.persona + "\"" + 
-                 "}"; 
-         System- . out- . println("LoginBody: " +-  loginBody );
 
-   
-         Response loginResponse = given(). 
-                 contentType(ContentType.JSON). 
-                 body(loginBody). 
-                 when(). 
-                 put("/session/login"); 
-   
-   
-         String-  loginResponseString  =-  loginResponse. asString();
 
-         System- . out- . println(- loginResponseString );
 
-         JsonPath loginResponseJson = new JsonPath(loginResponseString); 
-         this.xAuthToken = (loginResponseJson.get("X-Auth-Token")); 
-     } 
-   
-     public void getJsonTemplateArrayFromRestApi() { 
-         RestAssured.baseURI = this.restUrl; 
-   
-         Response getTemplatesResponse = null; 
-         boolean noResponse = true; 
-   
-         while (noResponse) { 
-   
-             try { 
-                 getTemplatesResponse = given(). 
-                         contentType(ContentType.JSON). 
-                         header("X-Auth-Token", this.xAuthToken). 
-                         when(). 
-                         get("/templates/search"); 
-   
-                 int statusCode = getTemplatesResponse.getStatusCode(); 
-   
-                 if (statusCode == 200) { 
-                     noResponse = false; 
-                 } else { 
-                     System- . out- . println("Status Code: " +-  statusCode );
 
-                     System- . out- . println(- getTemplatesResponse. asString());
 
-                 } 
-                 e.printStackTrace(); 
-             } 
-         } 
-   
-         String-  getTemplateResponseString  =-  getTemplatesResponse. asString();
 
-         JsonObject getTemplateResponseDataObject = this.parser.parse(getTemplateResponseString).getAsJsonObject(); 
-         this.templateJsonArray = getTemplateResponseDataObject.get("data").getAsJsonArray(); 
-     } 
-   
-     public void printTemplateList() { 
-   
-         for (int x = 0; x < this.templateJsonArray.size(); x++) { 
-             String-  wsName  = this- . templateJsonArray- . get(- x )- . getAsJsonObject()- . get("name")- . getAsString();
 
-             String-  wsID  = this- . templateJsonArray- . get(- x )- . getAsJsonObject()- . get("workspace_id")- . getAsString();
 
-             System- . out- . format("%-5s |%-10s %-40s|%-10s %-20s|%n"- , x  + ")"- , nameTitle, wsName, idTitle, wsID );
 
-         } 
-     } 
-   
-     public void saveTemplatesFromJsonArray() { 
-   
-         for (int x = 0; x < this.templateJsonArray.size(); x++) { 
-             this.templates.add(new Template(this.templateJsonArray.get(x).getAsJsonObject())); 
-         } 
-     } 
-   
-     public void getAndSaveAllFoldersFromJsonArray(){ 
-   
- //        for(int x = 0; x < templates.size(); x++){ 
-         for(int x = 1; x < 2; x++){                     //run once as test 
-   
-             Template currentTemplate = this.templates.get(x); 
-           //  Folder currentSubfolder; 
-   
-             if (currentTemplate.hasSubfolders()){ 
-                 getSubfoldersJsonArrayFromRestApi(currentTemplate); 
-   
-                 for (int y = 0; y < currentTemplate.getFoldersJsonArray().size(); y++) {                                                                                     // for each template (x) in 'templates' get  foldersJsonArray.size and for each folder 
-   
-                     JsonObject fullSubfolderProfileObject = getFolderProfileFromRestApi(currentTemplate.getFoldersJsonArray().get(y).getAsJsonObject()); 
-                    // System.out.println(fullSubfolderProfileObject); 
-                    Folder currentSubfolder = currentTemplate.addSubfolder(fullSubfolderProfileObject); 
-                    if (currentSubfolder.hasSubfolders()) { 
-                        saveSubfoldersRecursively(currentSubfolder); 
-                    } 
-                     if (currentSubfolder.getId().equals("Active!422") ) { 
-                         System- . out- . println("inside if");
 
-                         System- . out- . println("access test 1: " +-  currentSubfolder. getId() + " subfolder at index 0: " +-  currentSubfolder. getSubFolders()- . get(0));
 
-                         System- . out- . println("access test 2: " +-  getSingleTemplate (1)- . getSubFolders()- . get(0)- . getSubFolders()- . get(0) + " subfolder at index 0: " +-  currentSubfolder. getSubFolders()- . get(0));
 
-                     } 
-                 } 
-             } 
-         } 
-         System- . out- . println("in getAndSaveAllFoldersFromJsonArray test at end");
 
-         System- . out- . println("access test 1: " +-  getSingleTemplate (1)- . getSubFolders()- . get(0)- . getId() + " subfolder at index 0: " +-  getSingleTemplate (1)- . getSubFolders()- . get(0)- . getSubFolders()- . get(0)- . toString());
 
-     } 
-   
-     public void saveSubfoldersRecursively(Folder folder){ 
-   
-         if (folder.hasSubfolders()){ 
-             getSubfoldersJsonArrayFromRestApi(folder); 
-   
-             for(int x = 0; x < folder.getFoldersJsonArray().size(); x++) { 
-                 JsonObject currentSubfolderJsonArrayObject = folder.getFoldersJsonArray().get(x).getAsJsonObject(); 
-                 JsonObject fullSubfolderProfileObject = getFolderProfileFromRestApi(currentSubfolderJsonArrayObject); 
-                 Folder newSubfolder = folder.addSubfolder(fullSubfolderProfileObject); 
-                 if (newSubfolder.hasSubfolders()) { 
-                     saveSubfoldersRecursively(newSubfolder); 
-                 } 
-             } 
-             if (folder.getId().equals("Active!422") ) { 
-                 System- . out- . println("inside saveSubfoldersRecursively");
 
-                 System- . out- . println("access test 1: " +-  folder. getId() + " subfolder at index 0: " +-  folder. getSubFolders()- . get(0));
 
-                 //System.out.println("access test 2: " + getSingleTemplate(1).getSubFolders().get(0).getId() + " subfolder at index 0: " + getSingleTemplate(1).getSubFolders().get(0).getSubFolders().get(0).toString()); 
-             } 
-         } 
-     } 
-   
-     public JsonObject getFolderProfileFromRestApi(JsonObject folderProfileObject){ 
-   
-             RestAssured.baseURI = this.restUrl; 
-   
-             Response getFolderProfileResponse = null; 
-             boolean noResponse = true; 
-   
-         System- . out- . println("getFolderProfileFromRestApi - " +-  folderProfileObject. get("id")- . getAsString());
 
-   
-             while (noResponse) { 
-   
-                 try { 
-                     getFolderProfileResponse = given(). 
-                             contentType(ContentType.JSON). 
-                             header("X-Auth-Token", this.xAuthToken). 
-                             when(). 
-                             get("/folders/" + folderProfileObject.get("id").getAsString()); 
-   
-                     int statusCode = getFolderProfileResponse.getStatusCode(); 
-   
-                     if (statusCode == 200) { 
-                         noResponse = false; 
-                     } else { 
-                         System- . out- . println("Status Code: " +-  statusCode );
 
-                         System- . out- . println(- getFolderProfileResponse. asString());
 
-                     } 
-                     e.printStackTrace(); 
-                 } 
-             } 
-   
-             String-  getFolderProfileResponseString  =-  getFolderProfileResponse. asString();
 
-             JsonObject getFolderProfileResponseDataObject = parser.parse(getFolderProfileResponseString).getAsJsonObject(); 
-   
-             return getFolderProfileResponseDataObject.get("data").getAsJsonObject(); 
-         } 
-   
-     public void printTemplateProfile(int x) { 
-         System- . out- . println(this- . templates- . get(- x )- . toString());
 
-     } 
-   
-     public void getSubfoldersJsonArrayFromRestApi(IMContainer container) { 
-         if (container.hasSubfolders() == true) { 
-             RestAssured.baseURI = this.restUrl; 
-   
-             Response getFoldersResponse = null; 
-             boolean noResponse = true; 
-   
-             while (noResponse) { 
-   
-                 try { 
-                     getFoldersResponse = given(). 
-                             contentType(ContentType.JSON). 
-                             header("X-Auth-Token", this.xAuthToken). 
-                             when(). 
-                             get("/" + container.getWsType() + "s/" + container.getId() + "/children");              //wsType is "folder" for folders and tabs and "workspace" for templates which corresponds to the endpoint needed. 
-   
-                     int statusCode = getFoldersResponse.getStatusCode(); 
-   
-                     if (statusCode == 200) { 
-                         noResponse = false; 
-                     } else { 
-                         System- . out- . println("Status Code: " +-  statusCode );
 
-                         System- . out- . println(- getFoldersResponse. asString());
 
-                     } 
-                     e.printStackTrace(); 
-                 } 
-             } 
-   
-             String-  getFoldersResponseString  =-  getFoldersResponse. asString();
 
-             JsonObject getTemplateResponseDataObject = parser.parse(getFoldersResponseString).getAsJsonObject(); 
-             container.setFoldersJsonArray(getTemplateResponseDataObject.get("data").getAsJsonArray()); 
-         } 
-     } 
-   
-     public void-  printStructure (- IMContainer container,  String-  indent ){
 
-   
-         System- . out- . println(- indent  +-  container. getName());
 
-   
-         if (container.hasSubfolders()){ 
-   
-             for (Folder subFolder: container.getSubFolders()) 
-             printStructure(subFolder, indent + "        "); 
-         } 
-   
-   
-   
-     } 
-   
-     public void printFolderList(IMContainer template) { 
-   
-         if (template.hasSubfolders()) { 
-             for (int x = 0; x < template.getSubFolders().size(); x++) { 
-                 String-  folderName  =-  template. getSubFolders()- . get(- x )- . getName();
 
-                 String-  folderID  =-  template. getSubFolders()- . get(- x )- . getId();
 
-                 System- . out- . format("%-5s |%-10s %-40s|%-10s %-20s|%n"- , x  + ")"- , nameTitle, folderName, idTitle, folderID );
 
-             } 
-         } 
-     } 
-   
-   
-     //<editor-fold desc="Getters" 
-   
-   
-     public Template getSingleTemplate(int x){ 
-         return templates.get(x); 
-     } 
-   
-     public String-  getClientName () {
 
-         return clientName; 
-     } 
-   
-         return restUrl; 
-     } 
-   
-         return username; 
-     } 
-   
-         return password; 
-     } 
-   
-     public boolean isUseRelaxedHTTP() { 
-         return useRelaxedHTTP; 
-     } 
-   
-         return persona; 
-     } 
-   
-     public String-  getxAuthToken () {
 
-         return xAuthToken; 
-     } 
-   
-     //</editor-fold> 
-   
-     //<editor-fold desc="Setters" 
-   
-     public void-  setClientName (String-  clientName ) {
 
-         this.clientName = clientName; 
-     } 
-   
-     public void-  setRestUrl (String-  restUrl ) {
 
-         this.restUrl = restUrl; 
-     } 
-   
-     public void-  setUsername (String-  username ) {
 
-         this.username = username; 
-     } 
-   
-     public void-  setPassword (String-  password ) {
 
-         this.password = password; 
-     } 
-   
-     public void setUseRelaxedHTTP(boolean useRelaxedHTTP) { 
-         this.useRelaxedHTTP = useRelaxedHTTP; 
-     } 
-   
-     public void-  setPersona (String-  persona ) {
 
-         this.persona = persona; 
-     } 
-   
-     public void-  setxAuthToken (String-  xAuthToken ) {
 
-         this.xAuthToken = xAuthToken; 
-     } 
-   
-     //</editor-fold> 
- } 
-