001package com.box.sdkgen.managers.folderlocks; 002 003import static com.box.sdkgen.internal.utils.UtilsManager.convertToString; 004import static com.box.sdkgen.internal.utils.UtilsManager.entryOf; 005import static com.box.sdkgen.internal.utils.UtilsManager.mapOf; 006import static com.box.sdkgen.internal.utils.UtilsManager.mergeMaps; 007import static com.box.sdkgen.internal.utils.UtilsManager.prepareParams; 008 009import com.box.sdkgen.networking.auth.Authentication; 010import com.box.sdkgen.networking.fetchoptions.FetchOptions; 011import com.box.sdkgen.networking.fetchoptions.ResponseFormat; 012import com.box.sdkgen.networking.fetchresponse.FetchResponse; 013import com.box.sdkgen.networking.network.NetworkSession; 014import com.box.sdkgen.schemas.folderlock.FolderLock; 015import com.box.sdkgen.schemas.folderlocks.FolderLocks; 016import com.box.sdkgen.serialization.json.JsonManager; 017import java.util.Map; 018 019public class FolderLocksManager { 020 021 public Authentication auth; 022 023 public NetworkSession networkSession; 024 025 public FolderLocksManager() { 026 this.networkSession = new NetworkSession(); 027 } 028 029 protected FolderLocksManager(Builder builder) { 030 this.auth = builder.auth; 031 this.networkSession = builder.networkSession; 032 } 033 034 /** 035 * Retrieves folder lock details for a given folder. 036 * 037 * <p>You must be authenticated as the owner or co-owner of the folder to use this endpoint. 038 * 039 * @param queryParams Query parameters of getFolderLocks method 040 */ 041 public FolderLocks getFolderLocks(GetFolderLocksQueryParams queryParams) { 042 return getFolderLocks(queryParams, new GetFolderLocksHeaders()); 043 } 044 045 /** 046 * Retrieves folder lock details for a given folder. 047 * 048 * <p>You must be authenticated as the owner or co-owner of the folder to use this endpoint. 049 * 050 * @param queryParams Query parameters of getFolderLocks method 051 * @param headers Headers of getFolderLocks method 052 */ 053 public FolderLocks getFolderLocks( 054 GetFolderLocksQueryParams queryParams, GetFolderLocksHeaders headers) { 055 Map<String, String> queryParamsMap = 056 prepareParams(mapOf(entryOf("folder_id", convertToString(queryParams.getFolderId())))); 057 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 058 FetchResponse response = 059 this.networkSession 060 .getNetworkClient() 061 .fetch( 062 new FetchOptions.Builder( 063 String.join( 064 "", 065 this.networkSession.getBaseUrls().getBaseUrl(), 066 "/2.0/folder_locks"), 067 "GET") 068 .params(queryParamsMap) 069 .headers(headersMap) 070 .responseFormat(ResponseFormat.JSON) 071 .auth(this.auth) 072 .networkSession(this.networkSession) 073 .build()); 074 return JsonManager.deserialize(response.getData(), FolderLocks.class); 075 } 076 077 /** 078 * Creates a folder lock on a folder, preventing it from being moved and/or deleted. 079 * 080 * <p>You must be authenticated as the owner or co-owner of the folder to use this endpoint. 081 * 082 * @param requestBody Request body of createFolderLock method 083 */ 084 public FolderLock createFolderLock(CreateFolderLockRequestBody requestBody) { 085 return createFolderLock(requestBody, new CreateFolderLockHeaders()); 086 } 087 088 /** 089 * Creates a folder lock on a folder, preventing it from being moved and/or deleted. 090 * 091 * <p>You must be authenticated as the owner or co-owner of the folder to use this endpoint. 092 * 093 * @param requestBody Request body of createFolderLock method 094 * @param headers Headers of createFolderLock method 095 */ 096 public FolderLock createFolderLock( 097 CreateFolderLockRequestBody requestBody, CreateFolderLockHeaders headers) { 098 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 099 FetchResponse response = 100 this.networkSession 101 .getNetworkClient() 102 .fetch( 103 new FetchOptions.Builder( 104 String.join( 105 "", 106 this.networkSession.getBaseUrls().getBaseUrl(), 107 "/2.0/folder_locks"), 108 "POST") 109 .headers(headersMap) 110 .data(JsonManager.serialize(requestBody)) 111 .contentType("application/json") 112 .responseFormat(ResponseFormat.JSON) 113 .auth(this.auth) 114 .networkSession(this.networkSession) 115 .build()); 116 return JsonManager.deserialize(response.getData(), FolderLock.class); 117 } 118 119 /** 120 * Deletes a folder lock on a given folder. 121 * 122 * <p>You must be authenticated as the owner or co-owner of the folder to use this endpoint. 123 * 124 * @param folderLockId The ID of the folder lock. Example: "12345" 125 */ 126 public void deleteFolderLockById(String folderLockId) { 127 deleteFolderLockById(folderLockId, new DeleteFolderLockByIdHeaders()); 128 } 129 130 /** 131 * Deletes a folder lock on a given folder. 132 * 133 * <p>You must be authenticated as the owner or co-owner of the folder to use this endpoint. 134 * 135 * @param folderLockId The ID of the folder lock. Example: "12345" 136 * @param headers Headers of deleteFolderLockById method 137 */ 138 public void deleteFolderLockById(String folderLockId, DeleteFolderLockByIdHeaders headers) { 139 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 140 FetchResponse response = 141 this.networkSession 142 .getNetworkClient() 143 .fetch( 144 new FetchOptions.Builder( 145 String.join( 146 "", 147 this.networkSession.getBaseUrls().getBaseUrl(), 148 "/2.0/folder_locks/", 149 convertToString(folderLockId)), 150 "DELETE") 151 .headers(headersMap) 152 .responseFormat(ResponseFormat.NO_CONTENT) 153 .auth(this.auth) 154 .networkSession(this.networkSession) 155 .build()); 156 } 157 158 public Authentication getAuth() { 159 return auth; 160 } 161 162 public NetworkSession getNetworkSession() { 163 return networkSession; 164 } 165 166 public static class Builder { 167 168 protected Authentication auth; 169 170 protected NetworkSession networkSession; 171 172 public Builder() {} 173 174 public Builder auth(Authentication auth) { 175 this.auth = auth; 176 return this; 177 } 178 179 public Builder networkSession(NetworkSession networkSession) { 180 this.networkSession = networkSession; 181 return this; 182 } 183 184 public FolderLocksManager build() { 185 if (this.networkSession == null) { 186 this.networkSession = new NetworkSession(); 187 } 188 return new FolderLocksManager(this); 189 } 190 } 191}