Skip to content

Commit

Permalink
feat: Enhance SDK with new features, improve documentation, and trans…
Browse files Browse the repository at this point in the history
…ition to Maven (#7)

- Add GitHub Actions workflow for automated releases
- Include new README section for SDK import with Gradle and Maven
dependency details
- Implement new method for creating and polling chats
- Fix error handling in OAuth client initialization
- Update CONTRIBUTING.md to reflect Gradle to Maven transition
- Rename example files in README for clarity
- Remove Gradle configuration files and migrate to Maven build system

---------

Co-authored-by: chyroc <[email protected]>
  • Loading branch information
hanzeINGH and chyroc authored Dec 18, 2024
1 parent 707fb5d commit 6b0449f
Show file tree
Hide file tree
Showing 27 changed files with 635 additions and 501 deletions.
4 changes: 4 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
language: en-US
reviews:
high_level_summary: false # disable auto summary generation
47 changes: 47 additions & 0 deletions .github/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name-template: 'v$RESOLVED_VERSION'
tag-template: 'v$RESOLVED_VERSION'
categories:
- title: '🚀 Features'
labels:
- 'feature'
- 'enhancement'
- title: '🐛 Bug Fixes'
labels:
- 'fix'
- 'bugfix'
- 'bug'
- title: '🧰 Maintenance'
labels:
- 'chore'
- 'documentation'
autolabeler:
- label: 'chore'
files:
- '*.md'
branch:
- '/docs{0,1}\/.+/'
- label: 'bug'
branch:
- '/fix\/.+/'
title:
- '/fix/i'
- label: 'enhancement'
branch:
- '/feature\/.+/'
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
version-resolver:
major:
labels:
- 'major'
minor:
labels:
- 'minor'
patch:
labels:
- 'patch'
default: patch
template: |
## Changes
$CHANGES
54 changes: 35 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,39 +22,55 @@ jobs:
- { java-version: "11", os: "macos-latest", os-label: "macOS" }

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v1
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java-version }}

- name: Grant execute permission for gradlew
run: chmod +x gradlew
distribution: 'temurin'
java-version: ${{ matrix.java-version }}
cache: 'maven'

- name: Code style check
run: |
./gradlew spotlessCheck
run: mvn spotless:check

- name: Build and Test
run: ./gradlew build test
- name: Build and Test with Coverage
run: |
mvn -pl api clean test-compile
mvn -pl api test jacoco:report
- name: Debug Test Results (Unix)
if: runner.os != 'Windows'
run: |
echo "Test Results:"
find . -name "TEST-*.xml" -exec cat {} \;
echo "JaCoCo Report Location:"
ls -la api/target/site/jacoco/
- name: Debug Test Results (Windows)
if: runner.os == 'Windows'
run: |
echo "Test Results:"
Get-ChildItem -Recurse -Filter "TEST-*.xml" | Get-Content
echo "JaCoCo Report Location:"
Get-ChildItem -Path "api\target\site\jacoco" -Force
- name: Generate JaCoCo Report
run: ./gradlew jacocoTestReport
run: mvn -pl api jacoco:report

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./build/reports/jacoco/test/jacocoTestReport.xml
files: ./api/target/site/jacoco/jacoco.xml
flags: unittests
fail_ci_if_error: true
verbose: true

- name: Cache Gradle packages
uses: actions/cache@v3
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-gradle-
${{ runner.os }}-m2-
29 changes: 29 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Release
on:
push:
tags:
- '*'

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
server-id: 'central'
server-username: OSSRH_USERNAME
server-password: OSSRH_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: SIGN_KEY_PASS
cache: 'maven'

- name: Build and Release
env:
SIGN_KEY_PASS: ${{ secrets.GPG_PASSPHRASE }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
run: |
mvn -pl api clean deploy -P release
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
**/build/*
**/bin/*
**/obj/*
.mvn

# Compiled class file
*.class
Expand Down Expand Up @@ -36,4 +37,5 @@ hs_err_pid*
replay_pid*

# BlueJ files
*.ctxt
*.ctxt
**/target
26 changes: 14 additions & 12 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@

Ensure your development environment has:
- JDK 1.8 (Java 8)
- Gradle 8.x
- Maven 3.x

## Building the Project

After cloning the project, run in the project root:

```shell
./gradlew build
+mvn clean install
```

## IDE Setup

IntelliJ IDEA is recommended. When importing the project, select import as a Gradle project.
IntelliJ IDEA is recommended. When importing the project, select import as a Maven project.

## Code Style

Expand All @@ -26,32 +26,34 @@ This project follows Google Java Style guidelines. In IntelliJ IDEA:
You can run following command on the terminal to format code:

```shell
./gradlew spotlessApply
mvn spotless:apply
```

## Git Hooks

We use the Gradle spotless plugin to ensure code quality. The project is configured to run checks automatically before each commit.
We use the Maven spotless plugin to ensure code quality. The project is configured to run checks automatically before each commit.

To manually format code, run:

```shell
./gradlew spotlessApply
mvn spotless:apply
```

## Dependency Management

This project uses Gradle for dependency management. To add new dependencies, modify the `build.gradle` file.
This project uses Maven for dependency management. To add new dependencies, modify the `build.gradle` file.

Example:
```groovy
dependencies {
implementation 'com.example:library:1.0.0'
}
```xml
<dependency>
<groupId>com.example</groupId>
<artifactId>example</artifactId>
<version>version</version>
</dependency>
```

Make sure to run tests before committing:

```shell
./gradlew test jacocoTestReport jacocoTestCoverageVerification
mvn -pl api test jacoco:report
```
36 changes: 27 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,24 @@ Key Features:
- Optimized list APIs with Iterator Page object returns
- Simple and intuitive API design for ease of use

## Importing

### Gradle
```groovy
dependencies {
implementation 'com.coze:coze-api:+'
}
```

### Maven
```xml
<dependency>
<groupId>com.coze</groupId>
<artifactId>coze-api</artifactId>
<version>version</version>
</dependency>

```

## Usage

Expand All @@ -24,23 +42,23 @@ Key Features:
| oauth by web code | [WebOAuthExample.java](example/src/main/java/example/auth/WebOAuthExample.java) |
| oauth by jwt flow | [JWTsOauthExample.java](example/src/main/java/example/auth/JWTOAuthExample.java) |
| oauth by pkce flow | [PKCEOauthExample.java](example/src/main/java/example/auth/PKCEOAuthExample.java) |
| oauth by device flow | [DevicesOAuthExample.java](example/src/main/java/example/auth/DevicesOAuthExample.java) |
| oauth by device flow | [DevicesOAuthExample.java](example/src/main/java/example/auth/DeviceOAuthExample.java) |
| handle auth exception | [HandlerExceptionExample.java](example/src/main/java/example/auth/HandlerExceptionExample.java) |
| bot create, publish and chat | [PublishBotExample.java](example/src/main/java/example/bot/PublishBotExample.java) |
| get bot and bot list | [GetBotExample.java](example/src/main/java/example/bot/GetBotExample.java) |
| bot create, publish and chat | [PublishBotExample.java](example/src/main/java/example/bot/BotPublishExample.java) |
| get bot and bot list | [GetBotExample.java](example/src/main/java/example/bot/BotRetrieveExample.java) |
| non-stream chat | [ChatExample.java](example/src/main/java/example/chat/ChatExample.java) |
| steam chat | [StreamChatExample.java](example/src/main/java/example/chat/StreamChatExample.java) |
| chat with local plugin | [SubmitToolOutputExample.java](example/src/main/java/example/chat/SubmitToolOutputExample.java) |
| chat with image | [ChatWithImageExample.java](example/src/main/java/example/chat/ChatWithImageExample.java) |
| non-stream workflow chat | [RunWorkflowExample.java](example/src/main/java/example/workflow/RunWorkflowExample.java) |
| stream workflow chat | [StreamWorkflowExample.java](example/src/main/java/example/workflow/StreamWorkflowExample.java) |
| async workflow run | [AsyncRunWorkflowExample.java](example/src/main/java/example/workflow/AsyncRunWorkflowExample.java) |
| conversation | [CreateConversationExample.java](example/src/main/java/example/conversation/CreateConversationExample.java) |
| list conversation | [ListConversationsExample.java](example/src/main/java/example/conversation/ListConversationsExample.java) |
| workspace | [ListWorkspaceExample.java](example/src/main/java/example/workspace/ListWorkspaceExample.java) |
| create update delete message | [ListWorkspaceExample.java](example/src/main/java/example/conversation/message/CrudMessageExample.java) |
| list message | [ListWorkspaceExample.java](example/src/main/java/example/conversation/message/ListMessageExample.java) |
| create update delete document | [ListWorkspaceExample.java](example/src/main/java/example/datasets/document/CrudDocumentExample.java) |
| conversation | [CreateConversationExample.java](example/src/main/java/example/conversation/ConversationCreateExample.java) |
| list conversation | [ListConversationsExample.java](example/src/main/java/example/conversation/ConversationsListExample.java) |
| workspace | [ListWorkspaceExample.java](example/src/main/java/example/workspace/WorkspaceListExample.java) |
| create update delete message | [ListWorkspaceExample.java](example/src/main/java/example/conversation/message/MessageCrudExample.java) |
| list message | [ListWorkspaceExample.java](example/src/main/java/example/conversation/message/MessageListExample.java) |
| create update delete document | [ListWorkspaceExample.java](example/src/main/java/example/datasets/document/DocumentCrudExample.java) |
| initial client | [InitServiceExample.java](example/src/main/java/example/service/InitClientExample.java) |
| how to handle exception | [HandlerExceptionExample.java](example/src/main/java/example/service/HandlerExceptionExample.java) |
| get request log id | [GetLogExample.java](example/src/main/java/example/service/GetLogExample.java) |
Expand Down
87 changes: 0 additions & 87 deletions api/build.gradle

This file was deleted.

Loading

0 comments on commit 6b0449f

Please sign in to comment.