diff --git a/contentstack/build.gradle b/contentstack/build.gradle index 68257fdc..eaccd3e0 100755 --- a/contentstack/build.gradle +++ b/contentstack/build.gradle @@ -10,7 +10,7 @@ android.buildFeatures.buildConfig true mavenPublishing { publishToMavenCentral(SonatypeHost.DEFAULT) signAllPublications() - coordinates("com.contentstack.sdk", "android", "3.16.1") + coordinates("com.contentstack.sdk", "android", "4.0.0") pom { name = "contentstack-android" @@ -112,18 +112,27 @@ android { def localProperties = new Properties() localProperties.load(new FileInputStream(rootProject.file("local.properties"))) + def getPropertyOrEmpty = { key -> + def value = localProperties.getProperty(key) + return value != null ? "$value" : "\"\"" + } + def variantsArray = localProperties.getProperty('variantsUID')?.split(",")?.collect { it.trim() } + def variantsAsArrayString = variantsArray ? 'new String[] {' + variantsArray.collect { "\"$it\"" }.join(", ") + '}' : "new String[0]" buildTypes { debug { debuggable true testCoverageEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - buildConfigField "String", "host", localProperties['host'] - buildConfigField "String", "APIKey", localProperties['APIKey'] - buildConfigField "String", "deliveryToken", localProperties['deliveryToken'] - buildConfigField "String", "environment", localProperties['environment'] - buildConfigField "String", "contentTypeUID", localProperties['contentType'] - buildConfigField "String", "assetUID", localProperties['assetUid'] + buildConfigField "String", "host", getPropertyOrEmpty('host') + buildConfigField "String", "APIKey", getPropertyOrEmpty('APIKey') + buildConfigField "String", "deliveryToken", getPropertyOrEmpty('deliveryToken') + buildConfigField "String", "environment", getPropertyOrEmpty('environment') + buildConfigField "String", "contentTypeUID", getPropertyOrEmpty('contentType') + buildConfigField "String", "assetUID", getPropertyOrEmpty('assetUid') + buildConfigField "String", "variantUID", getPropertyOrEmpty('variantUID') + buildConfigField "String", "variantEntryUID", getPropertyOrEmpty('variantEntryUID') + buildConfigField "String[]", "variantsUID", variantsAsArrayString } release { minifyEnabled false diff --git a/contentstack/src/androidTest/java/com/contentstack/sdk/EntryTestCase.java b/contentstack/src/androidTest/java/com/contentstack/sdk/EntryTestCase.java index b9b40beb..7a78dad4 100644 --- a/contentstack/src/androidTest/java/com/contentstack/sdk/EntryTestCase.java +++ b/contentstack/src/androidTest/java/com/contentstack/sdk/EntryTestCase.java @@ -27,6 +27,9 @@ public class EntryTestCase { private static final String CONTENT_TYPE_UID = BuildConfig.contentTypeUID; private static CountDownLatch latch; private static Stack stack; + private static String variantUID = BuildConfig.variantUID; + private static String variantEntryUID = BuildConfig.variantEntryUID; + private static String[] variantsUID = BuildConfig.variantsUID; @BeforeClass @@ -319,4 +322,26 @@ public void onCompletion(ResponseType responseType, Error error) { latch.await(); } + @Test + public void VariantsTestSingleUid(){ + final Entry entry = stack.contentType("product").entry(variantEntryUID).variants(variantUID); + entry.fetch(new EntryResultCallBack() { + @Override + public void onCompletion(ResponseType responseType, Error error) { + assertEquals(variantUID, entry.getHeaders().get("x-cs-variant-uid")); + System.out.println(entry.toJSON()); + } + }); + } + @Test + public void VariantsTestArray(){ + final Entry entry = stack.contentType("product").entry(variantEntryUID).variants(variantsUID); + entry.fetch(new EntryResultCallBack() { + @Override + public void onCompletion(ResponseType responseType, Error error) { + System.out.println(entry.toJSON()); + } + }); + } + } \ No newline at end of file diff --git a/contentstack/src/main/java/com/contentstack/sdk/Entry.java b/contentstack/src/main/java/com/contentstack/sdk/Entry.java index f315392c..dd0e6696 100755 --- a/contentstack/src/main/java/com/contentstack/sdk/Entry.java +++ b/contentstack/src/main/java/com/contentstack/sdk/Entry.java @@ -1494,4 +1494,40 @@ public Entry includeMetadata() { } return this; } + /** + * method variants + * memberof Entry + * description The variant header will be added to client + * returns {Entry} + * example + * import contentstack from '@contentstack/delivery-sdk' + * + * Stack stack = contentstack.Stack("apiKey", "deliveryToken", + * "environment"); + * Entry entry = + * stack.contentType("user").entry("entry_uid").variant("variant_uid").fetch(); + */ + public Entry variants(String variants){ + if (variants != null && variants.length() > 0) { + this.localHeader.put("x-cs-variant-uid", variants.trim()); + } + return this; + + } + public Entry variants(String[] variants){ + if (variants != null && variants.length > 0) { + List variantList = new ArrayList<>(); + for (String variant : variants) { + if(variant != null && !variant.trim().isEmpty()) + variantList.add(variant.trim()); + } + if(!variantList.isEmpty()){ + this.localHeader.put("x-cs-variant-uid", String.join(", ", variantList)); + } + } + return this; + } + public ArrayMap getHeaders() { + return localHeader; + } }