diff --git a/.gitattributes b/.gitattributes index 5a0d5e4..097f9f9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,9 @@ -# Auto detect text files and perform LF normalization -* text=auto eol=lf +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/.gitignore b/.gitignore index e1c082d..c36eb50 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .bloop/ .gradle/ +.gradle/ .idea/ .metals/ bin/ diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 9f4d8ba..0000000 --- a/build.gradle +++ /dev/null @@ -1,32 +0,0 @@ -plugins { - id "scala" - id "java-library" -} - -group "com.tribufu.sdk" -version "1.0.0" - -repositories { - mavenCentral() - maven { url "https://mvn.tribufu.com/snapshots" } -} - -dependencies { - // Use Scala 2.13 in our library project - implementation "org.scala-lang:scala-library:2.13.9" - - // This dependency is used internally, and not exposed to consumers on their own compile classpath. - implementation "com.google.guava:guava:31.1-jre" - - // Use Scalatest for testing our library - testImplementation "junit:junit:4.13.2" - testImplementation "org.scalatest:scalatest_2.13:3.2.13" - testImplementation "org.scalatestplus:junit-4-13_2.13:3.2.2.0" - - // Need scala-xml at test runtime - testRuntimeOnly "org.scala-lang.modules:scala-xml_2.13:1.2.0" -} - -test { - useJUnitPlatform() -} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 41d9927..c1962a7 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 41dfb87..37aef8d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1b6c787..aeb74cb 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -143,12 +140,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,6 +194,10 @@ if "$cygwin" || "$msys" ; then done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in @@ -205,6 +210,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index 107acd3..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/lib/build.gradle b/lib/build.gradle new file mode 100644 index 0000000..7b7e911 --- /dev/null +++ b/lib/build.gradle @@ -0,0 +1,26 @@ +plugins { + id "java-library" +} + +version = "0.0.4" +archivesBaseName = "tribufu" + +repositories { + mavenCentral() +} + +dependencies { + api "org.apache.commons:commons-math3:3.6.1" + implementation "com.google.guava:guava:31.1-jre" + testImplementation "org.junit.jupiter:junit-jupiter:5.9.1" +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(11) + } +} + +tasks.named("test") { + useJUnitPlatform() +} diff --git a/lib/src/main/java/com/tribufu/sdk/TribufuClient.java b/lib/src/main/java/com/tribufu/sdk/TribufuClient.java new file mode 100644 index 0000000..900f2fb --- /dev/null +++ b/lib/src/main/java/com/tribufu/sdk/TribufuClient.java @@ -0,0 +1,39 @@ +// Copyright (c) Tribufu. All Rights Reserved. + +package com.tribufu.sdk; + +import java.net.http.HttpClient; +import java.util.HashMap; +import java.util.Map; + +public class TribufuClient { + public static final String VERSION = "0.0.0"; + + private final long id; + private final String secret; + private final HttpClient http; + private Map defaultHeaders; + + public TribufuClient(long id, String secret) { + this.id = id; + this.secret = secret; + + String targetTriple = "Java"; + String userAgent = String.format("Tribufu/%s (+https://api.tribufu.com; %s)", VERSION, targetTriple); + + Map headers = new HashMap<>(); + headers.put("User-Agent", userAgent); + headers.put("X-Tribufu-Language", "java"); + headers.put("X-Tribufu-Version", VERSION); + + this.defaultHeaders = headers; + + this.http = HttpClient.newBuilder() + .version(HttpClient.Version.HTTP_2) + .build(); + } + + public long getId() { + return this.id; + } +} diff --git a/lib/src/test/java/com/tribufu/sdk/TribufuClientTest.java b/lib/src/test/java/com/tribufu/sdk/TribufuClientTest.java new file mode 100644 index 0000000..665ed36 --- /dev/null +++ b/lib/src/test/java/com/tribufu/sdk/TribufuClientTest.java @@ -0,0 +1,14 @@ +// Copyright (c) TribuFu. All Rights Reserved + +package com.tribufu.sdk; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class TribufuClientTest { + @Test + void clientGetId() { + TribufuClient client = new TribufuClient(0, "client_secret"); + assertEquals(0, client.getId()); + } +} diff --git a/settings.gradle b/settings.gradle index fcbef66..165c9c5 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,6 @@ -rootProject.name = "TribuFu" +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.4.0' +} + +rootProject.name = 'SDK-JVM' +include('lib') diff --git a/src/main/scala/com/tribufu/sdk/ServiceInfo.scala b/src/main/scala/com/tribufu/sdk/ServiceInfo.scala deleted file mode 100644 index 625cbae..0000000 --- a/src/main/scala/com/tribufu/sdk/ServiceInfo.scala +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) TribuFu. All Rights Reserved. - -package com.tribufu.sdk - -class ServiceInfo { - def getVersion(): String = "0.0.0" -}