Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

indix/indix-api-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

93 Commits

Repository files navigation

Apiv2-Java-Client Build Status Maven Central

Indix API Java client

Requirements

Java 1.7 or later

Installation

Add the following dependency to your pom file

<dependency>
 <groupId>com.indix.api</groupId>
 <artifactId>indix-api-java</artifactId>
 <version>3.1.0</version>
</dependency>

##Usage :

First, the client must be instantiated with the appropriate application key (appKey). It can be done as follows:

 String appKey = "__app_key__";
 IndixApiClient indixApiClient = IndixApiClientFactory
 .newIndixApiClient(appKey);

This instance can then used to query the different endpoints and obtain responses. Different types of queries are available for different scenarios. Illustrations of each are specified below:

Metadata Query

The following example shows how to list all stores, along with their IDs, matching the query term

 try {
 MetadataQuery metadataQuery = QueryFactory.newMetadataQuery()
 .withQ("nike");
 StoresResult sr = indixApiClient.getStores(metadataQuery);
 System.out.println(sr.getStores().get(0).getCountryCode());
 System.out.println(sr.getStores().get(0).getId());
 System.out.println(sr.getStores().get(0).getName());
 } finally {
 indixApiClient.close();
 }

Suggestions Query

The following example shows how to list all product search suggestions matching the query term.

 try {
 SuggestionsQuery suggestionsQuery = QueryFactory.newSuggestionsQuery()
 .withCountryCode("US")
 .withQ("ni");
 SuggestionsResult sr = indixApiClient.getSuggestions(suggestionsQuery);
 System.out.println(sr.getSuggestions().size());
 System.out.pritnln(sr.getSuggestions().get(0).getSuggestion());
 } finally {
 indixApiClient.close();
 }

Search Query

The following example shows how to search for products. It retrieves a list of products matching a variety of query parameters with their offers and catalog info across stores

 try {
 Query searchQuery = QueryFactory.newSearchQuery()
 .withQ("nike")
 .withCountryCode("US");
 UniversalSearchResult sr = indixApiClient.getProductsUniversal(searchQuery);
 System.out.println(sr.getCount());
 System.out.println(sr.getProducts().size());
 System.out.println(sr.getFacets().size());
 System.out.println(sr.getProducts().get(0).getMpid());
 } finally {
 indixApiClient.close();
 }

Search Query

The following example shows how to search for product details of a particular product with given mpid. It returns summary information for a product.

 try {
 ProductDetailsQuery productDetailsQuery =
 QueryFactory.newProductDetailsQuery()
 .withCountryCode("US")
 .withMpid(mpid);
 SummaryProductDetailsResult pr = indixApiClient
 .getProductDetailsUniversal(productDetailsQuery);
 System.out.println(pr.getUniversalProduct().getMpid());
 System.out.println(pr.getUniversalProduct().getTitle());
 } finally {
 indixApiClient.close();
 }

Bulk Products Query

The following example shows how to request for a bulk search query which finds products against a list of storeIds. It submits a job against the query and returns corresponding job id and status.

 try {
 BulkProductsQuery bulkQuery = QueryFactory.newBulkQuery()
 .withCountryCode("US")
 .withStoreId(storeIdList);
 JobInfo ji = indixApiClient.postBulkJob(resource, bulkQuery);
 System.out.println(ji.getId());
 System.out.println(ji.getStatus());
 } finally {
 indixApiClient.close();
 }

Bulk Lookup Query

The following example shows how to request for a bulk lookup query which finds products against a list of attributes. A list of lookup queries, each with specific attributes as a json object, may be submitted as a jsonlines file. It submits a job against the query and returns corresponding job id and status.

 try { 
 File file = new File("filename.jsonl");
 BulkLookupQuery bulkLookupQuery = QueryFactory.newBulkLookupQuery()
 .withCountryCode("US")
 .withInputFile(file);
 JobInfo ji = indixApiClient.postBulkJob(resource, bulkLookupQuery);
 System.out.println(ji.getStatus());
 System.out.println(ji.getId());
 } finally {
 indixApiClient.close();
 }

Job Status Query

The following example shows how to check the status of a job submitted by a bulk query.

 try {
 JobQuery jobQuery = QueryFactory.newJobQuery()
 .withJobId(jobId);
 JobInfo ji = indixApiClient.getBulkJobStatus(jobQuery);
 System.out.println(ji.getId());
 System.out.println(ji.getStatus());
 System.out.println(ji.getCount());
 } finally {
 indixApiClient.close();
 }

The following example shows how to obtain the output of a bulk job, as requested against a job id.

 try {
 JobSQuery jobQuery = QueryFactory.newJobQuery()
 .withJobId(jobId);
 InputStream stream = indixApiClient.getBulkJobOutput(jobQuery);
 //convert inputStream to file, or use as required. 
 //
 //To deserialise each line of the jsonl output file the following lines can be referred.
 //
 //Read the stream into a bufferedReader, followed by :
 String record = bufferedReader.readLine();
 BulkJobOutput<UniversalProduct> bulkJobResponse = jsonMapper.readValue(
 recordOutput2,new TypeReference<BulkJobOutput<UniversalProduct>>() {
 });
 System.out.println(bulkJobResponse.getResult().getProducts().get(0)
 .getStores().get("68").getOffers().get(0).getPid());
 } finally {
 indixApiClient.close();
 }

Known issue(s)

If you're using the client on Android you might see the following error

java.lang.NoSuchMethodError: No virtual method setSSLContext(Ljavax/net/ssl/SSLContext;)Lorg/apache/http/impl/client/HttpClientBuilder;

That's because the HttpClient that comes with this client is little newer than the one that's generally used in Android. The fix is to do the following

import com.indix.httpClient.HttpClient;
import com.indix.httpClient.impl.HttpClientFactory;
import com.indix.tools.SSLTrustCA;
import org.apache.http.impl.client.HttpClients;
HttpClient client = HttpClientFactory.newHttpClient(HttpClients.custom()
 .setSslcontext(SSLTrustCA.trustLetsEncryptRootCA())
 .build());
IndixApiClient indixApiClient = IndixApiClientFactory
 .newIndixApiClient(appKey, client);

About

Indix API Java client

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 9

Languages

AltStyle によって変換されたページ (->オリジナル) /