From a1aa0140ee6725914c2d74498161b4f896a61534 Mon Sep 17 00:00:00 2001 From: Nitzan Jaitman Date: Thu, 24 Jan 2019 12:03:42 +0200 Subject: [PATCH] Remove advanced samples and bump gradle plugin version --- advanced-samples/build.gradle | 2 - .../gradle/wrapper/gradle-wrapper.jar | Bin 54208 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - advanced-samples/gradlew | 172 ---------- advanced-samples/gradlew.bat | 84 ----- advanced-samples/settings.gradle | 8 - all/build.gradle | 2 - all/gradle/wrapper/gradle-wrapper.jar | Bin 54208 -> 0 bytes all/gradle/wrapper/gradle-wrapper.properties | 6 - all/gradlew | 172 ---------- all/gradlew.bat | 84 ----- all/settings.gradle | 10 - backend/build.gradle | 39 --- .../android/sample/backend/MyBean.java | 13 - .../android/sample/backend/MyEndpoint.java | 42 --- .../android/sample/backend/SignResult.java | 28 -- .../src/main/webapp/WEB-INF/appengine-web.xml | 10 - .../main/webapp/WEB-INF/logging.properties | 12 - backend/src/main/webapp/WEB-INF/web.xml | 15 - build.gradle | 62 +++- gradle-scripts/common.gradle | 61 ---- gradle-scripts/sub-module-common.gradle | 5 - lib/build.gradle | 5 +- sample-signed/README.md | 40 --- sample-signed/build.gradle | 50 --- sample-signed/proguard-rules.pro | 16 - sample-signed/src/main/AndroidManifest.xml | 33 -- .../rest/BackendServerSignatureProvider.java | 59 ---- .../cloudinary/android/sample/rest/MyApi.java | 298 ------------------ .../android/sample/rest/MyApiRequest.java | 218 ------------- .../sample/rest/MyApiRequestInitializer.java | 121 ------- .../android/sample/rest/MyApiScopes.java | 46 --- .../android/sample/rest/model/JsonMap.java | 44 --- .../android/sample/rest/model/SignResult.java | 108 ------- .../sample/signed/app/MainActivity.java | 94 ------ .../sample/signed/app/MainApplication.java | 29 -- .../cloudinary/android/sample/util/Utils.java | 14 - .../drawable-xxxhdpi/ic_add_white_48dp.png | Bin 116 -> 0 bytes .../main/res/drawable-xxxhdpi/ic_launcher.png | Bin 4864 -> 0 bytes .../src/main/res/layout/activity_main.xml | 25 -- .../src/main/res/layout/content_main.xml | 15 - sample-signed/src/main/res/values/colors.xml | 6 - sample-signed/src/main/res/values/dimens.xml | 3 - sample-signed/src/main/res/values/strings.xml | 6 - sample-signed/src/main/res/values/styles.xml | 20 -- sample/build.gradle | 5 +- 46 files changed, 66 insertions(+), 2022 deletions(-) delete mode 100644 advanced-samples/build.gradle delete mode 100644 advanced-samples/gradle/wrapper/gradle-wrapper.jar delete mode 100644 advanced-samples/gradle/wrapper/gradle-wrapper.properties delete mode 100755 advanced-samples/gradlew delete mode 100644 advanced-samples/gradlew.bat delete mode 100644 advanced-samples/settings.gradle delete mode 100644 all/build.gradle delete mode 100644 all/gradle/wrapper/gradle-wrapper.jar delete mode 100644 all/gradle/wrapper/gradle-wrapper.properties delete mode 100755 all/gradlew delete mode 100644 all/gradlew.bat delete mode 100644 all/settings.gradle delete mode 100644 backend/build.gradle delete mode 100644 backend/src/main/java/com/cloudinary/android/sample/backend/MyBean.java delete mode 100644 backend/src/main/java/com/cloudinary/android/sample/backend/MyEndpoint.java delete mode 100644 backend/src/main/java/com/cloudinary/android/sample/backend/SignResult.java delete mode 100644 backend/src/main/webapp/WEB-INF/appengine-web.xml delete mode 100644 backend/src/main/webapp/WEB-INF/logging.properties delete mode 100644 backend/src/main/webapp/WEB-INF/web.xml delete mode 100644 gradle-scripts/common.gradle delete mode 100644 gradle-scripts/sub-module-common.gradle delete mode 100644 sample-signed/README.md delete mode 100755 sample-signed/build.gradle delete mode 100755 sample-signed/proguard-rules.pro delete mode 100644 sample-signed/src/main/AndroidManifest.xml delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/rest/BackendServerSignatureProvider.java delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApi.java delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiRequest.java delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiRequestInitializer.java delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiScopes.java delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/rest/model/JsonMap.java delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/rest/model/SignResult.java delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/signed/app/MainActivity.java delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/signed/app/MainApplication.java delete mode 100644 sample-signed/src/main/java/com/cloudinary/android/sample/util/Utils.java delete mode 100644 sample-signed/src/main/res/drawable-xxxhdpi/ic_add_white_48dp.png delete mode 100644 sample-signed/src/main/res/drawable-xxxhdpi/ic_launcher.png delete mode 100644 sample-signed/src/main/res/layout/activity_main.xml delete mode 100644 sample-signed/src/main/res/layout/content_main.xml delete mode 100644 sample-signed/src/main/res/values/colors.xml delete mode 100644 sample-signed/src/main/res/values/dimens.xml delete mode 100644 sample-signed/src/main/res/values/strings.xml delete mode 100644 sample-signed/src/main/res/values/styles.xml diff --git a/advanced-samples/build.gradle b/advanced-samples/build.gradle deleted file mode 100644 index 874eac4c..00000000 --- a/advanced-samples/build.gradle +++ /dev/null @@ -1,2 +0,0 @@ -apply from: '../gradle-scripts/common.gradle' -apply from: '../gradle-scripts/sub-module-common.gradle' \ No newline at end of file diff --git a/advanced-samples/gradle/wrapper/gradle-wrapper.jar b/advanced-samples/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 80ce3aadb6183656bea7ef7964e980e99bc3c088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54208 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$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="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save ( ) { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/advanced-samples/gradlew.bat b/advanced-samples/gradlew.bat deleted file mode 100644 index f9553162..00000000 --- a/advanced-samples/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="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 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/advanced-samples/settings.gradle b/advanced-samples/settings.gradle deleted file mode 100644 index 78354bdf..00000000 --- a/advanced-samples/settings.gradle +++ /dev/null @@ -1,8 +0,0 @@ -rootProject.name = 'advanced-samples' - -include(':lib') -project(':lib').projectDir = new File('../lib') -include(':backend') -project(':backend').projectDir = new File('../backend') -include(':sample-signed') -project(':sample-signed').projectDir = new File('../sample-signed') diff --git a/all/build.gradle b/all/build.gradle deleted file mode 100644 index 874eac4c..00000000 --- a/all/build.gradle +++ /dev/null @@ -1,2 +0,0 @@ -apply from: '../gradle-scripts/common.gradle' -apply from: '../gradle-scripts/sub-module-common.gradle' \ No newline at end of file diff --git a/all/gradle/wrapper/gradle-wrapper.jar b/all/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 7d8264201737cb296238eaea482eac31dbdfd678..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54208 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$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="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save ( ) { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/all/gradlew.bat b/all/gradlew.bat deleted file mode 100644 index f9553162..00000000 --- a/all/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="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 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/all/settings.gradle b/all/settings.gradle deleted file mode 100644 index b30f6a0e..00000000 --- a/all/settings.gradle +++ /dev/null @@ -1,10 +0,0 @@ -rootProject.name = 'cloudinary-android-all' - -include(':lib') -project(':lib').projectDir = new File('../lib') -include(':backend') -project(':backend').projectDir = new File('../backend') -include(':sample-signed') -project(':sample-signed').projectDir = new File('../sample-signed') -include(':sample') -project(':sample').projectDir = new File('../sample') \ No newline at end of file diff --git a/backend/build.gradle b/backend/build.gradle deleted file mode 100644 index 44f69aa3..00000000 --- a/backend/build.gradle +++ /dev/null @@ -1,39 +0,0 @@ -buildscript { - repositories { - jcenter() - } - dependencies { - classpath 'com.google.appengine:gradle-appengine-plugin:1.9.42' - } -} - -repositories { - jcenter(); -} - -apply plugin: 'java' -apply plugin: 'war' -apply plugin: 'appengine' - -sourceCompatibility = JavaVersion.VERSION_1_7 -targetCompatibility = JavaVersion.VERSION_1_7 - -dependencies { - appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.69' - compile group: 'com.cloudinary', name: 'cloudinary-http44', version: '1.19.0' - compile 'com.google.appengine:appengine-endpoints:1.9.69' - compile 'com.google.appengine:appengine-endpoints-deps:1.9.69' - compile 'javax.servlet:servlet-api:2.5' -} - - -appengine { - downloadSdk = true - appcfg { - oauth2 = true - } - endpoints { - getClientLibsOnBuild = true - getDiscoveryDocsOnBuild = true - } -} diff --git a/backend/src/main/java/com/cloudinary/android/sample/backend/MyBean.java b/backend/src/main/java/com/cloudinary/android/sample/backend/MyBean.java deleted file mode 100644 index 62f6ad74..00000000 --- a/backend/src/main/java/com/cloudinary/android/sample/backend/MyBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.cloudinary.android.sample.backend; - -class MyBean { - private String data; - - public String getData() { - return data; - } - - public void setData(String data) { - this.data = data; - } -} diff --git a/backend/src/main/java/com/cloudinary/android/sample/backend/MyEndpoint.java b/backend/src/main/java/com/cloudinary/android/sample/backend/MyEndpoint.java deleted file mode 100644 index 3fb1dda0..00000000 --- a/backend/src/main/java/com/cloudinary/android/sample/backend/MyEndpoint.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - For step-by-step instructions on connecting your Android application to this backend module, - see "App Engine Java Endpoints Module" template documentation at - https://github.com/GoogleCloudPlatform/gradle-appengine-templates/tree/master/HelloEndpoints -*/ - -package com.cloudinary.android.sample.backend; - -import com.cloudinary.Cloudinary; -import com.cloudinary.Util; -import com.google.api.server.spi.config.Api; -import com.google.api.server.spi.config.ApiMethod; -import com.google.api.server.spi.config.ApiNamespace; - -import java.util.Map; - -@Api( - name = "myApi", - version = "v1", - namespace = @ApiNamespace( - ownerDomain = "backend.sample.android.cloudinary.com", - ownerName = "backend.sample.android.cloudinary.com", - packagePath = "" - ) -) - -public class MyEndpoint { - - @ApiMethod(name = "sign") - public SignResult sign(Map options) { - long timestamp = System.currentTimeMillis() / 1000L; - String timestampStr = Long.toString(timestamp); - Map toSign = Util.buildUploadParams(options); - toSign.put("timestamp", timestampStr); - - // The secret is retrieved from an environment variable CLOUDINARY_URL (see console at cloudinary.com/console to get the cloudinary url) - // *** IMPORTANT *** Do not type your api secret here directly to avoid checking it into source control. - Cloudinary cloudinary = new Cloudinary(); - String signature = cloudinary.apiSignRequest(toSign, cloudinary.config.apiSecret); - return new SignResult(signature, cloudinary.config.apiKey, timestamp); - } -} diff --git a/backend/src/main/java/com/cloudinary/android/sample/backend/SignResult.java b/backend/src/main/java/com/cloudinary/android/sample/backend/SignResult.java deleted file mode 100644 index 38ddf5b7..00000000 --- a/backend/src/main/java/com/cloudinary/android/sample/backend/SignResult.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.cloudinary.android.sample.backend; - -/** - * The object model for the data we are sending through endpoints - */ -public class SignResult { - private final String signature; - private final String apiKey; - private final long timestamp; - - public SignResult(String signature, String apiKey, long timestamp) { - this.signature = signature; - this.apiKey = apiKey; - this.timestamp = timestamp; - } - - public String getSignature() { - return signature; - } - - public String getApiKey() { - return apiKey; - } - - public long getTimestamp() { - return timestamp; - } -} \ No newline at end of file diff --git a/backend/src/main/webapp/WEB-INF/appengine-web.xml b/backend/src/main/webapp/WEB-INF/appengine-web.xml deleted file mode 100644 index 04df8b70..00000000 --- a/backend/src/main/webapp/WEB-INF/appengine-web.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - myApplicationId - 1 - true - - - - - \ No newline at end of file diff --git a/backend/src/main/webapp/WEB-INF/logging.properties b/backend/src/main/webapp/WEB-INF/logging.properties deleted file mode 100644 index 12690692..00000000 --- a/backend/src/main/webapp/WEB-INF/logging.properties +++ /dev/null @@ -1,12 +0,0 @@ -# A default java.util.logging configuration. -# (All App Engine logging is through java.util.logging by default). -# -# To use this configuration, copy it into your application's WEB-INF -# folder and add the following to your appengine-web.xml: -# -# -# -# -# -# Set the default logging level for all loggers to WARNING -.level=WARNING diff --git a/backend/src/main/webapp/WEB-INF/web.xml b/backend/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index aa49fc9c..00000000 --- a/backend/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - SystemServiceServlet - com.google.api.server.spi.SystemServiceServlet - - services - com.cloudinary.android.sample.backend.MyEndpoint - - - - SystemServiceServlet - /_ah/spi/* - - \ No newline at end of file diff --git a/build.gradle b/build.gradle index f0acbad4..83851b8b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,2 +1,62 @@ -apply from: 'gradle-scripts/common.gradle' +allprojects { + apply plugin: 'maven' + apply plugin: 'signing' + + buildscript { + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.3.0' + } + } + + tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' + } + + repositories { + maven { + url "https://maven.google.com" + } + + jcenter() + mavenCentral() + } + + project.ext.set("publishGroupId", group) +} + +ext.loadExtraProperties = { fileName -> + def props = new Properties() + props.load(new FileInputStream(fileName)) + + props.each { key, val -> + project.ext[key] = val + } +} + +ext.getCloudinaryUrl = { -> + return findProperty("cloudinaryUrl") ?: System.getenv('CLOUDINARY_URL') +} + +ext.generateAndLoadLocalGradleProperties = { rootPath -> + // Create default local gradle properties (ignored by git) + def file = new File( 'gradle-local.properties') + if (file.createNewFile()) { + file.text = '# Uncomment and fill in your cloudinary url from cloudinary.com/console. *** IMPORTANT - This should be the url WITHOUT the api secret.\n# cloudinaryUrl=fill_in_your_cloudinary_url' + } + + loadExtraProperties file.absoluteFile +} + +subprojects { + tasks.withType(Test) { + maxParallelForks = Runtime.runtime.availableProcessors() + testLogging.showStandardStreams = true + } +} + generateAndLoadLocalGradleProperties '' \ No newline at end of file diff --git a/gradle-scripts/common.gradle b/gradle-scripts/common.gradle deleted file mode 100644 index a1c4e84d..00000000 --- a/gradle-scripts/common.gradle +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Shared script for every root project, including the topmost root. - */ -allprojects { - apply plugin: 'maven' - apply plugin: 'signing' - - buildscript { - repositories { - google() - jcenter() - } - - dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' - } - } - - tasks.withType(JavaCompile) { - options.encoding = 'UTF-8' - } - - repositories { - maven { - url "https://maven.google.com" - } - - jcenter() - mavenCentral() - } - - project.ext.set("publishGroupId", group) -} - -ext.loadExtraProperties = { fileName -> - def props = new Properties() - props.load(new FileInputStream(fileName)) - - props.each { key, val -> - project.ext[key] = val - } -} - -ext.getCloudinaryUrl = { -> - return findProperty("cloudinaryUrl") ?: System.getenv('CLOUDINARY_URL') -} - -ext.generateAndLoadLocalGradleProperties = { rootPath -> - // Create default local gradle properties (ignored by git) - def file = new File(rootPath + 'gradle-local.properties') - if (file.createNewFile()) { - file.text = '# Uncomment and fill in your cloudinary url from cloudinary.com/console. *** IMPORTANT - This should be the url WITHOUT the api secret.\n# cloudinaryUrl=fill_in_your_cloudinary_url' - } - loadExtraProperties file.absoluteFile -} -subprojects { - tasks.withType(Test) { - maxParallelForks = Runtime.runtime.availableProcessors() - testLogging.showStandardStreams = true - } -} \ No newline at end of file diff --git a/gradle-scripts/sub-module-common.gradle b/gradle-scripts/sub-module-common.gradle deleted file mode 100644 index 7e76ec42..00000000 --- a/gradle-scripts/sub-module-common.gradle +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Shared script for every root project except the topmost root - */ -loadExtraProperties '../gradle.properties' -generateAndLoadLocalGradleProperties '../' diff --git a/lib/build.gradle b/lib/build.gradle index ecf7dd7d..5a52f885 100755 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,7 +1,5 @@ apply plugin: 'com.android.library' - - android { compileSdkVersion 28 @@ -27,7 +25,6 @@ android { } } - task verifyCloudinaryCredentials { doFirst { if (!getCloudinaryUrl()) { @@ -139,4 +136,4 @@ task javadocJar(type: Jar, dependsOn: javadoc) { artifacts { archives javadocJar archives sourcesJar -} +} \ No newline at end of file diff --git a/sample-signed/README.md b/sample-signed/README.md deleted file mode 100644 index 19e8bdc8..00000000 --- a/sample-signed/README.md +++ /dev/null @@ -1,40 +0,0 @@ - -Cloudinary server-signed uploads sample app -========== - -This samples demonstrates the mechanism of signed uploads using a Google cloud endpoints backend server. The sample app will call the server to generate an upload signature, allowing the end users to uploads images without having to store credentials in the mobile client (You can read more about it in the library's readme file). -## Configuration -Once you clone this repository you need to open the advanced-samples folder (not the root!) and follow these steps: -1. Configure your Cloudinary cloud name for the sample app: - * Once you open the project a file named `gradle-local.properies` should be automatically created in the repository root (you can manually create it if it's not there). Note: This file is ignored by git and should never be checked in. - * The file should contain a single property with your cloudinary url, stripped to cloud name only: `cloudinaryUrl=cloudinary://@myCloudName` - * Run `./gradlew clean` (`gradlew clean` on Windows) from the repository root before proceeding. -2. Configure the full credentials for the backend module. The best practice is to create an environment variable with your Cloudinary credentials: - - `CLOUDINARY_URL=cloudinary://1234567890:abcdefghijklmno@myCloudName` - - This will be automatically picked by the backend module if setup correctly. You can find your cloudinary url in the [console](https://cloudinary.com/console) - -To see the app in action you should run the backend module, and once it's up run the sample-signed module. -Note: The default configuration assumes the sample-app runs on an emulator on the same machine that runs the backend. To test it on a real device you need to update the network configuration in the `BackendServerSignatureProvider` class. - -## Additional resources ########################################################## - -Additional resources are available at: - -* [Website](http://cloudinary.com) -* [Documentation](http://cloudinary.com/documentation) -* [Image transformations documentation](http://cloudinary.com/documentation/image_transformations) -* [Upload API documentation](http://cloudinary.com/documentation/upload_images) - -## Support - -You can [open an issue through GitHub](https://github.com/cloudinary/cloudinary_android/issues). - -Contact us at [support@cloudinary.com](mailto:support@cloudinary.com) - -Or via Twitter: [@cloudinary](https://twitter.com/#!/cloudinary) - -## License ####################################################################### - -Released under the MIT license. diff --git a/sample-signed/build.gradle b/sample-signed/build.gradle deleted file mode 100755 index 45196086..00000000 --- a/sample-signed/build.gradle +++ /dev/null @@ -1,50 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 28 - defaultConfig { - applicationId "com.cloudinary.android.sample.signed" - minSdkVersion 19 - targetSdkVersion 28 - versionCode 1 - versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - - // filter in the api credentials before building but without changing original source - // files - to make sure the credentials are not checked into source control. - // The url (without api secret!) is taken from a gradle property defined in - // gradle-local.properties in the project root. - manifestPlaceholders = [cloudinaryUrl:project.findProperty('cloudinaryUrl')] - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile project(':lib') - compile project(path: ':backend', configuration: 'android-endpoints') - compile('com.google.api-client:google-api-client-android:1.22.0') { - exclude module: 'httpclient' - } - compile('com.google.http-client:google-http-client-gson:1.22.0') { - exclude module: 'httpclient' - } - - compile "com.android.support:appcompat-v7:${androidSupportVersion}" - compile "com.android.support.constraint:constraint-layout:1.1.3" - compile "com.android.support:recyclerview-v7:${androidSupportVersion}" - compile "com.android.support:design:${androidSupportVersion}" - compile 'com.squareup.picasso:picasso:2.71828' - - androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { - exclude group: 'com.android.support', module: 'support-annotations' - exclude group: 'com.google.code.findbugs', module: 'jsr305' - }) - - testCompile 'junit:junit:4.12' -} diff --git a/sample-signed/proguard-rules.pro b/sample-signed/proguard-rules.pro deleted file mode 100755 index 9abf11a4..00000000 --- a/sample-signed/proguard-rules.pro +++ /dev/null @@ -1,16 +0,0 @@ -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/sample-signed/src/main/AndroidManifest.xml b/sample-signed/src/main/AndroidManifest.xml deleted file mode 100644 index e505e146..00000000 --- a/sample-signed/src/main/AndroidManifest.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/BackendServerSignatureProvider.java b/sample-signed/src/main/java/com/cloudinary/android/sample/rest/BackendServerSignatureProvider.java deleted file mode 100644 index f4ca8e44..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/BackendServerSignatureProvider.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.cloudinary.android.sample.rest; - -import com.cloudinary.android.sample.rest.model.JsonMap; -import com.cloudinary.android.sample.rest.model.SignResult; -import com.cloudinary.android.signed.Signature; -import com.cloudinary.android.signed.SignatureProvider; -import com.google.api.client.extensions.android.http.AndroidHttp; -import com.google.api.client.extensions.android.json.AndroidJsonFactory; -import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; -import com.google.api.client.googleapis.services.GoogleClientRequestInitializer; - -import java.io.IOException; -import java.util.Map; - -public class BackendServerSignatureProvider implements SignatureProvider { - private static MyApi myApiService = null; - - private synchronized SignResult signUpload(JsonMap options) { - if (myApiService == null) { // Only do this once - MyApi.Builder builder = new MyApi.Builder(AndroidHttp.newCompatibleTransport(), - new AndroidJsonFactory(), null) - // options for running against local devappserver - // - 10.0.2.2 is localhost's IP address in Android emulator - // - turn off compression when running against local devappserver - .setRootUrl("http://10.0.2.2:8080/_ah/api/") - .setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() { - @Override - public void initialize(AbstractGoogleClientRequest abstractGoogleClientRequest) throws IOException { - abstractGoogleClientRequest.setDisableGZipContent(true); - } - }); - // end options for devappserver - - myApiService = builder.build(); - } - - try { - return myApiService.sign(options).execute(); - } catch (IOException e) { - return null; - } - } - - @Override - public Signature provideSignature(Map options) { - JsonMap map = new JsonMap(); - for (Object key : options.keySet()) { - map.put((String) key, options.get(key)); - } - - SignResult res = signUpload(map); - return new Signature(res.getSignature(), res.getApiKey(), res.getTimestamp()); - } - - @Override - public String getName() { - return "SampleSignatureProvider"; - } -} diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApi.java b/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApi.java deleted file mode 100644 index b5cf0a9d..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApi.java +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -/* - * This code was generated by https://github.com/google/apis-client-generator/ - * (build: 2017-02-15 17:18:02 UTC) - * on 2017-06-20 at 13:28:59 UTC - * Modify at your own risk. - */ - -package com.cloudinary.android.sample.rest; - -import com.cloudinary.android.sample.rest.model.JsonMap; -import com.cloudinary.android.sample.rest.model.SignResult; - -/** - * Service definition for MyApi (v1). - *

- *

- * This is an API - *

- *

- *

- * For more information about this service, see the - * API Documentation - *

- *

- *

- * This service uses {@link MyApiRequestInitializer} to initialize global parameters via its - * {@link Builder}. - *

- * - * @author Google, Inc. - * @since 1.3 - */ -@SuppressWarnings("javadoc") -public class MyApi extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient { - - /** - * The default encoded root URL of the service. This is determined when the library is generated - * and normally should not be changed. - * - * @since 1.7 - */ - public static final String DEFAULT_ROOT_URL = "https://myApplicationId.appspot.com/_ah/api/"; - /** - * The default encoded service path of the service. This is determined when the library is - * generated and normally should not be changed. - * - * @since 1.7 - */ - public static final String DEFAULT_SERVICE_PATH = "myApi/v1/"; - /** - * The default encoded base URL of the service. This is determined when the library is generated - * and normally should not be changed. - */ - public static final String DEFAULT_BASE_URL = DEFAULT_ROOT_URL + DEFAULT_SERVICE_PATH; - - // Note: Leave this static initializer at the top of the file. - static { - com.google.api.client.util.Preconditions.checkState( - com.google.api.client.googleapis.GoogleUtils.MAJOR_VERSION == 1 && - com.google.api.client.googleapis.GoogleUtils.MINOR_VERSION >= 15, - "You are currently running with version %s of google-api-client. " + - "You need at least version 1.15 of google-api-client to run version " + - "1.22.0 of the myApi library.", com.google.api.client.googleapis.GoogleUtils.VERSION); - } - - /** - * Constructor. - *

- *

- * Use {@link Builder} if you need to specify any of the optional parameters. - *

- * - * @param transport HTTP transport, which should normally be: - *
    - *
  • Google App Engine: - * {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}
  • - *
  • Android: {@code newCompatibleTransport} from - * {@code com.google.api.client.extensions.android.http.AndroidHttp}
  • - *
  • Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()} - *
  • - *
- * @param jsonFactory JSON factory, which may be: - *
    - *
  • Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}
  • - *
  • Google GSON: {@code com.google.api.client.json.gson.GsonFactory}
  • - *
  • Android Honeycomb or higher: - * {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}
  • - *
- * @param httpRequestInitializer HTTP request initializer or {@code null} for none - * @since 1.7 - */ - public MyApi(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory, - com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) { - this(new Builder(transport, jsonFactory, httpRequestInitializer)); - } - - /** - * @param builder builder - */ - MyApi(Builder builder) { - super(builder); - } - - @Override - protected void initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest httpClientRequest) throws java.io.IOException { - super.initialize(httpClientRequest); - } - - /** - * Create a request for the method "sign". - *

- * This request holds the parameters needed by the myApi server. After setting any optional - * parameters, call the {@link Sign#execute()} method to invoke the remote operation. - * - * @param content the {@link JsonMap} - * @return the request - */ - public Sign sign(JsonMap content) throws java.io.IOException { - Sign result = new Sign(content); - initialize(result); - return result; - } - - /** - * Builder for {@link MyApi}. - *

- *

- * Implementation is not thread-safe. - *

- * - * @since 1.3.0 - */ - public static final class Builder extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient.Builder { - - /** - * Returns an instance of a new builder. - * - * @param transport HTTP transport, which should normally be: - *
    - *
  • Google App Engine: - * {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}
  • - *
  • Android: {@code newCompatibleTransport} from - * {@code com.google.api.client.extensions.android.http.AndroidHttp}
  • - *
  • Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()} - *
  • - *
- * @param jsonFactory JSON factory, which may be: - *
    - *
  • Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}
  • - *
  • Google GSON: {@code com.google.api.client.json.gson.GsonFactory}
  • - *
  • Android Honeycomb or higher: - * {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}
  • - *
- * @param httpRequestInitializer HTTP request initializer or {@code null} for none - * @since 1.7 - */ - public Builder(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory, - com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) { - super( - transport, - jsonFactory, - DEFAULT_ROOT_URL, - DEFAULT_SERVICE_PATH, - httpRequestInitializer, - false); - } - - /** - * Builds a new instance of {@link MyApi}. - */ - @Override - public MyApi build() { - return new MyApi(this); - } - - @Override - public Builder setRootUrl(String rootUrl) { - return (Builder) super.setRootUrl(rootUrl); - } - - @Override - public Builder setServicePath(String servicePath) { - return (Builder) super.setServicePath(servicePath); - } - - @Override - public Builder setHttpRequestInitializer(com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) { - return (Builder) super.setHttpRequestInitializer(httpRequestInitializer); - } - - @Override - public Builder setApplicationName(String applicationName) { - return (Builder) super.setApplicationName(applicationName); - } - - @Override - public Builder setSuppressPatternChecks(boolean suppressPatternChecks) { - return (Builder) super.setSuppressPatternChecks(suppressPatternChecks); - } - - @Override - public Builder setSuppressRequiredParameterChecks(boolean suppressRequiredParameterChecks) { - return (Builder) super.setSuppressRequiredParameterChecks(suppressRequiredParameterChecks); - } - - @Override - public Builder setSuppressAllChecks(boolean suppressAllChecks) { - return (Builder) super.setSuppressAllChecks(suppressAllChecks); - } - - /** - * Set the {@link MyApiRequestInitializer}. - * - * @since 1.12 - */ - public Builder setMyApiRequestInitializer( - MyApiRequestInitializer myapiRequestInitializer) { - return (Builder) super.setGoogleClientRequestInitializer(myapiRequestInitializer); - } - - @Override - public Builder setGoogleClientRequestInitializer( - com.google.api.client.googleapis.services.GoogleClientRequestInitializer googleClientRequestInitializer) { - return (Builder) super.setGoogleClientRequestInitializer(googleClientRequestInitializer); - } - } - - public class Sign extends MyApiRequest { - - private static final String REST_PATH = "sign"; - - /** - * Create a request for the method "sign". - *

- * This request holds the parameters needed by the the myApi server. After setting any optional - * parameters, call the {@link Sign#execute()} method to invoke the remote operation.

{@link - * Sign#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be - * called to initialize this instance immediately after invoking the constructor.

- * - * @param content the {@link JsonMap} - * @since 1.13 - */ - protected Sign(JsonMap content) { - super(MyApi.this, "POST", REST_PATH, content, SignResult.class); - } - - @Override - public Sign setAlt(java.lang.String alt) { - return (Sign) super.setAlt(alt); - } - - @Override - public Sign setFields(java.lang.String fields) { - return (Sign) super.setFields(fields); - } - - @Override - public Sign setKey(java.lang.String key) { - return (Sign) super.setKey(key); - } - - @Override - public Sign setOauthToken(java.lang.String oauthToken) { - return (Sign) super.setOauthToken(oauthToken); - } - - @Override - public Sign setPrettyPrint(java.lang.Boolean prettyPrint) { - return (Sign) super.setPrettyPrint(prettyPrint); - } - - @Override - public Sign setQuotaUser(java.lang.String quotaUser) { - return (Sign) super.setQuotaUser(quotaUser); - } - - @Override - public Sign setUserIp(java.lang.String userIp) { - return (Sign) super.setUserIp(userIp); - } - - @Override - public Sign set(String parameterName, Object value) { - return (Sign) super.set(parameterName, value); - } - } -} diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiRequest.java b/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiRequest.java deleted file mode 100644 index a244d5e8..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiRequest.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -/* - * This code was generated by https://github.com/google/apis-client-generator/ - * (build: 2017-02-15 17:18:02 UTC) - * on 2017-06-20 at 13:28:59 UTC - * Modify at your own risk. - */ - -package com.cloudinary.android.sample.rest; - -/** - * MyApi request. - * - * @since 1.3 - */ -@SuppressWarnings("javadoc") -public abstract class MyApiRequest extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest { - - /** - * Data format for the response. - */ - @com.google.api.client.util.Key - private java.lang.String alt; - /** - * Selector specifying which fields to include in a partial response. - */ - @com.google.api.client.util.Key - private java.lang.String fields; - /** - * API key. Your API key identifies your project and provides you with API access, quota, and - * reports. Required unless you provide an OAuth 2.0 token. - */ - @com.google.api.client.util.Key - private java.lang.String key; - /** - * OAuth 2.0 token for the current user. - */ - @com.google.api.client.util.Key("oauth_token") - private java.lang.String oauthToken; - /** - * Returns response with indentations and line breaks. - */ - @com.google.api.client.util.Key - private java.lang.Boolean prettyPrint; - /** - * Available to use for quota purposes for server-side applications. Can be any arbitrary string - * assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided. - */ - @com.google.api.client.util.Key - private java.lang.String quotaUser; - /** - * IP address of the site where the request originates. Use this if you want to enforce per-user - * limits. - */ - @com.google.api.client.util.Key - private java.lang.String userIp; - - /** - * @param client Google client - * @param method HTTP Method - * @param uriTemplate URI template for the path relative to the base URL. If it starts with a "/" - * the base path from the base URL will be stripped out. The URI template can also be a - * full URL. URI template expansion is done using - * {@link com.google.api.client.http.UriTemplate#expand(String, String, Object, boolean)} - * @param content A POJO that can be serialized into JSON or {@code null} for none - * @param responseClass response class to parse into - */ - public MyApiRequest( - MyApi client, String method, String uriTemplate, Object content, Class responseClass) { - super( - client, - method, - uriTemplate, - content, - responseClass); - } - - /** - * Data format for the response. [default: json] - */ - public java.lang.String getAlt() { - return alt; - } - - /** - * Data format for the response. - */ - public MyApiRequest setAlt(java.lang.String alt) { - this.alt = alt; - return this; - } - - /** - * Selector specifying which fields to include in a partial response. - */ - public java.lang.String getFields() { - return fields; - } - - /** - * Selector specifying which fields to include in a partial response. - */ - public MyApiRequest setFields(java.lang.String fields) { - this.fields = fields; - return this; - } - - /** - * API key. Your API key identifies your project and provides you with API access, quota, and - * reports. Required unless you provide an OAuth 2.0 token. - */ - public java.lang.String getKey() { - return key; - } - - /** - * API key. Your API key identifies your project and provides you with API access, quota, and - * reports. Required unless you provide an OAuth 2.0 token. - */ - public MyApiRequest setKey(java.lang.String key) { - this.key = key; - return this; - } - - /** - * OAuth 2.0 token for the current user. - */ - public java.lang.String getOauthToken() { - return oauthToken; - } - - /** - * OAuth 2.0 token for the current user. - */ - public MyApiRequest setOauthToken(java.lang.String oauthToken) { - this.oauthToken = oauthToken; - return this; - } - - /** - * Returns response with indentations and line breaks. [default: true] - */ - public java.lang.Boolean getPrettyPrint() { - return prettyPrint; - } - - /** - * Returns response with indentations and line breaks. - */ - public MyApiRequest setPrettyPrint(java.lang.Boolean prettyPrint) { - this.prettyPrint = prettyPrint; - return this; - } - - /** - * Available to use for quota purposes for server-side applications. Can be any arbitrary string - * assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided. - */ - public java.lang.String getQuotaUser() { - return quotaUser; - } - - /** - * Available to use for quota purposes for server-side applications. Can be any arbitrary string - * assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided. - */ - public MyApiRequest setQuotaUser(java.lang.String quotaUser) { - this.quotaUser = quotaUser; - return this; - } - - /** - * IP address of the site where the request originates. Use this if you want to enforce per-user - * limits. - */ - public java.lang.String getUserIp() { - return userIp; - } - - /** - * IP address of the site where the request originates. Use this if you want to enforce per-user - * limits. - */ - public MyApiRequest setUserIp(java.lang.String userIp) { - this.userIp = userIp; - return this; - } - - @Override - public final MyApi getAbstractGoogleClient() { - return (MyApi) super.getAbstractGoogleClient(); - } - - @Override - public MyApiRequest setDisableGZipContent(boolean disableGZipContent) { - return (MyApiRequest) super.setDisableGZipContent(disableGZipContent); - } - - @Override - public MyApiRequest setRequestHeaders(com.google.api.client.http.HttpHeaders headers) { - return (MyApiRequest) super.setRequestHeaders(headers); - } - - @Override - public MyApiRequest set(String parameterName, Object value) { - return (MyApiRequest) super.set(parameterName, value); - } -} diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiRequestInitializer.java b/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiRequestInitializer.java deleted file mode 100644 index 88c47193..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiRequestInitializer.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -/* - * This code was generated by https://github.com/google/apis-client-generator/ - * (build: 2017-02-15 17:18:02 UTC) - * on 2017-06-20 at 13:28:59 UTC - * Modify at your own risk. - */ - -package com.cloudinary.android.sample.rest; - -/** - * MyApi request initializer for setting properties like key and userIp. - *

- *

- * The simplest usage is to use it to set the key parameter: - *

- *

- *

- * public static final GoogleClientRequestInitializer KEY_INITIALIZER =
- * new MyApiRequestInitializer(KEY);
- * 
- *

- *

- * There is also a constructor to set both the key and userIp parameters: - *

- *

- *

- * public static final GoogleClientRequestInitializer INITIALIZER =
- * new MyApiRequestInitializer(KEY, USER_IP);
- * 
- *

- *

- * If you want to implement custom logic, extend it like this: - *

- *

- *

- * public static class MyRequestInitializer extends MyApiRequestInitializer {
- *
- * {@literal @}Override
- * public void initializeMyApiRequest(MyApiRequest{@literal <}?{@literal >} request)
- * throws IOException {
- * // custom logic
- * }
- * }
- * 
- *

- *

- * Finally, to set the key and userIp parameters and insert custom logic, extend it like this: - *

- *

- *

- * public static class MyRequestInitializer2 extends MyApiRequestInitializer {
- *
- * public MyKeyRequestInitializer() {
- * super(KEY, USER_IP);
- * }
- *
- * {@literal @}Override
- * public void initializeMyApiRequest(MyApiRequest{@literal <}?{@literal >} request)
- * throws IOException {
- * // custom logic
- * }
- * }
- * 
- *

- *

- * Subclasses should be thread-safe. - *

- * - * @since 1.12 - */ -public class MyApiRequestInitializer extends com.google.api.client.googleapis.services.json.CommonGoogleJsonClientRequestInitializer { - - public MyApiRequestInitializer() { - super(); - } - - /** - * @param key API key or {@code null} to leave it unchanged - */ - public MyApiRequestInitializer(String key) { - super(key); - } - - /** - * @param key API key or {@code null} to leave it unchanged - * @param userIp user IP or {@code null} to leave it unchanged - */ - public MyApiRequestInitializer(String key, String userIp) { - super(key, userIp); - } - - @Override - public final void initializeJsonRequest(com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest request) throws java.io.IOException { - super.initializeJsonRequest(request); - initializeMyApiRequest((MyApiRequest) request); - } - - /** - * Initializes MyApi request. - *

- *

- * Default implementation does nothing. Called from - * {@link #initializeJsonRequest(com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest)}. - *

- * - * @throws java.io.IOException I/O exception - */ - protected void initializeMyApiRequest(MyApiRequest request) throws java.io.IOException { - } -} diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiScopes.java b/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiScopes.java deleted file mode 100644 index f16d137d..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/MyApiScopes.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -/* - * This code was generated by https://github.com/google/apis-client-generator/ - * (build: 2017-02-15 17:18:02 UTC) - * on 2017-06-20 at 13:28:59 UTC - * Modify at your own risk. - */ - -package com.cloudinary.android.sample.rest; - -/** - * Available OAuth 2.0 scopes for use with the myApi. - * - * @since 1.4 - */ -public class MyApiScopes { - - /** - * View your email address. - */ - public static final String USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email"; - - private MyApiScopes() { - } - - /** - * Returns an unmodifiable set that contains all scopes declared by this class. - * - * @since 1.16 - */ - public static java.util.Set all() { - java.util.Set set = new java.util.HashSet(); - set.add(USERINFO_EMAIL); - return java.util.Collections.unmodifiableSet(set); - } -} diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/model/JsonMap.java b/sample-signed/src/main/java/com/cloudinary/android/sample/rest/model/JsonMap.java deleted file mode 100644 index 4d0c4602..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/model/JsonMap.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -/* - * This code was generated by https://github.com/google/apis-client-generator/ - * (build: 2017-02-15 17:18:02 UTC) - * on 2017-06-20 at 13:28:59 UTC - * Modify at your own risk. - */ - -package com.cloudinary.android.sample.rest.model; - -/** - * Model definition for JsonMap. - *

- *

This is the Java data model class that specifies how to parse/serialize into the JSON that is - * transmitted over HTTP when working with the myApi. For a detailed explanation see: - * https://developers.google.com/api-client-library/java/google-http-java-client/json - *

- * - * @author Google, Inc. - */ -@SuppressWarnings("javadoc") -public final class JsonMap extends com.google.api.client.json.GenericJson { - - @Override - public JsonMap set(String fieldName, Object value) { - return (JsonMap) super.set(fieldName, value); - } - - @Override - public JsonMap clone() { - return (JsonMap) super.clone(); - } - -} diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/model/SignResult.java b/sample-signed/src/main/java/com/cloudinary/android/sample/rest/model/SignResult.java deleted file mode 100644 index 0aa69a07..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/rest/model/SignResult.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -/* - * This code was generated by https://github.com/google/apis-client-generator/ - * (build: 2017-02-15 17:18:02 UTC) - * on 2017-06-20 at 13:28:59 UTC - * Modify at your own risk. - */ - -package com.cloudinary.android.sample.rest.model; - -/** - * Model definition for SignResult. - * - *

This is the Java data model class that specifies how to parse/serialize into the JSON that is - * transmitted over HTTP when working with the myApi. For a detailed explanation see: - * https://developers.google.com/api-client-library/java/google-http-java-client/json - *

- * - * @author Google, Inc. - */ -@SuppressWarnings("javadoc") -public final class SignResult extends com.google.api.client.json.GenericJson { - - /** - * The value may be {@code null}. - */ - @com.google.api.client.util.Key - private java.lang.String apiKey; - - /** - * The value may be {@code null}. - */ - @com.google.api.client.util.Key - private java.lang.String signature; - - /** - * The value may be {@code null}. - */ - @com.google.api.client.util.Key - @com.google.api.client.json.JsonString - private java.lang.Long timestamp; - - /** - * @return value or {@code null} for none - */ - public java.lang.String getApiKey() { - return apiKey; - } - - /** - * @param apiKey apiKey or {@code null} for none - */ - public SignResult setApiKey(java.lang.String apiKey) { - this.apiKey = apiKey; - return this; - } - - /** - * @return value or {@code null} for none - */ - public java.lang.String getSignature() { - return signature; - } - - /** - * @param signature signature or {@code null} for none - */ - public SignResult setSignature(java.lang.String signature) { - this.signature = signature; - return this; - } - - /** - * @return value or {@code null} for none - */ - public java.lang.Long getTimestamp() { - return timestamp; - } - - /** - * @param timestamp timestamp or {@code null} for none - */ - public SignResult setTimestamp(java.lang.Long timestamp) { - this.timestamp = timestamp; - return this; - } - - @Override - public com.cloudinary.android.sample.backend.myApi.model.SignResult set(String fieldName, Object value) { - return (com.cloudinary.android.sample.backend.myApi.model.SignResult) super.set(fieldName, value); - } - - @Override - public com.cloudinary.android.sample.backend.myApi.model.SignResult clone() { - return (com.cloudinary.android.sample.backend.myApi.model.SignResult) super.clone(); - } - -} diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/signed/app/MainActivity.java b/sample-signed/src/main/java/com/cloudinary/android/sample/signed/app/MainActivity.java deleted file mode 100644 index cf1ac016..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/signed/app/MainActivity.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.cloudinary.android.sample.signed.app; - -import android.content.Intent; -import android.os.Bundle; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.View; -import android.widget.ImageView; - -import com.cloudinary.Transformation; -import com.cloudinary.android.MediaManager; -import com.cloudinary.android.callback.ErrorInfo; -import com.cloudinary.android.callback.UploadCallback; -import com.cloudinary.android.sample.signed.R; -import com.cloudinary.android.sample.util.Utils; -import com.squareup.picasso.Picasso; - -import java.util.Map; - -public class MainActivity extends AppCompatActivity { - private static final int CHOOSE_IMAGE_REQUEST_CODE = 1000; - public ImageView imageView; - private FloatingActionButton fab; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_main); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - imageView = (ImageView) findViewById(R.id.imageView); - fab = (FloatingActionButton) findViewById(R.id.fab); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - openMediaChooser(); - } - }); - } - - private void openMediaChooser() { - Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setType("image/*"); - startActivityForResult(intent, CHOOSE_IMAGE_REQUEST_CODE); - } - - private void showSnackBar(String message) { - Snackbar.make(fab, message, Snackbar.LENGTH_LONG).show(); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK && requestCode == CHOOSE_IMAGE_REQUEST_CODE && data != null && data.getData() != null) { - MediaManager.get().upload(data.getData()).callback(new UploadCallback() { - - @Override - public void onStart(String requestId) { - showSnackBar("Upload started..."); - } - - @Override - public void onProgress(String requestId, long bytes, long totalBytes) { - } - - @Override - public void onSuccess(String requestId, Map resultData) { - Picasso.with(MainActivity.this).load(getUrlForMaxWidth(resultData.get("public_id").toString())).into(imageView); - showSnackBar("Upload complete!"); - } - - @Override - public void onError(String requestId, ErrorInfo error) { - showSnackBar("Upload error: " + error.getDescription()); - } - - @Override - public void onReschedule(String requestId, ErrorInfo error) { - showSnackBar("Upload rescheduled."); - } - }).dispatch(); - } - } - - public String getUrlForMaxWidth(String imageId) { - int width = Utils.getScreenWidth(this); - return MediaManager.get().getCloudinary().url().transformation(new Transformation().width(width)).generate(imageId); - } -} diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/signed/app/MainApplication.java b/sample-signed/src/main/java/com/cloudinary/android/sample/signed/app/MainApplication.java deleted file mode 100644 index 6c23defc..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/signed/app/MainApplication.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.cloudinary.android.sample.signed.app; - - -import android.app.Application; - -import com.cloudinary.android.LogLevel; -import com.cloudinary.android.MediaManager; -import com.cloudinary.android.sample.rest.BackendServerSignatureProvider; - -public class MainApplication extends Application { - static MainApplication _instance; - - public static MainApplication get() { - return _instance; - } - - @Override - public void onCreate() { - super.onCreate(); - - // This can be called any time regardless of initialization. - MediaManager.setLogLevel(LogLevel.DEBUG); - - // Mandatory - call a flavor of init. Config can be null if cloudinary_url is provided in the manifest. - MediaManager.init(this, new BackendServerSignatureProvider()); - - _instance = this; - } -} diff --git a/sample-signed/src/main/java/com/cloudinary/android/sample/util/Utils.java b/sample-signed/src/main/java/com/cloudinary/android/sample/util/Utils.java deleted file mode 100644 index f8e4d085..00000000 --- a/sample-signed/src/main/java/com/cloudinary/android/sample/util/Utils.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.cloudinary.android.sample.util; - -import android.content.Context; -import android.graphics.Point; -import android.view.WindowManager; - -public class Utils { - public static int getScreenWidth(Context context) { - WindowManager window = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - Point point = new Point(); - window.getDefaultDisplay().getSize(point); - return point.x; - } -} diff --git a/sample-signed/src/main/res/drawable-xxxhdpi/ic_add_white_48dp.png b/sample-signed/src/main/res/drawable-xxxhdpi/ic_add_white_48dp.png deleted file mode 100644 index 165c907d96ff40b1a6345b1fa7919717f4edd8f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116 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 - - - - - - - - - - - - - diff --git a/sample-signed/src/main/res/layout/content_main.xml b/sample-signed/src/main/res/layout/content_main.xml deleted file mode 100644 index 90998200..00000000 --- a/sample-signed/src/main/res/layout/content_main.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/sample-signed/src/main/res/values/colors.xml b/sample-signed/src/main/res/values/colors.xml deleted file mode 100644 index 3ab3e9cb..00000000 --- a/sample-signed/src/main/res/values/colors.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - #3F51B5 - #303F9F - #FF4081 - diff --git a/sample-signed/src/main/res/values/dimens.xml b/sample-signed/src/main/res/values/dimens.xml deleted file mode 100644 index 59a0b0c4..00000000 --- a/sample-signed/src/main/res/values/dimens.xml +++ /dev/null @@ -1,3 +0,0 @@ - - 16dp - diff --git a/sample-signed/src/main/res/values/strings.xml b/sample-signed/src/main/res/values/strings.xml deleted file mode 100644 index 895601ba..00000000 --- a/sample-signed/src/main/res/values/strings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - Cloudinary Signed Uploads Sample App - Image uploaded successfully. - Error: %s - Upload resource - diff --git a/sample-signed/src/main/res/values/styles.xml b/sample-signed/src/main/res/values/styles.xml deleted file mode 100644 index 545b9c6d..00000000 --- a/sample-signed/src/main/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - -