Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2955,10 +2955,53 @@ public String deleteFacetConfiguration(FacetConfigurationRequest facetConfigurat
facetConfigurationRequest.getSection());
}

/**
* Creates or Updates facet option configurations
*
* @param facetOptionConfigurationsRequest The facet option configurations request containing
* the configurations to create or update
* @return returns the created facet option configurations
* @throws ConstructorException if the request is invalid
*/
public String createOrUpdateFacetOptionConfigurations(
FacetOptionConfigurationsRequest facetOptionConfigurationsRequest)
throws ConstructorException {
try {
HttpUrl url =
this.makeUrl(
Arrays.asList(
"v1",
"facets",
facetOptionConfigurationsRequest.getFacetName(),
"options"));
url =
url.newBuilder()
.addQueryParameter(
"section", facetOptionConfigurationsRequest.getSection())
.build();

String params =
new Gson()
.toJson(
facetOptionConfigurationsRequest
.getFacetOptionConfigurations());
RequestBody body =
RequestBody.create(params, MediaType.parse("application/json; charset=utf-8"));
Request request = this.makeAuthorizedRequestBuilder().url(url).patch(body).build();

Response response = client.newCall(request).execute();

return getResponseBody(response);
} catch (Exception exception) {
throw new ConstructorException(exception);
}
}

/**
* Creates a facet option configuration
*
* @param facetOptionConfigurationRequest The facet option configuration request containing the configuration to create
* @param facetOptionConfigurationRequest The facet option configuration request containing the
* configuration to create
* @return returns the created facet option configuration
* @throws ConstructorException if the request is invalid
*/
Expand Down Expand Up @@ -3044,7 +3087,8 @@ public String deleteFacetOptionConfiguration(String facetName, String facetOptio
/**
* Deletes a facet option configuration
*
* @param facetOptionConfigurationRequest The facet option configuration request containing the configuration to delete
* @param facetOptionConfigurationRequest The facet option configuration request containing the
* configuration to delete
* @return returns the deleted facet option configuration
* @throws ConstructorException if the request is invalid
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package io.constructor.client;

import io.constructor.client.models.FacetOptionConfiguration;
import java.util.List;

/** Constructor.io Facet Option Configurations Request */
public class FacetOptionConfigurationsRequest {
private List<FacetOptionConfiguration> facetOptionConfigurations;
private String facetName;
private String section;

/**
* Creates a facet option configurations request (create or update)
*
* @param facetOptionConfigurations the list of facet option configurations to be created or
* updated
* @param facetName the name of the facet
* @param section the section to which the facet belongs
*/
public FacetOptionConfigurationsRequest(
List<FacetOptionConfiguration> facetOptionConfigurations,
String facetName,
String section) {
if (facetOptionConfigurations.isEmpty()) {
throw new IllegalArgumentException("facetOptionConfigurations is required");
}
if (facetName == null || facetName.trim().isEmpty()) {
throw new IllegalArgumentException("facetName is required");
}

this.facetOptionConfigurations = facetOptionConfigurations;
this.facetName = facetName;
this.section = section;
}

/**
* Creates a facet option configurations request (Create or Update) with default section
* "Products"
*
* @param facetOptionConfigurations the list of facet option configuration to be created or
* updated
* @param facetName the name of the facet
*/
public FacetOptionConfigurationsRequest(
List<FacetOptionConfiguration> facetOptionConfigurations, String facetName) {
this(facetOptionConfigurations, facetName, "Products");
}

/**
* @return the list of facet option configurations
*/
public List<FacetOptionConfiguration> getFacetOptionConfigurations() {
return facetOptionConfigurations;
}

/**
* @param facetOptionConfigurations the list of facet option configurations to set
*/
public void setFacetOptionConfigurations(
List<FacetOptionConfiguration> facetOptionConfigurations) {
this.facetOptionConfigurations = facetOptionConfigurations;
}

/**
* @return the facet name
*/
public String getFacetName() {
return facetName;
}

/**
* @param facetName the facet name to set
*/
public void setFacetName(String facetName) {
this.facetName = facetName;
}

/**
* @return the section
*/
public String getSection() {
return section;
}

/**
* @param section the section to set
*/
public void setSection(String section) {
this.section = section;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@
import com.google.gson.Gson;
import io.constructor.client.models.FacetConfiguration;
import io.constructor.client.models.FacetOptionConfiguration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.AfterClass;
import org.junit.Before;
Expand Down Expand Up @@ -144,6 +143,52 @@ public void testCreateFacetOptionConfiguration() throws Exception {
addFacetOptionToCleanupArray(facetName, "test-option");
}

@Test
public void testCreateFacetOptionConfigurations() throws Exception {
String facetName = "testFacet2";
constructor.createFacetConfiguration(
new FacetConfigurationRequest(
createFacetConfigurationObject(facetName, PRODUCTS_SECTION),
PRODUCTS_SECTION));
addFacetToCleanupArray(facetName);

// Create facet option configurations
FacetOptionConfiguration option =
createFacetOptionConfigurationObject("test-option", "Test Option", 1);
FacetOptionConfiguration option2 =
createFacetOptionConfigurationObject("test-option-2", "Test Option 2", 2);
option.setValueAlias("test-alias");
option2.setHidden(true);
Map<String, Object> data = new HashMap<>();
data.put("foo", "bar");
option.setData(data);
option.setHidden(false);
List<FacetOptionConfiguration> configurations = Arrays.asList(option, option2);

// Create and verify configurations
String response =
constructor.createOrUpdateFacetOptionConfigurations(
new FacetOptionConfigurationsRequest(
configurations, facetName, PRODUCTS_SECTION));
JSONArray jsonArr = new JSONArray(response);
JSONObject jsonOption1 = (JSONObject) jsonArr.get(0);
JSONObject jsonOption2 = (JSONObject) jsonArr.get(1);

assertEquals("test-option", jsonOption1.get("value"));
assertEquals("test-alias", jsonOption1.get("value_alias"));
assertEquals("Test Option", jsonOption1.get("display_name"));
assertEquals(1, jsonOption1.get("position"));
assertEquals(false, jsonOption1.get("hidden"));
assertEquals("bar", jsonOption1.getJSONObject("data").get("foo"));
assertEquals("test-option-2", jsonOption2.get("value"));
assertEquals("Test Option 2", jsonOption2.get("display_name"));
assertEquals(2, jsonOption2.get("position"));
assertEquals(true, jsonOption2.get("hidden"));

addFacetOptionToCleanupArray(facetName, "test-option");
addFacetOptionToCleanupArray(facetName, "test-option-2");
}

@Test(expected = ConstructorException.class)
public void testCreateFacetOptionConfigurationWithNullRequest() throws Exception {
ConstructorIO constructor = new ConstructorIO(token, apiKey, true, null);
Expand Down
Loading