001package com.box.sdkgen.managers.metadatacascadepolicies; 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.metadatacascadepolicies.MetadataCascadePolicies; 015import com.box.sdkgen.schemas.metadatacascadepolicy.MetadataCascadePolicy; 016import com.box.sdkgen.serialization.json.JsonManager; 017import java.util.Map; 018 019public class MetadataCascadePoliciesManager { 020 021 public Authentication auth; 022 023 public NetworkSession networkSession; 024 025 public MetadataCascadePoliciesManager() { 026 this.networkSession = new NetworkSession(); 027 } 028 029 protected MetadataCascadePoliciesManager(Builder builder) { 030 this.auth = builder.auth; 031 this.networkSession = builder.networkSession; 032 } 033 034 /** 035 * Retrieves a list of all the metadata cascade policies that are applied to a given folder. This 036 * can not be used on the root folder with ID `0`. 037 * 038 * @param queryParams Query parameters of getMetadataCascadePolicies method 039 */ 040 public MetadataCascadePolicies getMetadataCascadePolicies( 041 GetMetadataCascadePoliciesQueryParams queryParams) { 042 return getMetadataCascadePolicies(queryParams, new GetMetadataCascadePoliciesHeaders()); 043 } 044 045 /** 046 * Retrieves a list of all the metadata cascade policies that are applied to a given folder. This 047 * can not be used on the root folder with ID `0`. 048 * 049 * @param queryParams Query parameters of getMetadataCascadePolicies method 050 * @param headers Headers of getMetadataCascadePolicies method 051 */ 052 public MetadataCascadePolicies getMetadataCascadePolicies( 053 GetMetadataCascadePoliciesQueryParams queryParams, 054 GetMetadataCascadePoliciesHeaders headers) { 055 Map<String, String> queryParamsMap = 056 prepareParams( 057 mapOf( 058 entryOf("folder_id", convertToString(queryParams.getFolderId())), 059 entryOf("owner_enterprise_id", convertToString(queryParams.getOwnerEnterpriseId())), 060 entryOf("marker", convertToString(queryParams.getMarker())), 061 entryOf("offset", convertToString(queryParams.getOffset())))); 062 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 063 FetchResponse response = 064 this.networkSession 065 .getNetworkClient() 066 .fetch( 067 new FetchOptions.Builder( 068 String.join( 069 "", 070 this.networkSession.getBaseUrls().getBaseUrl(), 071 "/2.0/metadata_cascade_policies"), 072 "GET") 073 .params(queryParamsMap) 074 .headers(headersMap) 075 .responseFormat(ResponseFormat.JSON) 076 .auth(this.auth) 077 .networkSession(this.networkSession) 078 .build()); 079 return JsonManager.deserialize(response.getData(), MetadataCascadePolicies.class); 080 } 081 082 /** 083 * Creates a new metadata cascade policy that applies a given metadata template to a given folder 084 * and automatically cascades it down to any files within that folder. 085 * 086 * <p>In order for the policy to be applied a metadata instance must first be applied to the 087 * folder the policy is to be applied to. 088 * 089 * @param requestBody Request body of createMetadataCascadePolicy method 090 */ 091 public MetadataCascadePolicy createMetadataCascadePolicy( 092 CreateMetadataCascadePolicyRequestBody requestBody) { 093 return createMetadataCascadePolicy(requestBody, new CreateMetadataCascadePolicyHeaders()); 094 } 095 096 /** 097 * Creates a new metadata cascade policy that applies a given metadata template to a given folder 098 * and automatically cascades it down to any files within that folder. 099 * 100 * <p>In order for the policy to be applied a metadata instance must first be applied to the 101 * folder the policy is to be applied to. 102 * 103 * @param requestBody Request body of createMetadataCascadePolicy method 104 * @param headers Headers of createMetadataCascadePolicy method 105 */ 106 public MetadataCascadePolicy createMetadataCascadePolicy( 107 CreateMetadataCascadePolicyRequestBody requestBody, 108 CreateMetadataCascadePolicyHeaders headers) { 109 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 110 FetchResponse response = 111 this.networkSession 112 .getNetworkClient() 113 .fetch( 114 new FetchOptions.Builder( 115 String.join( 116 "", 117 this.networkSession.getBaseUrls().getBaseUrl(), 118 "/2.0/metadata_cascade_policies"), 119 "POST") 120 .headers(headersMap) 121 .data(JsonManager.serialize(requestBody)) 122 .contentType("application/json") 123 .responseFormat(ResponseFormat.JSON) 124 .auth(this.auth) 125 .networkSession(this.networkSession) 126 .build()); 127 return JsonManager.deserialize(response.getData(), MetadataCascadePolicy.class); 128 } 129 130 /** 131 * Retrieve a specific metadata cascade policy assigned to a folder. 132 * 133 * @param metadataCascadePolicyId The ID of the metadata cascade policy. Example: 134 * "6fd4ff89-8fc1-42cf-8b29-1890dedd26d7" 135 */ 136 public MetadataCascadePolicy getMetadataCascadePolicyById(String metadataCascadePolicyId) { 137 return getMetadataCascadePolicyById( 138 metadataCascadePolicyId, new GetMetadataCascadePolicyByIdHeaders()); 139 } 140 141 /** 142 * Retrieve a specific metadata cascade policy assigned to a folder. 143 * 144 * @param metadataCascadePolicyId The ID of the metadata cascade policy. Example: 145 * "6fd4ff89-8fc1-42cf-8b29-1890dedd26d7" 146 * @param headers Headers of getMetadataCascadePolicyById method 147 */ 148 public MetadataCascadePolicy getMetadataCascadePolicyById( 149 String metadataCascadePolicyId, GetMetadataCascadePolicyByIdHeaders headers) { 150 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 151 FetchResponse response = 152 this.networkSession 153 .getNetworkClient() 154 .fetch( 155 new FetchOptions.Builder( 156 String.join( 157 "", 158 this.networkSession.getBaseUrls().getBaseUrl(), 159 "/2.0/metadata_cascade_policies/", 160 convertToString(metadataCascadePolicyId)), 161 "GET") 162 .headers(headersMap) 163 .responseFormat(ResponseFormat.JSON) 164 .auth(this.auth) 165 .networkSession(this.networkSession) 166 .build()); 167 return JsonManager.deserialize(response.getData(), MetadataCascadePolicy.class); 168 } 169 170 /** 171 * Deletes a metadata cascade policy. 172 * 173 * @param metadataCascadePolicyId The ID of the metadata cascade policy. Example: 174 * "6fd4ff89-8fc1-42cf-8b29-1890dedd26d7" 175 */ 176 public void deleteMetadataCascadePolicyById(String metadataCascadePolicyId) { 177 deleteMetadataCascadePolicyById( 178 metadataCascadePolicyId, new DeleteMetadataCascadePolicyByIdHeaders()); 179 } 180 181 /** 182 * Deletes a metadata cascade policy. 183 * 184 * @param metadataCascadePolicyId The ID of the metadata cascade policy. Example: 185 * "6fd4ff89-8fc1-42cf-8b29-1890dedd26d7" 186 * @param headers Headers of deleteMetadataCascadePolicyById method 187 */ 188 public void deleteMetadataCascadePolicyById( 189 String metadataCascadePolicyId, DeleteMetadataCascadePolicyByIdHeaders headers) { 190 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 191 FetchResponse response = 192 this.networkSession 193 .getNetworkClient() 194 .fetch( 195 new FetchOptions.Builder( 196 String.join( 197 "", 198 this.networkSession.getBaseUrls().getBaseUrl(), 199 "/2.0/metadata_cascade_policies/", 200 convertToString(metadataCascadePolicyId)), 201 "DELETE") 202 .headers(headersMap) 203 .responseFormat(ResponseFormat.NO_CONTENT) 204 .auth(this.auth) 205 .networkSession(this.networkSession) 206 .build()); 207 } 208 209 /** 210 * Force the metadata on a folder with a metadata cascade policy to be applied to all of its 211 * children. This can be used after creating a new cascade policy to enforce the metadata to be 212 * cascaded down to all existing files within that folder. 213 * 214 * @param metadataCascadePolicyId The ID of the cascade policy to force-apply. Example: 215 * "6fd4ff89-8fc1-42cf-8b29-1890dedd26d7" 216 * @param requestBody Request body of applyMetadataCascadePolicy method 217 */ 218 public void applyMetadataCascadePolicy( 219 String metadataCascadePolicyId, ApplyMetadataCascadePolicyRequestBody requestBody) { 220 applyMetadataCascadePolicy( 221 metadataCascadePolicyId, requestBody, new ApplyMetadataCascadePolicyHeaders()); 222 } 223 224 /** 225 * Force the metadata on a folder with a metadata cascade policy to be applied to all of its 226 * children. This can be used after creating a new cascade policy to enforce the metadata to be 227 * cascaded down to all existing files within that folder. 228 * 229 * @param metadataCascadePolicyId The ID of the cascade policy to force-apply. Example: 230 * "6fd4ff89-8fc1-42cf-8b29-1890dedd26d7" 231 * @param requestBody Request body of applyMetadataCascadePolicy method 232 * @param headers Headers of applyMetadataCascadePolicy method 233 */ 234 public void applyMetadataCascadePolicy( 235 String metadataCascadePolicyId, 236 ApplyMetadataCascadePolicyRequestBody requestBody, 237 ApplyMetadataCascadePolicyHeaders headers) { 238 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 239 FetchResponse response = 240 this.networkSession 241 .getNetworkClient() 242 .fetch( 243 new FetchOptions.Builder( 244 String.join( 245 "", 246 this.networkSession.getBaseUrls().getBaseUrl(), 247 "/2.0/metadata_cascade_policies/", 248 convertToString(metadataCascadePolicyId), 249 "/apply"), 250 "POST") 251 .headers(headersMap) 252 .data(JsonManager.serialize(requestBody)) 253 .contentType("application/json") 254 .responseFormat(ResponseFormat.NO_CONTENT) 255 .auth(this.auth) 256 .networkSession(this.networkSession) 257 .build()); 258 } 259 260 public Authentication getAuth() { 261 return auth; 262 } 263 264 public NetworkSession getNetworkSession() { 265 return networkSession; 266 } 267 268 public static class Builder { 269 270 protected Authentication auth; 271 272 protected NetworkSession networkSession; 273 274 public Builder() {} 275 276 public Builder auth(Authentication auth) { 277 this.auth = auth; 278 return this; 279 } 280 281 public Builder networkSession(NetworkSession networkSession) { 282 this.networkSession = networkSession; 283 return this; 284 } 285 286 public MetadataCascadePoliciesManager build() { 287 if (this.networkSession == null) { 288 this.networkSession = new NetworkSession(); 289 } 290 return new MetadataCascadePoliciesManager(this); 291 } 292 } 293}