项目作者: flexudy

项目描述 :
Flexudy Java REST API Client
高级语言: Java
项目地址: git://github.com/flexudy/flexudy-client-java.git
创建时间: 2020-07-05T05:56:13Z
项目社区:https://github.com/flexudy/flexudy-client-java

开源协议:

下载


Flexudy API Java Client Library

Build Status
codecov
contributions welcome

The official Flexudy Java client library.

Installation

Requirements

  • Java 1.9 or later

Gradle users

Add this dependency to your project’s build file:

  1. implementation "com.flexudy.education:flexudy-client:1.0"

Maven users

Add this dependency to your project’s POM:

  1. <dependency>
  2. <groupId>com.flexudy.education</groupId>
  3. <artifactId>flexudy-client</artifactId>
  4. <version>1.0</version>
  5. </dependency>

Others

You’ll need to manually install the following JARs:

Documentation

Please see the REST API Docs - Production or REST API Docs - Sandbox for the most
up-to-date documentation.

Usage

The main interface to the API is via the FlexudyClient Facade Object as shown below.

Configuring Environment

By default the Gateway connects to the PRODUCTION server at Gateway API Server - Production In order, to
switch to another environment set it during the FlexudyClient object construction.

Configuring Timeouts

Connect, write and read timeouts can be configured using the HttpClientConfig object when creating the Gateway client
object. It would default to the following if no custom client config is provided:

  • Connect timeout: 1 minute
  • Write timeout: 3 minutes
  • Read timeout: 3 minutes
  1. import com.flexudy.education.client.service.FlexudyClient;
  2. import com.flexudy.education.client.service.HttpClientConfig;
  3. import com.flexudy.education.client.service.network.Environment;
  4. public class Driver {
  5. public static void main(String[] args) {
  6. final HttpClientConfig httpConfig = HttpClientConfig.builder()
  7. .connectTimeoutSeconds(60)
  8. .readTimeoutSeconds(30)
  9. .writeTimeoutSeconds(20)
  10. .build();
  11. final FlexudyClient client = FlexudyClient.builder().licenseKey(licenseKey)
  12. .httpClientConfig(httpConfig)
  13. .environment(Environment.PRODUCTION)
  14. .build();
  15. }
  16. }

FlexudyClientExample.java

  1. import com.flexudy.education.client.data.common.AsyncRequestData;
  2. import com.flexudy.education.client.data.common.CommonRequestData;
  3. import com.flexudy.education.client.data.common.CommonRequestData.SimpleAsyncRequestData;
  4. import com.flexudy.education.client.data.common.CommonRequestData.SimpleCommonRequestData;
  5. import com.flexudy.education.client.data.quiz.ClozeQuestion;
  6. import com.flexudy.education.client.data.quiz.OpenQuestion;
  7. import com.flexudy.education.client.data.quiz.WHQuestion;
  8. import com.flexudy.education.client.data.summary.Summary;
  9. import com.flexudy.education.client.service.FlexudyClient;
  10. import java.io.File;
  11. import java.io.FileInputStream;
  12. import java.io.IOException;
  13. import java.io.InputStream;
  14. import java.util.List;
  15. import java.util.concurrent.ExecutionException;
  16. import java.util.concurrent.Future;
  17. import java.util.concurrent.TimeoutException;
  18. import static com.flexudy.education.client.data.common.CommonRequestData.SimpleAsyncRequestData.fromCommonRequestData;
  19. import static java.util.concurrent.TimeUnit.MINUTES;
  20. public class Driver {
  21. public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException, IOException {
  22. final InputStream sampleFile = new FileInputStream(new File("README.md"));
  23. final String sampleText = "The capital of the UAE is Abu Dhabi. The capital of France is Paris";
  24. final String licenseKey = "715d26f5-260a-43c9-838f-82c9664ca701";
  25. final CommonRequestData fileData = SimpleCommonRequestData.builder().files(List.of(sampleFile)).build();
  26. final CommonRequestData urlData = SimpleCommonRequestData.builder().contentUrls(List.of("https://flexudy.com"))
  27. .build();
  28. final AsyncRequestData textData = SimpleAsyncRequestData.builder().textContent(sampleText).build();
  29. final FlexudyClient client = FlexudyClient.builder().licenseKey(licenseKey).build();
  30. System.out.println("\n*********** Generating Cloze Questions for a URL source ***********\n");
  31. System.out.println(String.format("Cloze Quiz: %s", client.generateClozeQuiz(urlData)));
  32. System.out.println("\n*********** Generating WH Questions for a File source ***********\n");
  33. System.out.println(String.format("WH Quiz: %s", client.generateWHQuiz(fileData)));
  34. System.out.println("\n*********** Generating Open Questions for a URL source ***********\n");
  35. System.out.println(String.format("Open Quiz: %s", client.generateOpenQuiz(urlData)));
  36. System.out.println("\n*********** Generating Summary for a URL source ***********\n");
  37. System.out.println(client.generateSummary(urlData).getFacts());
  38. System.out.println("\n*********** Generating Cloze Questions for an Asynchronous URL Content ***********\n");
  39. final Future<List<ClozeQuestion>> futureClozeQuiz = client.submitClozeQuizJob(fromCommonRequestData(urlData));
  40. System.out.println(String.format("Async Cloze Quiz: %s", futureClozeQuiz.get(5, MINUTES)));
  41. System.out.println("\n*********** Generating WH Questions for an Asynchronous File Content ***********\n");
  42. final Future<List<WHQuestion>> futureWHQuestions = client.submitWHQuizJob(fromCommonRequestData(urlData));
  43. System.out.println(String.format("Async WH Quiz: %s", futureWHQuestions.get(5, MINUTES)));
  44. System.out.println("\n*********** Generating Open Questions for an Asynchronous File Content ***********\n");
  45. final Future<List<OpenQuestion>> futureOpenQuestions = client.submitOpenQuizJob(fromCommonRequestData(urlData));
  46. System.out.println(String.format("Async Open Quiz: %s", futureOpenQuestions.get(5, MINUTES)));
  47. System.out.println("\n*********** Generating Summary for an Asynchronous Text source ***********\n");
  48. final Future<Summary> futureSummary = client.submitSummaryJob(fromCommonRequestData(textData));
  49. System.out.println("Async Summary: " + futureSummary.get(5, MINUTES).getFacts());
  50. System.exit(0);
  51. }
  52. }

Please take care to set conservative read timeouts. Some API requests can take
some time, and a short timeout increases the likelihood of a problem within our
servers.

Development

To run the tests:

  1. mvn test

The library uses Project Lombok. While it is not a requirement, you
might want to install a plugin for your favorite IDE to
facilitate development.

License

  1. Copyright 2020 Flexudy
  2. Licensed under the Apache License, Version 2.0 (the "License"); you may not
  3. use this file except in compliance with the License. You may obtain a copy of
  4. the License at
  5. http://www.apache.org/licenses/LICENSE-2.0
  6. Unless required by applicable law or agreed to in writing, software
  7. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  8. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  9. License for the specific language governing permissions and limitations under
  10. the License.