From 1687d78f332f4c918844b6cd4e2fef8ea9314472 Mon Sep 17 00:00:00 2001 From: dmahapatro Date: Sun, 26 Jul 2015 22:14:40 -0400 Subject: [PATCH 1/4] Grails 3 Upgrade - Initial Commit --- .gitignore | 28 +- ....codehaus.groovy.eclipse.preferences.prefs | 3 - .travis.yml | 8 +- OauthGrailsPlugin.groovy | 14 - application.properties | 4 - build.gradle | 75 +++ gradle.properties | 2 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 51018 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 +++++++ gradlew.bat | 90 ++++ grails-app/conf/BuildConfig.groovy | 33 -- grails-app/conf/Config.groovy | 12 - grails-app/conf/DataSource.groovy | 32 -- grails-app/conf/OauthUrlMappings.groovy | 1 - grails-app/conf/application.yml | 115 +++++ grails-app/conf/logback.groovy | 28 ++ .../oauth/scribe/OauthController.groovy | 23 +- .../plugins/oauth/scribe/Application.groovy | 10 + .../oauth/scribe/OauthResourceService.groovy | 4 +- .../oauth/scribe/OauthService.groovy | 12 +- .../InvalidOauthProviderException.groovy | 2 +- .../exception/UnknownProviderException.groovy | 2 +- .../oauth/scribe/OauthTagLib.groovy | 4 +- grailsw | 351 -------------- grailsw.bat | 176 ------- settings.gradle | 1 + .../oauth/scribe/OauthGrailsPlugin.groovy | 18 + .../oauth/scribe/OauthProvider.groovy | 2 +- .../oauth/scribe/SupportedOauthVersion.groovy | 2 +- .../InvalidProviderClassException.groovy | 2 +- .../MissingRequestTokenException.groovy | 2 +- .../oauth/scribe/holder/RedirectHolder.groovy | 2 +- .../scribe/resource/ResourceAccessor.groovy | 2 +- .../test/Test10aApiImplementation.groovy | 2 +- .../oauth/scribe/util/DynamicMethods.groovy | 2 +- .../scribe/AuthorisationProcessSpec.groovy | 6 +- .../oauth/scribe/GMockAddon.groovy | 2 +- .../oauth/scribe/OauthControllerSpec.groovy | 457 ++++++++++++++++++ .../scribe/OauthResourceServiceSpec.groovy | 110 +++++ .../oauth/scribe/OauthServiceSpec.groovy | 6 +- .../oauth/scribe/OauthTagLibSpec.groovy | 4 +- .../resource/ResourceAccessorSpec.groovy | 2 +- .../oauth/scribe/OauthControllerSpec.groovy | 457 ------------------ .../scribe/OauthResourceServiceSpec.groovy | 114 ----- wrapper/grails-wrapper-runtime-2.3.11.jar | Bin 6185 -> 0 bytes wrapper/grails-wrapper.properties | 1 - wrapper/springloaded-1.2.0.RELEASE.jar | Bin 412416 -> 0 bytes 48 files changed, 1134 insertions(+), 1259 deletions(-) delete mode 100644 .settings/org.codehaus.groovy.eclipse.preferences.prefs delete mode 100644 OauthGrailsPlugin.groovy delete mode 100644 application.properties create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat delete mode 100644 grails-app/conf/BuildConfig.groovy delete mode 100644 grails-app/conf/Config.groovy delete mode 100644 grails-app/conf/DataSource.groovy create mode 100644 grails-app/conf/application.yml create mode 100644 grails-app/conf/logback.groovy rename grails-app/controllers/{ => grails/plugins}/uk/co/desirableobjects/oauth/scribe/OauthController.groovy (84%) create mode 100644 grails-app/init/grails/plugins/oauth/scribe/Application.groovy rename grails-app/services/{ => grails/plugins}/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy (90%) rename grails-app/services/{ => grails/plugins}/uk/co/desirableobjects/oauth/scribe/OauthService.groovy (94%) rename grails-app/services/{ => grails/plugins}/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy (77%) rename grails-app/services/{ => grails/plugins}/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy (75%) rename grails-app/taglib/{ => grails/plugins}/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy (92%) delete mode 100755 grailsw delete mode 100644 grailsw.bat create mode 100644 settings.gradle create mode 100644 src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy rename src/{groovy => main/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy (80%) rename src/{groovy => main/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy (87%) rename src/{groovy => main/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy (83%) rename src/{groovy => main/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy (87%) rename src/{groovy => main/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy (94%) rename src/{groovy => main/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy (91%) rename src/{groovy => main/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy (85%) rename src/{groovy => main/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy (74%) rename {test/unit => src/test/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy (96%) rename {test/unit => src/test/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy (85%) create mode 100644 src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy create mode 100644 src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy rename {test/unit => src/test/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy (98%) rename {test/unit => src/test/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy (97%) rename {test/unit => src/test/groovy/grails/plugins}/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy (94%) delete mode 100644 test/unit/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy delete mode 100644 test/unit/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy delete mode 100644 wrapper/grails-wrapper-runtime-2.3.11.jar delete mode 100644 wrapper/grails-wrapper.properties delete mode 100644 wrapper/springloaded-1.2.0.RELEASE.jar diff --git a/.gitignore b/.gitignore index 5722493..9596f32 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,14 @@ -.idea -.classpath -.project -settings.xml -.settings -*.iml -*.iws -*.ipr -plugin.xml -*.zip -target -out -web-app -grails-app/i18n +# Created by .ignore support plugin (hsz.mobi) +### Gradle template +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + + +/*.iml +.idea \ No newline at end of file diff --git a/.settings/org.codehaus.groovy.eclipse.preferences.prefs b/.settings/org.codehaus.groovy.eclipse.preferences.prefs deleted file mode 100644 index bf339c7..0000000 --- a/.settings/org.codehaus.groovy.eclipse.preferences.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Created by grails -eclipse.preferences.version=1 -groovy.dont.generate.class.files=true diff --git a/.travis.yml b/.travis.yml index 15cfeb7..1173286 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,8 @@ jdk: before_script: - chmod +x grailsw - - ./grailsw clean - - ./grailsw refresh-dependencies - - ./grailsw compile + - ./grails clean + - ./grails refresh-dependencies + - ./grails compile -script: ./grailsw test-app +script: ./grails test-app diff --git a/OauthGrailsPlugin.groovy b/OauthGrailsPlugin.groovy deleted file mode 100644 index 979d391..0000000 --- a/OauthGrailsPlugin.groovy +++ /dev/null @@ -1,14 +0,0 @@ -class OauthGrailsPlugin { - - def version = "2.6.1" - - def grailsVersion = "1.3.1 > *" - - def author = "Antony Jones, Peter Ledbrook" - def authorEmail = "aj@desirableobjects.co.uk" - def title = "Oauth Plugin" - def description = 'Provides oAuth integration for Grails, using the Scribe framework' - - def documentation = "http://antony.github.com/grails-oauth-scribe/" - def scm = [url: "https://github.com/antony/grails-oauth-scribe"] -} diff --git a/application.properties b/application.properties deleted file mode 100644 index 102298d..0000000 --- a/application.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Grails Metadata file -#Thu Mar 20 11:37:45 CET 2014 -app.grails.version=2.3.11 -app.servlet.version=2.5 diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..7b7e492 --- /dev/null +++ b/build.gradle @@ -0,0 +1,75 @@ +buildscript { + ext { + grailsVersion = project.grailsVersion + } + repositories { + mavenLocal() + maven { url "https://repo.grails.org/grails/core" } + } + dependencies { + classpath "org.grails:grails-gradle-plugin:$grailsVersion" + } +} + +plugins { + id "io.spring.dependency-management" version "0.5.2.RELEASE" + id "com.jfrog.bintray" version "1.2" +} + +version "3.0.0-SNAPSHOT" +group "org.grails.plugins" + +apply plugin: 'maven-publish' +apply plugin: 'eclipse' +apply plugin: 'idea' +apply plugin: "spring-boot" +apply plugin: "org.grails.grails-plugin" +apply plugin: "org.grails.grails-gsp" +apply plugin: "org.grails.grails-doc" +// Used for publishing to central repository, remove if not needed +apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/grailsCentralPublishing.gradle' +apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/bintrayPublishing.gradle' + +ext { + grailsVersion = project.grailsVersion + gradleWrapperVersion = project.gradleWrapperVersion +} + +sourceCompatibility = 1.7 +targetCompatibility = 1.7 + + +repositories { + mavenLocal() + mavenCentral() + maven { url "https://repo.grails.org/grails/core" } + maven { url "http://repo.desirableobjects.co.uk" } + maven { url "https://raw.github.com/fernandezpablo85/scribe-java/mvn-repo" } +} + +dependencyManagement { + imports { + mavenBom "org.grails:grails-bom:$grailsVersion" + } + applyMavenExclusions false +} + +dependencies { + provided 'org.springframework.boot:spring-boot-starter-logging' + provided "org.springframework.boot:spring-boot-starter-actuator" + provided "org.springframework.boot:spring-boot-autoconfigure" + provided "org.springframework.boot:spring-boot-starter-tomcat" + provided "org.grails:grails-web-boot" + provided "org.grails:grails-dependencies" + provided 'javax.servlet:javax.servlet-api:3.1.0' + testCompile "org.grails:grails-plugin-testing" + console "org.grails:grails-console" + + compile 'org.scribe:scribe:1.3.7' + testCompile 'org.gmock:gmock:0.8.2' + testCompile 'org.objenesis:objenesis:1.2' +} + +task wrapper(type: Wrapper) { + gradleVersion = gradleWrapperVersion +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..5628506 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +grailsVersion=3.0.3 +gradleWrapperVersion=2.5 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..c97a8bdb9088d370da7e88784a7a093b971aa23a GIT binary patch literal 51018 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +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" ] ; 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"` + + # 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 + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@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 + +@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= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@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 Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_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=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +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/grails-app/conf/BuildConfig.groovy b/grails-app/conf/BuildConfig.groovy deleted file mode 100644 index 65068b0..0000000 --- a/grails-app/conf/BuildConfig.groovy +++ /dev/null @@ -1,33 +0,0 @@ -grails.project.work.dir = "target" - -grails.project.dependency.resolver = "maven" -grails.project.dependency.resolution = { - - inherits "global" - log "warn" - - repositories { - grailsCentral() - - mavenLocal - mavenCentral() - mavenRepo 'http://repo.desirableobjects.co.uk' - mavenRepo 'https://raw.github.com/fernandezpablo85/scribe-java/mvn-repo' - } - - dependencies { - - runtime 'org.scribe:scribe:1.3.6' - - test 'org.gmock:gmock:0.8.2', - 'org.objenesis:objenesis:1.2' - - } - - plugins { - - build(':release:3.0.1', ':rest-client-builder:2.0.1') { - export = false - } - } -} diff --git a/grails-app/conf/Config.groovy b/grails-app/conf/Config.groovy deleted file mode 100644 index 2468ac7..0000000 --- a/grails-app/conf/Config.groovy +++ /dev/null @@ -1,12 +0,0 @@ - -log4j = { - error 'org.codehaus.groovy.grails', - 'org.springframework', - 'org.hibernate', - 'net.sf.ehcache.hibernate' -} - -// Only for testing purpose. -oauth { - debug = false -} diff --git a/grails-app/conf/DataSource.groovy b/grails-app/conf/DataSource.groovy deleted file mode 100644 index 00382a6..0000000 --- a/grails-app/conf/DataSource.groovy +++ /dev/null @@ -1,32 +0,0 @@ -dataSource { - pooled = true - driverClassName = "org.h2.Driver" - username = "sa" - password = "" -} -hibernate { - cache.use_second_level_cache = true - cache.use_query_cache = true - cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider' -} -// environment specific settings -environments { - development { - dataSource { - dbCreate = "create-drop" // one of 'create', 'create-drop','update' - url = "jdbc:h2:mem:devDB" - } - } - test { - dataSource { - dbCreate = "update" - url = "jdbc:h2:mem:testDb" - } - } - production { - dataSource { - dbCreate = "update" - url = "jdbc:h2:file:prodDb;shutdown=true" - } - } -} diff --git a/grails-app/conf/OauthUrlMappings.groovy b/grails-app/conf/OauthUrlMappings.groovy index 8f01fb3..1006665 100644 --- a/grails-app/conf/OauthUrlMappings.groovy +++ b/grails-app/conf/OauthUrlMappings.groovy @@ -1,7 +1,6 @@ class OauthUrlMappings { static mappings = { - "/oauth/$provider/callback"(controller: 'oauth', action: 'callback') "/oauth/$provider/authenticate"(controller: 'oauth', action: 'authenticate') } diff --git a/grails-app/conf/application.yml b/grails-app/conf/application.yml new file mode 100644 index 0000000..ea8473a --- /dev/null +++ b/grails-app/conf/application.yml @@ -0,0 +1,115 @@ +--- +grails: + profile: web-plugin + codegen: + defaultPackage: grails.oauth.scribe +info: + app: + name: '@info.app.name@' + version: '@info.app.version@' + grailsVersion: '@info.app.grailsVersion@' +spring: + groovy: + template: + check-template-location: false + +oauth: + debug: false + +--- +grails: + mime: + disable: + accept: + header: + userAgents: + - Gecko + - WebKit + - Presto + - Trident + types: + all: '*/*' + atom: application/atom+xml + css: text/css + csv: text/csv + form: application/x-www-form-urlencoded + html: + - text/html + - application/xhtml+xml + js: text/javascript + json: + - application/json + - text/json + multipartForm: multipart/form-data + rss: application/rss+xml + text: text/plain + hal: + - application/hal+json + - application/hal+xml + xml: + - text/xml + - application/xml + urlmapping: + cache: + maxsize: 1000 + controllers: + defaultScope: singleton + converters: + encoding: UTF-8 + views: + default: + codec: html + gsp: + encoding: UTF-8 + htmlcodec: xml + codecs: + expression: html + scriptlets: html + taglib: none + staticparts: none +--- +hibernate: + cache: + queries: false + use_second_level_cache: true + use_query_cache: false + region.factory_class: 'org.hibernate.cache.ehcache.EhCacheRegionFactory' + +dataSource: + pooled: true + jmxExport: true + driverClassName: org.h2.Driver + username: sa + password: + +environments: + development: + dataSource: + dbCreate: create-drop + url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE + test: + dataSource: + dbCreate: update + url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE + production: + dataSource: + dbCreate: update + url: jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE + properties: + jmxEnabled: true + initialSize: 5 + maxActive: 50 + minIdle: 5 + maxIdle: 25 + maxWait: 10000 + maxAge: 600000 + timeBetweenEvictionRunsMillis: 5000 + minEvictableIdleTimeMillis: 60000 + validationQuery: SELECT 1 + validationQueryTimeout: 3 + validationInterval: 15000 + testOnBorrow: true + testWhileIdle: true + testOnReturn: false + jdbcInterceptors: ConnectionState + defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED diff --git a/grails-app/conf/logback.groovy b/grails-app/conf/logback.groovy new file mode 100644 index 0000000..5b2d1e3 --- /dev/null +++ b/grails-app/conf/logback.groovy @@ -0,0 +1,28 @@ +import grails.util.BuildSettings +import grails.util.Environment + + +// See http://logback.qos.ch/manual/groovy.html for details on configuration +appender('STDOUT', ConsoleAppender) { + encoder(PatternLayoutEncoder) { + pattern = "%level %logger - %msg%n" + } +} + +root(ERROR, ['STDOUT']) + +if(Environment.current == Environment.DEVELOPMENT) { + def targetDir = BuildSettings.TARGET_DIR + if(targetDir) { + + appender("FULL_STACKTRACE", FileAppender) { + + file = "${targetDir}/stacktrace.log" + append = true + encoder(PatternLayoutEncoder) { + pattern = "%level %logger - %msg%n" + } + } + logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false ) + } +} diff --git a/grails-app/controllers/uk/co/desirableobjects/oauth/scribe/OauthController.groovy b/grails-app/controllers/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthController.groovy similarity index 84% rename from grails-app/controllers/uk/co/desirableobjects/oauth/scribe/OauthController.groovy rename to grails-app/controllers/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthController.groovy index c1d8735..45910a1 100644 --- a/grails-app/controllers/uk/co/desirableobjects/oauth/scribe/OauthController.groovy +++ b/grails-app/controllers/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthController.groovy @@ -1,13 +1,12 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe import org.scribe.model.Token import org.scribe.model.Verifier -import uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder -import org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap -import uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException +import grails.plugins.uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder +import grails.web.servlet.mvc.GrailsParameterMap +import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException class OauthController { - private static final Token EMPTY_TOKEN = new Token('', '') OauthService oauthService @@ -31,16 +30,16 @@ class OauthController { if (!requestToken) { throw new MissingRequestTokenException(providerName) } - + Token accessToken try { accessToken = oauthService.getAccessToken(providerName, requestToken, verifier) - } catch(OAuthException){ + } catch (OAuthException) { log.error("Cannot authenticate with oauth") return redirect(uri: provider.failureUri) } - + session[oauthService.findSessionKeyForAccessToken(providerName)] = accessToken session.removeAttribute(oauthService.findSessionKeyForRequestToken(providerName)) @@ -53,8 +52,8 @@ class OauthController { String verifierKey = determineVerifierKey(provider) if (!params[verifierKey]) { - log.error("Cannot authenticate with oauth: Could not find oauth verifier in ${params}.") - return null + log.error("Cannot authenticate with oauth: Could not find oauth verifier in ${params}.") + return null } String verification = params[verifierKey] @@ -83,7 +82,5 @@ class OauthController { RedirectHolder.setUri(params.redirectUrl) return redirect(url: url) - } - -} +} \ No newline at end of file diff --git a/grails-app/init/grails/plugins/oauth/scribe/Application.groovy b/grails-app/init/grails/plugins/oauth/scribe/Application.groovy new file mode 100644 index 0000000..5de2c6d --- /dev/null +++ b/grails-app/init/grails/plugins/oauth/scribe/Application.groovy @@ -0,0 +1,10 @@ +package grails.plugins.oauth.scribe + +import grails.boot.GrailsApp +import grails.boot.config.GrailsAutoConfiguration + +class Application extends GrailsAutoConfiguration { + static void main(String[] args) { + GrailsApp.run(Application, args) + } +} \ No newline at end of file diff --git a/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy b/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy similarity index 90% rename from grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy rename to grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy index 171321f..835a7d1 100644 --- a/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy +++ b/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe import java.util.concurrent.TimeUnit @@ -8,7 +8,7 @@ import org.scribe.model.Token import org.scribe.model.Verb import org.scribe.oauth.OAuthService -import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor class OauthResourceService { diff --git a/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthService.groovy b/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthService.groovy similarity index 94% rename from grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthService.groovy rename to grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthService.groovy index 73d91e1..13192be 100644 --- a/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthService.groovy +++ b/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthService.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe import org.codehaus.groovy.runtime.typehandling.GroovyCastException import org.scribe.builder.ServiceBuilder @@ -10,11 +10,11 @@ import org.scribe.model.Verifier import org.scribe.oauth.OAuthService import org.springframework.beans.factory.InitializingBean -import uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException -import uk.co.desirableobjects.oauth.scribe.exception.InvalidProviderClassException -import uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException -import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor -import uk.co.desirableobjects.oauth.scribe.util.DynamicMethods +import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException +import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.InvalidProviderClassException +import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException +import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import grails.plugins.uk.co.desirableobjects.oauth.scribe.util.DynamicMethods class OauthService implements InitializingBean { diff --git a/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy b/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy similarity index 77% rename from grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy rename to grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy index 79b40bf..524ea49 100644 --- a/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy +++ b/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe.exception +package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception class InvalidOauthProviderException extends RuntimeException { diff --git a/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy b/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy similarity index 75% rename from grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy rename to grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy index 53a2eef..735cc8f 100644 --- a/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy +++ b/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe.exception +package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception class UnknownProviderException extends RuntimeException { diff --git a/grails-app/taglib/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy b/grails-app/taglib/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy similarity index 92% rename from grails-app/taglib/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy rename to grails-app/taglib/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy index c03ee0d..f83fd6a 100644 --- a/grails-app/taglib/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy +++ b/grails-app/taglib/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy @@ -1,6 +1,6 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe -import org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException +import org.grails.taglib.GrailsTagException import org.scribe.model.Token class OauthTagLib { diff --git a/grailsw b/grailsw deleted file mode 100755 index 2d45e15..0000000 --- a/grailsw +++ /dev/null @@ -1,351 +0,0 @@ -############################################################################## -## ## -## Grails JVM Bootstrap for UN*X ## -## ## -############################################################################## - -PROGNAME=`basename "$0"` -DIRNAME=`dirname "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that -MAX_FD="maximum" - -warn() { - echo "${PROGNAME}: $*" -} - -die() { - warn "$*" - exit 1 -} - -earlyInit() { - return -} -lateInit() { - return -} - -GROOVY_STARTUP=~/.groovy/startup -if [ -r "$GROOVY_STARTUP" ]; then - . "$GROOVY_STARTUP" -fi - -earlyInit - -# OS specific support (must be 'true' or 'false'). -cygwin=false; -darwin=false; -mingw=false; -case "`uname`" in - CYGWIN*) - cygwin=true - ;; - - Darwin*) - darwin=true - ;; - - MINGW*) - mingw=true - ;; -esac - -# Attempt to set JAVA_HOME if it's not already set -if [ -z "$JAVA_HOME" ]; then - - # Set JAVA_HOME for Darwin - if $darwin; then - - [ -z "$JAVA_HOME" -a -d "/Library/Java/Home" ] && - export JAVA_HOME="/Library/Java/Home" - - [ -z "$JAVA_HOME" -a -d "/System/Library/Frameworks/JavaVM.framework/Home" ] && - export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home" - - fi - -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$GRAILS_HOME" ] && - GRAILS_HOME=`cygpath --unix "$GRAILS_HOME"` - [ -n "$JAVACMD" ] && - JAVACMD=`cygpath --unix "$JAVACMD"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CP" ] && - CP=`cygpath --path --unix "$CP"` -fi - -# Remove possible trailing slash (after possible cygwin correction) -GRAILS_HOME=`echo $GRAILS_HOME | sed -e 's|/$||g'` - -# Locate GRAILS_HOME if not it is not set -if [ -z "$GRAILS_HOME" -o ! -d "$GRAILS_HOME" ] ; then - # resolve links - $0 may be a link to groovy's home - PRG="$0" - - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi - done - - SAVED="`pwd`" - cd "`dirname \"$PRG\"`/.." - GRAILS_HOME="`pwd -P`" - cd "$SAVED" -fi - -# Warn the user if JAVA_HOME and/or GRAILS_HOME are not set. -if [ -z "$JAVA_HOME" ] ; then - die "JAVA_HOME environment variable is not set" -elif [ ! -d "$JAVA_HOME" ] ; then - die "JAVA_HOME is not a directory: $JAVA_HOME" -fi - -if [ -z "$GRAILS_HOME" ] ; then - warn "GRAILS_HOME environment variable is not set" -fi - -if [ ! -d "$GRAILS_HOME" ] ; then - die "GRAILS_HOME is not a directory: $GRAILS_HOME" -fi - -# Use default groovy-conf config -if [ -z "$STARTER_CONF" ]; then - STARTER_CONF="$GRAILS_HOME/conf/groovy-starter.conf" -fi -STARTER_CLASSPATH="wrapper/grails-wrapper-runtime-2.3.11.jar:wrapper:." - -# Allow access to Cocoa classes on OS X -if $darwin; then - STARTER_CLASSPATH="$STARTER_CLASSPATH:/System/Library/Java/Support" -fi - -# Create the final classpath -# Setting a classpath using the -cp or -classpath option means not to use -# the global classpath. Groovy behaves then the same as the java -# interpreter -if [ -n "$CP" ] ; then - CP="$CP" -elif [ -n "$CLASSPATH" ] ; then - CP="$CLASSPATH" -fi - -# Determine the Java command to use to start the JVM -if [ -z "$JAVACMD" ]; then - 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 - else - JAVACMD="java" - fi -fi -if [ ! -x "$JAVACMD" ]; then - die "JAVA_HOME is not defined correctly; can not execute: $JAVACMD" -fi - -# Increase the maximum file descriptors if we can -if [ "$cygwin" = "false" ]; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ "$MAX_FD_LIMIT" != "unlimited" ]; then - if [ $? -eq 0 ]; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then - # use the businessSystem max - 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 businessSystem maximum file descriptor limit: $MAX_FD_LIMIT" - fi - fi -fi - -# Fix the cygwin agent issue -AGENT_GRAILS_HOME=$GRAILS_HOME -if $cygwin ; then - [ -n "$GRAILS_HOME" ] && - AGENT_GRAILS_HOME=`cygpath --windows "$GRAILS_HOME"` -fi - -if $mingw ; then - # Converts GRAILS_HOME path to Windows syntax - [ -n "$GRAILS_HOME" ] && - AGENT_GRAILS_HOME=`cmd //C echo "$GRAILS_HOME"` -fi - -if [ -z "$GRAILS_AGENT_CACHE_DIR" ]; then - GRAILS_AGENT_CACHE_DIR=~/.grails/2.3.11/ -fi -SPRINGLOADED_PARAMS=profile=grails\;cacheDir=$GRAILS_AGENT_CACHE_DIR -if [ ! -d "$GRAILS_AGENT_CACHE_DIR" ]; then - mkdir -p "$GRAILS_AGENT_CACHE_DIR" -fi - -# Process JVM args -AGENT_STRING="-javaagent:wrapper/springloaded-1.2.0.RELEASE.jar -noverify -Dspringloaded.synchronize=true -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=$SPRINGLOADED_PARAMS" -CMD_LINE_ARGS="" -DISABLE_RELOADING=true - -while true; do - if [ "$1" = "-cp" ] || [ "$1" = "-classpath" ]; then - CP=$2 - shift 2 - break - fi - - if [ "$1" = "-reloading" ]; then - AGENT=$AGENT_STRING - DISABLE_RELOADING=false - shift - break - fi - - if [ "$1" = "-noreloading" ]; then - DISABLE_RELOADING=true - shift - break - fi - - if [ "$1" = "-debug" ]; then - JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Dgrails.full.stacktrace=true -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005" - shift - break - fi - - if [ "$1" != -* ]; then - break - fi - - CMD_LINE_ARGS="$CMD_LINE_ARGS $1" - shift -done - -# Enable agent-based reloading for the 'run-app' command. -if ! $DISABLE_RELOADING; then - for a in "$@"; do - if [ "$a" = "run-app" ]; then - AGENT=$AGENT_STRING - fi - done - - if [ $# = 0 ]; then - AGENT=$AGENT_STRING - fi -fi - -ARGUMENTS="$CMD_LINE_ARGS $@" - -# Setup Profiler -useprofiler=false -if [ "x$PROFILER" != "x" ]; then - if [ -r "$PROFILER" ]; then - . $PROFILER - useprofiler=true - else - die "Profiler file not found: $PROFILER" - fi -fi - -# For Darwin, use classes.jar for TOOLS_JAR -TOOLS_JAR="$JAVA_HOME/lib/tools.jar" -if $darwin; then - JAVA_OPTS="-Xdock:name=Grails -Xdock:icon=$GRAILS_HOME/media/icons/grails.icns $JAVA_OPTS" -# TOOLS_JAR="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - GRAILS_HOME=`cygpath --path --mixed "$GRAILS_HOME"` - JAVA_HOME=`cygpath --path --mixed "$JAVA_HOME"` - STARTER_CONF=`cygpath --path --mixed "$STARTER_CONF"` - if [ "x$CP" != "x" ] ; then - CP=`cygpath --path --mixed "$CP"` - fi - TOOLS_JAR=`cygpath --path --mixed "$TOOLS_JAR"` - STARTER_CLASSPATH=`cygpath --path --mixed "$STARTER_CLASSPATH"` - # 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 [ "$GROOVY_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GROOVY_CYGPATTERN)" - fi - # Now convert the arguments - ARGUMENTS="" - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - if [ $CHECK -ne 0 ] ; then - convArg=`cygpath --path --ignore --mixed "$arg"` - else - convArg=$arg - fi - ARGUMENTS="$ARGUMENTS $convArg" - done -fi - -STARTER_MAIN_CLASS=org.grails.wrapper.GrailsWrapper - -lateInit - -startGrails() { - CLASS=$1 - shift - if [ -n "$GRAILS_OPTS" ] - then - GRAILS_OPTS="$GRAILS_OPTS" - else - GRAILS_OPTS="-server -Xmx768M -Xms64M -XX:PermSize=32m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8" - fi - JAVA_OPTS="$GRAILS_OPTS $JAVA_OPTS $AGENT" - # Start the Profiler or the JVM - if $useprofiler; then - runProfiler - else - if [ $# -eq 0 ] ; then # no argument given - exec "$JAVACMD" $JAVA_OPTS \ - -classpath "$STARTER_CLASSPATH" \ - -Dgrails.home="$GRAILS_HOME" \ - -Dtools.jar="$TOOLS_JAR" \ - -Djava.net.preferIPv4Stack=true \ - $STARTER_MAIN_CLASS \ - --main $CLASS \ - --conf "$STARTER_CONF" \ - --classpath "$CP" - else - exec "$JAVACMD" $JAVA_OPTS \ - -classpath "$STARTER_CLASSPATH" \ - -Dgrails.home="$GRAILS_HOME" \ - -Dtools.jar="$TOOLS_JAR" \ - -Djava.net.preferIPv4Stack=true \ - $STARTER_MAIN_CLASS \ - --main $CLASS \ - --conf "$STARTER_CONF" \ - --classpath "$CP" \ - "${ARGUMENTS}" - fi - fi -} - -startGrails $STARTER_MAIN_CLASS "$@" diff --git a/grailsw.bat b/grailsw.bat deleted file mode 100644 index 276088d..0000000 --- a/grailsw.bat +++ /dev/null @@ -1,176 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem ## -@rem Grails JVM Bootstrap for Windows ## -@rem ## -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set CLASS=org.grails.wrapper.GrailsWrapper - -if exist "%USERPROFILE%/.groovy/preinit.bat" call "%USERPROFILE%/.groovy/preinit.bat" - -@rem Determine the command interpreter to execute the "CD" later -set COMMAND_COM="cmd.exe" -if exist "%SystemRoot%\system32\cmd.exe" set COMMAND_COM="%SystemRoot%\system32\cmd.exe" -if exist "%SystemRoot%\command.com" set COMMAND_COM="%SystemRoot%\command.com" - -@rem Use explicit find.exe to prevent cygwin and others find.exe from being used -set FIND_EXE="find.exe" -if exist "%SystemRoot%\system32\find.exe" set FIND_EXE="%SystemRoot%\system32\find.exe" -if exist "%SystemRoot%\command\find.exe" set FIND_EXE="%SystemRoot%\command\find.exe" - -:check_JAVA_HOME -@rem Make sure we have a valid JAVA_HOME -if not "%JAVA_HOME%" == "" goto have_JAVA_HOME - -echo. -echo ERROR: Environment variable JAVA_HOME has not been set. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. -echo. -goto end - -:have_JAVA_HOME -@rem Remove trailing slash from JAVA_HOME if found -if "%JAVA_HOME:~-1%"=="\" SET JAVA_HOME=%JAVA_HOME:~0,-1% - -@rem Validate JAVA_HOME -%COMMAND_COM% /C DIR "%JAVA_HOME%" 2>&1 | %FIND_EXE% /I /C "%JAVA_HOME%" >nul -if not errorlevel 1 goto check_GRAILS_HOME - -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. -echo. -goto end - -:check_GRAILS_HOME -@rem Define GRAILS_HOME if not set -if "%GRAILS_HOME%" == "" set GRAILS_HOME=%DIRNAME%.. - -@rem Remove trailing slash from GRAILS_HOME if found -if "%GRAILS_HOME:~-1%"=="\" SET GRAILS_HOME=%GRAILS_HOME:~0,-1% - -:init - -for %%x in ("%USERPROFILE%") do set SHORTHOME=%%~fsx -if "x%GRAILS_AGENT_CACHE_DIR%" == "x" set GRAILS_AGENT_CACHE_DIR=%SHORTHOME%/.grails/2.3.11/ -set SPRINGLOADED_PARAMS="profile=grails;cacheDir=%GRAILS_AGENT_CACHE_DIR%" -if not exist "%GRAILS_AGENT_CACHE_DIR%" mkdir "%GRAILS_AGENT_CACHE_DIR%" - -set AGENT_STRING=-javaagent:wrapper/springloaded-1.2.0.RELEASE.jar -noverify -Dspringloaded.synchronize=true -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=\"%SPRINGLOADED_PARAMS%\" -set DISABLE_RELOADING= -if "%GRAILS_OPTS%" == "" set GRAILS_OPTS=-server -Xmx768M -Xms64M -XX:PermSize=32m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 - -@rem Get command-line arguments, handling Windows variants -if "%@eval[2+2]" == "4" goto 4NT_args - -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set CP= -set INTERACTIVE=true - -:win9xME_args_slurp -if "x%~1" == "x" goto execute -set CURR_ARG=%~1 -if "%CURR_ARG:~0,2%" == "-D" ( - set CMD_LINE_ARGS=%CMD_LINE_ARGS% %~1=%~2 - shift - shift - goto win9xME_args_slurp -) -if "x%~1" == "x-cp" ( - set CP=%~2 - shift - shift - goto win9xME_args_slurp -) -if "x%~1" == "x-debug" ( - set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xnoagent -Dgrails.full.stacktrace=true -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 - shift - goto win9xME_args_slurp -) -if "x%~1" == "x-classpath" ( - set CP=%~2 - shift - shift - goto win9xME_args_slurp -) -if "x%~1" == "x-reloading" ( - set AGENT=%AGENT_STRING% - shift - goto win9xME_args_slurp -) -if "x%~1" == "xrun-app" ( - set AGENT=%AGENT_STRING% - set INTERACTIVE= - set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 - shift - goto win9xME_args_slurp -) -if "x%~1" == "x-noreloading" ( - set DISABLE_RELOADING=true - shift - goto win9xME_args_slurp -) -set INTERACTIVE= -set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 -shift -goto win9xME_args_slurp - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line -set STARTER_CLASSPATH=wrapper/grails-wrapper-runtime-2.3.11.jar;wrapper;. - -if exist "%USERPROFILE%/.groovy/init.bat" call "%USERPROFILE%/.groovy/init.bat" - -@rem Setting a classpath using the -cp or -classpath option means not to use -@rem the global classpath. Groovy behaves then the same as the java interpreter - -if "x" == "x%CLASSPATH%" goto after_classpath -set CP=%CP%;%CLASSPATH% -:after_classpath - -if "x%DISABLE_RELOADING%" == "xtrue" ( - set AGENT= -) else ( - if "x%INTERACTIVE%" == "xtrue" ( - set AGENT=%AGENT_STRING% - ) -) - -set STARTER_MAIN_CLASS=org.grails.wrapper.GrailsWrapper -set STARTER_CONF=%GRAILS_HOME%\conf\groovy-starter.conf - -set JAVA_EXE=%JAVA_HOME%\bin\java.exe -set TOOLS_JAR=%JAVA_HOME%\lib\tools.jar - -set JAVA_OPTS=%GRAILS_OPTS% %JAVA_OPTS% %AGENT% - -set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name="%PROGNAME%" -set JAVA_OPTS=%JAVA_OPTS% -Dgrails.home="%GRAILS_HOME%" -set JAVA_OPTS=%JAVA_OPTS% -Dgrails.version=2.3.11 -set JAVA_OPTS=%JAVA_OPTS% -Dbase.dir=. -set JAVA_OPTS=%JAVA_OPTS% -Dtools.jar="%TOOLS_JAR%" -set JAVA_OPTS=%JAVA_OPTS% -Dgroovy.starter.conf="%STARTER_CONF%" - -if exist "%USERPROFILE%/.groovy/postinit.bat" call "%USERPROFILE%/.groovy/postinit.bat" - -@rem Execute Grails -CALL "%JAVA_EXE%" %JAVA_OPTS% -classpath "%STARTER_CLASSPATH%" %STARTER_MAIN_CLASS% --main %CLASS% --conf "%STARTER_CONF%" --classpath "%CP%" "%CMD_LINE_ARGS%" -:end -@rem End local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" endlocal - -@rem Optional pause the batch file -if "%GROOVY_BATCH_PAUSE%" == "on" pause diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..903359b --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'oauth' \ No newline at end of file diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy new file mode 100644 index 0000000..2734d5e --- /dev/null +++ b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy @@ -0,0 +1,18 @@ +package grails.plugins.uk.co.desirableobjects.oauth.scribe + +import grails.plugins.* + +class OauthGrailsPlugin extends Plugin { + def grailsVersion = "3.0.0 > *" + def author = "Antony Jones, Peter Ledbrook" + def authorEmail = "aj@desirableobjects.co.uk" + def title = "Oauth Plugin" + def description = 'Provides oAuth integration for Grails, using the Scribe framework' + def documentation = "http://antony.github.com/grails-oauth-scribe/" + def scm = [url: "https://github.com/antony/grails-oauth-scribe"] + def profiles = ['web'] + def developers = [ + [ name: "Dhiraj Mahapatro", email: "dmahapatro@netjets.com" ] + ] + def issueManagement = [ system: "Github", url: "https://github.com/antony/grails-oauth-scribe" ] +} diff --git a/src/groovy/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy similarity index 80% rename from src/groovy/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy rename to src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy index faf3b98..84f81d2 100644 --- a/src/groovy/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy +++ b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe import org.scribe.oauth.OAuthService diff --git a/src/groovy/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy similarity index 87% rename from src/groovy/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy rename to src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy index eb10ef7..49a0cec 100644 --- a/src/groovy/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy +++ b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe enum SupportedOauthVersion { diff --git a/src/groovy/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy similarity index 83% rename from src/groovy/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy rename to src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy index 33e5b19..240b2c2 100644 --- a/src/groovy/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy +++ b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe.exception +package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception import groovy.transform.InheritConstructors diff --git a/src/groovy/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy similarity index 87% rename from src/groovy/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy rename to src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy index 8bfa770..cada46f 100644 --- a/src/groovy/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy +++ b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe.exception +package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception class MissingRequestTokenException extends RuntimeException { diff --git a/src/groovy/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy similarity index 94% rename from src/groovy/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy rename to src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy index 6b92757..eb4eb72 100644 --- a/src/groovy/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy +++ b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe.holder +package grails.plugins.uk.co.desirableobjects.oauth.scribe.holder import org.springframework.web.context.request.RequestContextHolder diff --git a/src/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy similarity index 91% rename from src/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy rename to src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy index eb63a31..d2b0ff2 100644 --- a/src/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy +++ b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe.resource +package grails.plugins.uk.co.desirableobjects.oauth.scribe.resource import groovy.transform.EqualsAndHashCode import org.scribe.model.Verb diff --git a/src/groovy/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy similarity index 85% rename from src/groovy/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy rename to src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy index 1d28457..55f61c2 100644 --- a/src/groovy/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy +++ b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe.test +package grails.plugins.uk.co.desirableobjects.oauth.scribe.test import org.scribe.builder.api.DefaultApi10a diff --git a/src/groovy/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy similarity index 74% rename from src/groovy/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy rename to src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy index 06d93a4..a14b447 100644 --- a/src/groovy/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy +++ b/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe.util +package grails.plugins.uk.co.desirableobjects.oauth.scribe.util class DynamicMethods { diff --git a/test/unit/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy similarity index 96% rename from test/unit/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy rename to src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy index 61c8dd0..97614aa 100644 --- a/test/unit/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy +++ b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestMixin import grails.test.mixin.support.GrailsUnitTestMixin @@ -11,8 +11,8 @@ import spock.lang.Shared import spock.lang.Specification import spock.lang.Stepwise import spock.lang.Unroll -import uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException -import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException +import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor @Stepwise @TestMixin(GrailsUnitTestMixin) diff --git a/test/unit/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy similarity index 85% rename from test/unit/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy rename to src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy index 2d374f5..635eca3 100644 --- a/test/unit/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy +++ b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy @@ -1,5 +1,5 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe import org.gmock.WithGMock diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy new file mode 100644 index 0000000..e3f1ff7 --- /dev/null +++ b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy @@ -0,0 +1,457 @@ +package grails.plugins.uk.co.desirableobjects.oauth.scribe + +import grails.test.mixin.TestFor +import org.scribe.exceptions.OAuthException +import org.scribe.model.Token +import org.scribe.model.Verifier +import org.scribe.oauth.OAuthService +import org.springframework.web.context.request.RequestContextHolder +import spock.lang.Shared +import spock.lang.Specification +import spock.lang.Unroll +import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException +import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException +import grails.plugins.uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder + +@TestFor(OauthController) +class OauthControllerSpec extends Specification { + + private static final String REQUEST_TOKEN_SESSION_KEY = 'twitter:oasRequestToken' + private static final String ACCESS_TOKEN_SESSION_KEY = 'twitter:oasAccessToken' + private static final String PROVIDER_NAME = 'twitter' + + @Shared OauthProvider provider + @Shared OAuthService service + + def setup() { + + service = Mock(OAuthService) + provider = new OauthProvider(service: service, failureUri: '/coke/pepsi', successUri: '/coffee/tea') + controller.oauthService = Mock(OauthService) + + } + + def 'If authenticate url is hit without a provider, an exception is thrown'() { + + when: + controller.authenticate() + + then: + 1 * controller.oauthService.findProviderConfiguration(null) >> { throw new UnknownProviderException(null) } + 0 * _ + + and: + thrown UnknownProviderException + + } + + def 'Success URL is hit and token is read from callback'() { + + given: + + Token requestToken = new Token('a', 'b', 'c') + controller.session[REQUEST_TOKEN_SESSION_KEY] = requestToken + + and: + + Token accessToken = new Token('d', 'e', 'f') + Verifier verifier = new Verifier('xyz') + + and: + + controller.params.provider = PROVIDER_NAME + controller.params.oauth_verifier = verifier.value + + when: + + controller.callback() + + then: + + 2 * provider.service.getVersion() >> { return SupportedOauthVersion.TWO } + 2 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } + 1 * controller.oauthService.findSessionKeyForAccessToken(PROVIDER_NAME) >> { return ACCESS_TOKEN_SESSION_KEY } + 1 * controller.oauthService.getAccessToken(PROVIDER_NAME, requestToken, _ as Verifier) >> { return accessToken } + 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } + 0 * _ + + then: + + !session[REQUEST_TOKEN_SESSION_KEY] + session[ACCESS_TOKEN_SESSION_KEY] == accessToken + controller.response.redirectUrl == '/coffee/tea' + + } + + def 'Google deauthorize endpoint is hit'() { + + given: + + Token requestToken = new Token('a', 'b', 'c') + controller.session[REQUEST_TOKEN_SESSION_KEY] = requestToken + + and: + + Token accessToken = new Token('d', 'e', 'f') + Verifier verifier = new Verifier('xyz') + + and: + + controller.params.provider = PROVIDER_NAME + controller.params.oauth_verifier = verifier.value + + when: + + controller.callback() + + then: + + 2 * provider.service.getVersion() >> { return SupportedOauthVersion.TWO } + 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } + 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } + 1 * controller.oauthService.getAccessToken(PROVIDER_NAME, requestToken, _ as Verifier) >> { throw new OAuthException() } + 0 * _ + + then: + + session[REQUEST_TOKEN_SESSION_KEY] + !session[ACCESS_TOKEN_SESSION_KEY] + controller.response.redirectUrl == '/coke/pepsi' + + } + + def 'callback provides no verifier'() { + + when: + + controller.params.provider = PROVIDER_NAME + controller.callback() + + then: + + 1 * provider.service.version >> { return '1.0' } + 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } + 0 * _ + + and: + + controller.response.redirectUrl == '/coke/pepsi' + + } + + def 'Authentication endpoint is hit'() { + + given: + + Token requestToken = new Token('a', 'b', 'c') + + + when: + + controller.params.provider = PROVIDER_NAME + controller.authenticate() + + then: + + 1 * service.getRequestToken() >> { return requestToken } + 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } + 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } + 1 * provider.service.version >> { return '1.0' } + 1 * controller.oauthService.getAuthorizationUrl(PROVIDER_NAME, requestToken) >> { return 'http://authorisation.url/auth' } + 0 * _ + + and: + + RedirectHolder.getRedirect() == RedirectHolder.getDefaultRedirect() + session[REQUEST_TOKEN_SESSION_KEY] == requestToken + controller.response.redirectUrl == 'http://authorisation.url/auth' + + } + + def 'Authentication endpoint is hit with valid redirect uri'() { + + given: + + def redirectUri = "/controller/action/id" + def requestToken = new Token('a', 'b', 'c') + controller.params.redirectUrl = redirectUri + + when: + + controller.params.provider = PROVIDER_NAME + controller.authenticate() + + then: + + + 1 * service.getRequestToken() >> { return requestToken } + 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } + 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } + 1 * provider.service.version >> { return '1.0' } + 1 * controller.oauthService.getAuthorizationUrl(PROVIDER_NAME, requestToken) >> { return 'http://authorisation.url/auth' } + 0 * _ + + and: + + RedirectHolder.getRedirect().get(RedirectHolder.URI_NAME) == redirectUri + session[REQUEST_TOKEN_SESSION_KEY] == requestToken + controller.response.redirectUrl == 'http://authorisation.url/auth' + } + + def 'In Oauth 2, request token endpoint is not hit'() { + + given: + + Token emptyToken = controller.EMPTY_TOKEN + controller.params.provider = PROVIDER_NAME + + when: + + controller.authenticate() + + then: + + 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } + 1 * provider.service.version >> { return '2.0' } + 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } + 1 * controller.oauthService.getAuthorizationUrl(PROVIDER_NAME, emptyToken) >> { return 'http://authorisation.url/auth' } + 0 * _ + + and: + + RedirectHolder.getRedirect() == RedirectHolder.getDefaultRedirect() + session[REQUEST_TOKEN_SESSION_KEY] == emptyToken + controller.response.redirectUrl == 'http://authorisation.url/auth' + + } + + @Unroll + def 'Oauth callback is hit but there is no request token in the session (bad callback domain) for oauth #oauthVersion'() { + + given: + + controller.params.provider = PROVIDER_NAME + controller.params.oauth_verifier = 'oauth-verifier' + controller.params.code = 'verifier-key' + + when: + + controller.callback() + + then: + + 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } + 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } + 2 * provider.service.version >> { return oauthVersion } + 0 * _ + + and: + + def exception = thrown MissingRequestTokenException + exception.message == "We couldn't find a request token for twitter in the session. A common cause of this is that you have been given a new session by the servlet container because your callback domain is different to the domain you are authenticating from. Check that the domain name in the URL bar of your browser matches the domain name of your callback URL" + + where: + + oauthVersion = ['1.0', '2.0'] + + } + + def 'RedirectHolder execute the method setUri(), set valid uri'() { + + given: + + def redirectUri = "http://test.com" + + when: + + RedirectHolder.setUri(redirectUri) + + then: + + def hash = RequestContextHolder.currentRequestAttributes()?.getSession()?.getAttribute(RedirectHolder.HASH_NAME) + def uri = hash.get(RedirectHolder.URI_NAME) + uri == redirectUri + } + + def 'RedirectHolder execute the method setUri(), set valid uri with empty hash in session'() { + + given: + + def redirectUri = "http://test.com" + def currentSession = RequestContextHolder.currentRequestAttributes()?.getSession() + currentSession.putAt(RedirectHolder.HASH_NAME, [:]) + + when: + + RedirectHolder.setUri(redirectUri) + + then: + + def hash = RequestContextHolder.currentRequestAttributes()?.getSession()?.getAttribute(RedirectHolder.HASH_NAME) + def uri = hash.get(RedirectHolder.URI_NAME) + uri == redirectUri + + } + + def 'RedirectHolder execute the method setUri(), set valid uri with custom hash in session'() { + + given: + + def redirectUri = "http://test.com" + def testContent = "Test content" + def currentSession = RequestContextHolder.currentRequestAttributes()?.getSession() + currentSession.putAt(RedirectHolder.HASH_NAME, [testContent: testContent]) + + when: + + RedirectHolder.setUri(redirectUri) + + then: + + def hash = RequestContextHolder.currentRequestAttributes()?.getSession()?.getAttribute(RedirectHolder.HASH_NAME) + def uri = hash.get(RedirectHolder.URI_NAME) + uri == redirectUri + } + + def 'RedirectHolder execute the method setUri(), set invalid uri'() { + + given: + + def invalidRedirectUri = "" + + when: + + RedirectHolder.setUri(invalidRedirectUri) + + then: + + RequestContextHolder.currentRequestAttributes()?.getSession()?.getAttribute(RedirectHolder.HASH_NAME) == null + RedirectHolder.getRedirect() == RedirectHolder.getDefaultRedirect() + + } + + def 'RedirectHolder execute the method getRedirect(), return valid hash'() { + + given: + + def redirectUri = "http://test.com" + def hash = [:] + hash.put(RedirectHolder.URI_NAME, redirectUri) + RedirectHolder.setUri(redirectUri) + + when: + + def ex = RedirectHolder.getRedirect() + + then: + + ex == hash + + } + + def 'RedirectHolder execute the method getRedirect(), return default result'() { + + when: + + def ex = RedirectHolder.getRedirect() + + then: + + ex == RedirectHolder.getDefaultRedirect() + + } + + def 'RedirectHolder execute the method setRedirectHash(), set valid hash'() { + + given: + + def hash = [:] + hash.put("controller", "object") + hash.put("action", "show") + hash.put("id", "1") + + when: + + RedirectHolder.setRedirectHash(hash) + + then: + + hash == RedirectHolder.getOrCreateRedirectHash() + + } + + def 'RedirectHolder execute the method setRedirectHash(), set invalid hash'() { + + when: + + RedirectHolder.setRedirectHash(null) + + then: + + RedirectHolder.getRedirect() == RedirectHolder.getDefaultRedirect() + + } + + def 'RedirectHolder execute the method getStorage(), return current session'() { + + when: + + def ex = RedirectHolder.getStorage() + + then: + + ex == RequestContextHolder.currentRequestAttributes()?.getSession() + + } + + def 'RedirectHolder execute the method getOrCreateRedirectHash(), return empty hash'() { + + when: + + def ex = RedirectHolder.getOrCreateRedirectHash() + + then: + + ex == [:] + + } + + def 'RedirectHolder execute the method getOrCreateRedirectHash(), return custom hash'() { + + given: + + def testContent = "Test content" + def hash = [testContent: testContent] + def currentSession = RequestContextHolder.currentRequestAttributes()?.getSession() + currentSession.putAt(RedirectHolder.HASH_NAME, hash) + + when: + + def ex = RedirectHolder.getOrCreateRedirectHash() + + then: + + ex == hash + + } + + def 'RedirectHolder execute the method getDefaultRedirect(), return default redirect hash'() { + + given: + + def redirectHash = [:] + redirectHash.put(RedirectHolder.URI_NAME, RedirectHolder.DEFAULT_URI) + + when: + + def ex = RedirectHolder.getDefaultRedirect() + + then: + + ex == redirectHash + + } + + // TODO: {"error":{"message":"Error validating client secret.","type":"OAuthException"}} + // TODO: Catch and deal with timeouts in a sensible way. +} diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy new file mode 100644 index 0000000..8098148 --- /dev/null +++ b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy @@ -0,0 +1,110 @@ +package grails.plugins.uk.co.desirableobjects.oauth.scribe + +import grails.test.mixin.TestFor +import org.scribe.model.OAuthRequest +import org.scribe.model.Parameter +import org.scribe.model.Token +import org.scribe.model.Verb +import org.scribe.oauth.OAuthService +import spock.lang.Specification +import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor + +@TestFor(OauthResourceService) +class OauthResourceServiceSpec extends Specification { + + def 'User can set headers on oauth request'() { + given: + OAuthService parent = Mock(OAuthService) + + when: + ResourceAccessor resourceAccessor = new ResourceAccessor() + resourceAccessor.with { + connectTimeout = 5000 + receiveTimeout = 5000 + verb = Verb.GET + url = 'http://example.net/res' + payload = 'Test'.bytes + bodyParameters = [x: 'y'] + addHeader 'Accept', 'application/pdf' + } + service.accessResource(parent, new Token('token', 'secret'), resourceAccessor) + + then: + 1 * parent.signRequest(new Token('token', 'secret'), { OAuthRequest req -> + req.verb == Verb.GET + req.headers == ['Content-Length': '4', 'Accept': 'application/pdf'] + req.url == 'http://example.net/res' + req.bodyContents == 'Test' + req.bodyParams.size() == 1 + req.bodyParams.contains(new Parameter('x', 'y')) + } as OAuthRequest) + 0 * _ + + } + + def 'null payload should be gracefully handled to avoid NPE'() { + + given: + OAuthService parent = Mock(OAuthService) + + when: + ResourceAccessor resourceAccessor = new ResourceAccessor() + resourceAccessor.with { + connectTimeout = 5000 + receiveTimeout = 5000 + verb = Verb.GET + url = 'http://example.net/res' + //payload = null + bodyParameters = [x: 'y'] + addHeader 'Accept', 'application/pdf' + } + assert resourceAccessor.payload == null + service.accessResource(parent, new Token('token', 'secret'), resourceAccessor) + + then: + 1 * parent.signRequest(new Token('token', 'secret'), { OAuthRequest req -> + req.verb == Verb.GET + req.headers == ['Content-Length': '4', 'Accept': 'application/pdf'] + req.url == 'http://example.net/res' + req.bodyContents == 'Test' + req.bodyParams.size() == 1 + req.bodyParams.contains(new Parameter('x', 'y')) + } as OAuthRequest) + 0 * _ + + } + + def 'query string parameters should be correctly added to a request when available'() { + + given: + OAuthService theParent = Mock(OAuthService) + Token aToken = new Token('token', 'secret') + + when: "the resource accessor has query string parameters" + def resourceAccessor = new ResourceAccessor() + resourceAccessor.with { + verb = Verb.GET + url = 'http://example.net/res' + querystringParams = ["value1": "firstValue", "value2": "secondValue"] + } + service.accessResource(theParent, aToken, resourceAccessor) + + then: "the parent signs a request with the correct query string params" + 1 * theParent.signRequest(_ as Token, { OAuthRequest req -> + req.queryStringParams.asFormUrlEncodedString() == "value1=firstValue&value2=secondValue" + } as OAuthRequest) + + when: "the resource accessor has no query string parameters" + resourceAccessor = new ResourceAccessor() + resourceAccessor.with { + verb = Verb.GET + url = 'http://example.net/res' + } + service.accessResource(theParent, aToken, resourceAccessor) + + then: "the parent signs a request without any query string params" + 1 * theParent.signRequest(_ as Token, { OAuthRequest req -> + req.queryStringParams.size() == 0 + } as OAuthRequest) + } +} diff --git a/test/unit/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy similarity index 98% rename from test/unit/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy rename to src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy index 4039596..d3f9e05 100644 --- a/test/unit/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy +++ b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor import org.scribe.builder.ServiceBuilder @@ -10,8 +10,8 @@ import org.scribe.model.Verb import org.scribe.oauth.OAuthService import spock.lang.Specification import spock.lang.Unroll -import uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException -import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException +import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor // This is a horrible hack. To disable automatic mocking and wiring of the // OauthService bean (because we can't test the configuration handling otherwise) diff --git a/test/unit/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy similarity index 97% rename from test/unit/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy rename to src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy index 5a9ea43..367d2cb 100644 --- a/test/unit/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy +++ b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy @@ -1,7 +1,7 @@ -package uk.co.desirableobjects.oauth.scribe +package grails.plugins.uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor -import org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException +import org.grails.taglib.GrailsTagException import org.scribe.model.Token import spock.lang.Specification diff --git a/test/unit/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy similarity index 94% rename from test/unit/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy rename to src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy index 6f56bf0..4a6c3d1 100644 --- a/test/unit/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy +++ b/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy @@ -1,4 +1,4 @@ -package uk.co.desirableobjects.oauth.scribe.resource +package grails.plugins.uk.co.desirableobjects.oauth.scribe.resource import grails.test.mixin.TestMixin import grails.test.mixin.support.GrailsUnitTestMixin diff --git a/test/unit/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy b/test/unit/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy deleted file mode 100644 index ebbd468..0000000 --- a/test/unit/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy +++ /dev/null @@ -1,457 +0,0 @@ -package uk.co.desirableobjects.oauth.scribe - -import grails.test.mixin.TestFor -import org.scribe.exceptions.OAuthException -import org.scribe.model.Token -import org.scribe.model.Verifier -import org.scribe.oauth.OAuthService -import org.springframework.web.context.request.RequestContextHolder -import spock.lang.Shared -import spock.lang.Specification -import spock.lang.Unroll -import uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException -import uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException -import uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder - -@TestFor(OauthController) -class OauthControllerSpec extends Specification { - - private static final String REQUEST_TOKEN_SESSION_KEY = 'twitter:oasRequestToken' - private static final String ACCESS_TOKEN_SESSION_KEY = 'twitter:oasAccessToken' - private static final String PROVIDER_NAME = 'twitter' - - @Shared OauthProvider provider - @Shared OAuthService service - - def setup() { - - service = Mock(OAuthService) - provider = new OauthProvider(service: service, failureUri: '/coke/pepsi', successUri: '/coffee/tea') - controller.oauthService = Mock(OauthService) - - } - - def 'If authenticate url is hit without a provider, an exception is thrown'() { - - when: - controller.authenticate() - - then: - 1 * controller.oauthService.findProviderConfiguration(null) >> { throw new UnknownProviderException(null) } - 0 * _ - - and: - thrown UnknownProviderException - - } - - def 'Success URL is hit and token is read from callback'() { - - given: - - Token requestToken = new Token('a', 'b', 'c') - controller.session[REQUEST_TOKEN_SESSION_KEY] = requestToken - - and: - - Token accessToken = new Token('d', 'e', 'f') - Verifier verifier = new Verifier('xyz') - - and: - - controller.params.provider = PROVIDER_NAME - controller.params.oauth_verifier = verifier.value - - when: - - controller.callback() - - then: - - 2 * provider.service.getVersion() >> { return SupportedOauthVersion.TWO } - 2 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } - 1 * controller.oauthService.findSessionKeyForAccessToken(PROVIDER_NAME) >> { return ACCESS_TOKEN_SESSION_KEY } - 1 * controller.oauthService.getAccessToken(PROVIDER_NAME, requestToken, _ as Verifier) >> { return accessToken } - 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } - 0 * _ - - then: - - !session[REQUEST_TOKEN_SESSION_KEY] - session[ACCESS_TOKEN_SESSION_KEY] == accessToken - controller.response.redirectUrl == '/coffee/tea' - - } - - def 'Google deauthorize endpoint is hit'() { - - given: - - Token requestToken = new Token('a', 'b', 'c') - controller.session[REQUEST_TOKEN_SESSION_KEY] = requestToken - - and: - - Token accessToken = new Token('d', 'e', 'f') - Verifier verifier = new Verifier('xyz') - - and: - - controller.params.provider = PROVIDER_NAME - controller.params.oauth_verifier = verifier.value - - when: - - controller.callback() - - then: - - 2 * provider.service.getVersion() >> { return SupportedOauthVersion.TWO } - 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } - 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } - 1 * controller.oauthService.getAccessToken(PROVIDER_NAME, requestToken, _ as Verifier) >> { throw new OAuthException() } - 0 * _ - - then: - - session[REQUEST_TOKEN_SESSION_KEY] - !session[ACCESS_TOKEN_SESSION_KEY] - controller.response.redirectUrl == '/coke/pepsi' - - } - - def 'callback provides no verifier'() { - - when: - - controller.params.provider = PROVIDER_NAME - controller.callback() - - then: - - 1 * provider.service.version >> { return '1.0' } - 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } - 0 * _ - - and: - - controller.response.redirectUrl == '/coke/pepsi' - - } - - def 'Authentication endpoint is hit'() { - - given: - - Token requestToken = new Token('a', 'b', 'c') - - - when: - - controller.params.provider = PROVIDER_NAME - controller.authenticate() - - then: - - 1 * service.getRequestToken() >> { return requestToken } - 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } - 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } - 1 * provider.service.version >> { return '1.0' } - 1 * controller.oauthService.getAuthorizationUrl(PROVIDER_NAME, requestToken) >> { return 'http://authorisation.url/auth' } - 0 * _ - - and: - - RedirectHolder.getRedirect() == RedirectHolder.getDefaultRedirect() - session[REQUEST_TOKEN_SESSION_KEY] == requestToken - controller.response.redirectUrl == 'http://authorisation.url/auth' - - } - - def 'Authentication endpoint is hit with valid redirect uri'() { - - given: - - def redirectUri = "/controller/action/id" - def requestToken = new Token('a', 'b', 'c') - controller.params.redirectUrl = redirectUri - - when: - - controller.params.provider = PROVIDER_NAME - controller.authenticate() - - then: - - - 1 * service.getRequestToken() >> { return requestToken } - 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } - 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } - 1 * provider.service.version >> { return '1.0' } - 1 * controller.oauthService.getAuthorizationUrl(PROVIDER_NAME, requestToken) >> { return 'http://authorisation.url/auth' } - 0 * _ - - and: - - RedirectHolder.getRedirect().get(RedirectHolder.URI_NAME) == redirectUri - session[REQUEST_TOKEN_SESSION_KEY] == requestToken - controller.response.redirectUrl == 'http://authorisation.url/auth' - } - - def 'In Oauth 2, request token endpoint is not hit'() { - - given: - - Token emptyToken = controller.EMPTY_TOKEN - controller.params.provider = PROVIDER_NAME - - when: - - controller.authenticate() - - then: - - 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } - 1 * provider.service.version >> { return '2.0' } - 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } - 1 * controller.oauthService.getAuthorizationUrl(PROVIDER_NAME, emptyToken) >> { return 'http://authorisation.url/auth' } - 0 * _ - - and: - - RedirectHolder.getRedirect() == RedirectHolder.getDefaultRedirect() - session[REQUEST_TOKEN_SESSION_KEY] == emptyToken - controller.response.redirectUrl == 'http://authorisation.url/auth' - - } - - @Unroll - def 'Oauth callback is hit but there is no request token in the session (bad callback domain) for oauth #oauthVersion'() { - - given: - - controller.params.provider = PROVIDER_NAME - controller.params.oauth_verifier = 'oauth-verifier' - controller.params.code = 'verifier-key' - - when: - - controller.callback() - - then: - - 1 * controller.oauthService.findSessionKeyForRequestToken(PROVIDER_NAME) >> { return REQUEST_TOKEN_SESSION_KEY } - 1 * controller.oauthService.findProviderConfiguration(PROVIDER_NAME) >> { return provider } - 2 * provider.service.version >> { return oauthVersion } - 0 * _ - - and: - - def exception = thrown MissingRequestTokenException - exception.message == "We couldn't find a request token for twitter in the session. A common cause of this is that you have been given a new session by the servlet container because your callback domain is different to the domain you are authenticating from. Check that the domain name in the URL bar of your browser matches the domain name of your callback URL" - - where: - - oauthVersion = ['1.0', '2.0'] - - } - - def 'RedirectHolder execute the method setUri(), set valid uri'() { - - given: - - def redirectUri = "http://test.com" - - when: - - RedirectHolder.setUri(redirectUri) - - then: - - def hash = RequestContextHolder.currentRequestAttributes()?.getSession()?.getAttribute(RedirectHolder.HASH_NAME) - def uri = hash.get(RedirectHolder.URI_NAME) - uri == redirectUri - } - - def 'RedirectHolder execute the method setUri(), set valid uri with empty hash in session'() { - - given: - - def redirectUri = "http://test.com" - def currentSession = RequestContextHolder.currentRequestAttributes()?.getSession() - currentSession.putAt(RedirectHolder.HASH_NAME, [:]) - - when: - - RedirectHolder.setUri(redirectUri) - - then: - - def hash = RequestContextHolder.currentRequestAttributes()?.getSession()?.getAttribute(RedirectHolder.HASH_NAME) - def uri = hash.get(RedirectHolder.URI_NAME) - uri == redirectUri - - } - - def 'RedirectHolder execute the method setUri(), set valid uri with custom hash in session'() { - - given: - - def redirectUri = "http://test.com" - def testContent = "Test content" - def currentSession = RequestContextHolder.currentRequestAttributes()?.getSession() - currentSession.putAt(RedirectHolder.HASH_NAME, [testContent: testContent]) - - when: - - RedirectHolder.setUri(redirectUri) - - then: - - def hash = RequestContextHolder.currentRequestAttributes()?.getSession()?.getAttribute(RedirectHolder.HASH_NAME) - def uri = hash.get(RedirectHolder.URI_NAME) - uri == redirectUri - } - - def 'RedirectHolder execute the method setUri(), set invalid uri'() { - - given: - - def invalidRedirectUri = "" - - when: - - RedirectHolder.setUri(invalidRedirectUri) - - then: - - RequestContextHolder.currentRequestAttributes()?.getSession()?.getAttribute(RedirectHolder.HASH_NAME) == null - RedirectHolder.getRedirect() == RedirectHolder.getDefaultRedirect() - - } - - def 'RedirectHolder execute the method getRedirect(), return valid hash'() { - - given: - - def redirectUri = "http://test.com" - def hash = [:] - hash.put(RedirectHolder.URI_NAME, redirectUri) - RedirectHolder.setUri(redirectUri) - - when: - - def ex = RedirectHolder.getRedirect() - - then: - - ex == hash - - } - - def 'RedirectHolder execute the method getRedirect(), return default result'() { - - when: - - def ex = RedirectHolder.getRedirect() - - then: - - ex == RedirectHolder.getDefaultRedirect() - - } - - def 'RedirectHolder execute the method setRedirectHash(), set valid hash'() { - - given: - - def hash = [:] - hash.put("controller", "object") - hash.put("action", "show") - hash.put("id", "1") - - when: - - RedirectHolder.setRedirectHash(hash) - - then: - - hash == RedirectHolder.getOrCreateRedirectHash() - - } - - def 'RedirectHolder execute the method setRedirectHash(), set invalid hash'() { - - when: - - RedirectHolder.setRedirectHash(null) - - then: - - RedirectHolder.getRedirect() == RedirectHolder.getDefaultRedirect() - - } - - def 'RedirectHolder execute the method getStorage(), return current session'() { - - when: - - def ex = RedirectHolder.getStorage() - - then: - - ex == RequestContextHolder.currentRequestAttributes()?.getSession() - - } - - def 'RedirectHolder execute the method getOrCreateRedirectHash(), return empty hash'() { - - when: - - def ex = RedirectHolder.getOrCreateRedirectHash() - - then: - - ex == [:] - - } - - def 'RedirectHolder execute the method getOrCreateRedirectHash(), return custom hash'() { - - given: - - def testContent = "Test content" - def hash = [testContent: testContent] - def currentSession = RequestContextHolder.currentRequestAttributes()?.getSession() - currentSession.putAt(RedirectHolder.HASH_NAME, hash) - - when: - - def ex = RedirectHolder.getOrCreateRedirectHash() - - then: - - ex == hash - - } - - def 'RedirectHolder execute the method getDefaultRedirect(), return default redirect hash'() { - - given: - - def redirectHash = [:] - redirectHash.put(RedirectHolder.URI_NAME, RedirectHolder.DEFAULT_URI) - - when: - - def ex = RedirectHolder.getDefaultRedirect() - - then: - - ex == redirectHash - - } - - // TODO: {"error":{"message":"Error validating client secret.","type":"OAuthException"}} - // TODO: Catch and deal with timeouts in a sensible way. -} diff --git a/test/unit/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy b/test/unit/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy deleted file mode 100644 index 116b801..0000000 --- a/test/unit/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy +++ /dev/null @@ -1,114 +0,0 @@ -package uk.co.desirableobjects.oauth.scribe - -import grails.test.mixin.TestFor -import grails.test.mixin.support.GrailsUnitTestMixin -import org.scribe.model.OAuthRequest -import org.scribe.model.Parameter -import org.scribe.model.Token -import org.scribe.model.Verb -import org.scribe.oauth.OAuthService -import spock.lang.Specification -import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor - -@Mixin(GrailsUnitTestMixin) -@TestFor(OauthResourceService) -class OauthResourceServiceSpec extends Specification { - - def 'User can set headers on oauth request'() { - - given: - OAuthService parent = Mock(OAuthService) - - when: - ResourceAccessor resourceAccessor = new ResourceAccessor() - resourceAccessor.with { - connectTimeout = 5000 - receiveTimeout = 5000 - verb = Verb.GET - url = 'http://example.net/res' - payload = 'Test'.bytes - bodyParameters = [x: 'y'] - addHeader 'Accept', 'application/pdf' - } - service.accessResource(parent, new Token('token', 'secret'), resourceAccessor) - - then: - 1 * parent.signRequest(new Token('token', 'secret'), { OAuthRequest req -> - req.verb == Verb.GET - req.headers == ['Content-Length': '4', 'Accept': 'application/pdf'] - req.url == 'http://example.net/res' - req.bodyContents == 'Test' - req.bodyParams.size() == 1 - req.bodyParams.contains(new Parameter('x', 'y')) - } as OAuthRequest) - 0 * _ - - } - def 'null payload should be gracefully handled to avoid NPE'() { - - given: - OAuthService parent = Mock(OAuthService) - - when: - ResourceAccessor resourceAccessor = new ResourceAccessor() - resourceAccessor.with { - connectTimeout = 5000 - receiveTimeout = 5000 - verb = Verb.GET - url = 'http://example.net/res' - //payload = null - bodyParameters = [x: 'y'] - addHeader 'Accept', 'application/pdf' - } - assert resourceAccessor.payload == null - service.accessResource(parent, new Token('token', 'secret'), resourceAccessor) - - then: - 1 * parent.signRequest(new Token('token', 'secret'), { OAuthRequest req -> - req.verb == Verb.GET - req.headers == ['Content-Length': '4', 'Accept': 'application/pdf'] - req.url == 'http://example.net/res' - req.bodyContents == 'Test' - req.bodyParams.size() == 1 - req.bodyParams.contains(new Parameter('x', 'y')) - } as OAuthRequest) - 0 * _ - - } - - def 'querystring parameters should be correctly added to a request when available'() { - - given: - OAuthService theParent = Mock(OAuthService) - Token aToken = new Token('token', 'secret') - - when: "the resource accessor has querystring parameters" - def resourceAccessor = new ResourceAccessor() - resourceAccessor.with { - verb = Verb.GET - url = 'http://example.net/res' - querystringParams = ["value1": "firstValue", "value2": "secondValue"] - } - service.accessResource(theParent, aToken, resourceAccessor) - - then: "the parent signs a request with the correct querystring params" - 1 * theParent.signRequest(_ as Token, { OAuthRequest req -> - req.queryStringParams.asFormUrlEncodedString() == "value1=firstValue&value2=secondValue" - } as OAuthRequest) - - when: "the resource accessor has no querystring parameters" - resourceAccessor = new ResourceAccessor() - resourceAccessor.with { - verb = Verb.GET - url = 'http://example.net/res' - } - service.accessResource(theParent, aToken, resourceAccessor) - - then: "the parent signs a request without any querystring params" - 1 * theParent.signRequest(_ as Token, { OAuthRequest req -> - req.queryStringParams.size() == 0 - } as OAuthRequest) - - } - -} diff --git a/wrapper/grails-wrapper-runtime-2.3.11.jar b/wrapper/grails-wrapper-runtime-2.3.11.jar deleted file mode 100644 index e91db6e2dc767bf0983e33a073d65a175304f168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6185 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 ScW1@Ey^v@Cfb7G&xBmfPcl}}j diff --git a/wrapper/grails-wrapper.properties b/wrapper/grails-wrapper.properties deleted file mode 100644 index 74391ce..0000000 --- a/wrapper/grails-wrapper.properties +++ /dev/null @@ -1 +0,0 @@ -wrapper.dist.url=http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/ diff --git a/wrapper/springloaded-1.2.0.RELEASE.jar b/wrapper/springloaded-1.2.0.RELEASE.jar deleted file mode 100644 index 520edd046184499ec7400265044bebdc94619e20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412416 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 w?=SE=Ojx{DVcyZM+s? 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∋OguY&gMHDT$4JF!FM#auebCvJ%? zA^$SRK)(WEO+p0jEe+gaHsjBM44E(aT$Ic#mb;e`&--0z~ zV4vafrQ;ojJfPASqQ4?yOc`NJAVcm|7bA8O2J7s8EFyzoykZmo+E96K-n80~Gf^}~ zH-yCYGqQvn$0vaI&iq2}cO@$+yxI+L;dZzrNVN#@aQy865xQ4mtSd&g3%&JW$^2x2+BWCc6J>s(s5~mFhzM#< z-mm}*qlkvJ=EWC2aSWylaPLf1A5vOb@bv-VoxV7O;!DWgOWIpwn}5I6$-Aw10Luf< zWFu3)6IGMqQwi3PAjjqtjQ-HTHQKuIB3}}&N%}oB$3M{5*8L)&D94AgoF^*$VpHAC z60v6hBOLMMg6Amg8$>TzTEQL2p9cNnvmQdqAFbM3TytNGrcxo_tb=yBl9~L zYaTuj+~RRkG&OywP9isBG|zh1tgZwJvWJE~iIxZ-LT-X5%`v8ih-+fcf70#0bJ4 zcZ7T5->K-b@Uk(SfQ}&;=oNP*Pg6$!+N807A(&n*d+rLZwy05(P|^;tyxO#kLOtfi z7|IFOH>4AKB^>6@fKif?m`>_`ujKh~FCsb2B=0T&HSr(10O6H8;)QVZwHRXTQ zhF>p&iKk_k*N?V7_>Z8c9-Ss}NqhSZFt z)pk{Bvvx}U){Czv9iYSswTh<#Uxs*Y158%+}K@8Bmwe4Y%X`9S54@L;42YNq9T#*Ik1Q#I#&TwL(b+UhIY=7 zBrRV-gll$pDyd3iD8}3s!eg+dZg99NvDha#`9*saPyzPA8>1@oPK7?B{JLDe=~9j* zPzA&Zn{Ew!h02;ft0a6X#G1@jf%G8F8hNc$;!?Msf~S=7(4GlYjdJG68WDNOT3ez_ zZaG7eSq|DsC5doKEaP)E%0kqRWiv=!cq!epbw6CJDkD?5Afmv$<}^1HOm2nmRN-48 za3wCR0w>qZFRP&Jux^iRWtQ+WKv|OGm8-cu({KuygVAr|) zJzl+0)Z1t{_z7suw(^eX8Fu4c3Pyggt7-Q$3kW00&fFiK*r?u1 z>$IW)KzUysRd*yiupt`B>r4zL1QwQf&iwy&Ty))dGa5@rV#W-@_I8pp^T-h@OQ=Ux z>XO#hSYc8Dkkf`Bbchl}No!@oW}Xk98~^%vx&>GKJt|;ZJsO#$CLg~sthMv}N*|*= z&fF=IO;+XwvgRcPWrLr;oP_8C|D)^M5|?dxRTKb1y+C)z!2`-_B%cdcJp`Z?%dLyy zp)41a6hwmz^T|;m6)?c`Lo`;TWoC#}t4d7LW{jj;*Or)JG=aw1YMf+8=HVM*5f%$b z-6e2nnO8QDtdHk?B@H1BAsYAy{&iATeWmRY?j#bgN(Izq8&D&8=t$7yr73Pp&MQW4 z1v4!SSSW}M1nX1~!>@@|6Pzqt-D6&7I1v-%RSl^(29jcrgEqD!K%SmcF?DlHN4HQE!UnqkN6HhN7Z$E^OUA)0`=7O-UMoj z=~b8~{qf_J{P3!@+Lc=Fwyn@^iemRc0Si3Zw1+_|;XPE-zzSF@NU@a^_%NMvYSu5X zEva+r7cWk(I6EaP_e19*ep)%h_LXoSxm+>)%4PSf=QJs0e(-bNu~?O}s$G@$%Q&vR zT9tGPdajHlUJ=k$(f}^kjP?9lCG)B(M|U`})yj=!*GlcJd_09d1^IGpK-M|gV{fOZ zZ=s#)w@ROieue%Kg{yb0aEKFlIrl&Xe9JoYu($Tws&9&8OKsA1dABw$dBssp`o*w) z=g*eUd*cBdAv5PPNgnORHDwVM1q+apPRjM(Kej*4xm+i?`twHi6#V22VeMH^5d zv2bu6Ew^sgDTLBm*_1?hfHNE_g@W%@#*9Mc%5=~W@i?Wb-8-}`%J!-D)6bWTKOq;? zvk0J3Lw^R+sWo)1k_H>nwZy0{^^k{c{S`{*B@onudGq`%0z0%;^o0i$2MMOI|Tvr6TtQyw$}(*v@dk2X$X zG*;M2^2lTLg&yD74Qc*}tdyE&8R->rT&4aq$`tc)?#dii0`e1f}P z`xRMytxKYPvygTU$}xn%DepTRa&C-Q^fh__DBCRNI~ZC%xm4D75b=c)zjNmk{|us6 z`KEFh1lGyjdpyg=)yu1#)vJ?#9yyjhkA%&_Zrt!O9i167Z+oS3bq$^Q+HmW|oU@;= zXcYbw>LMW@^@P-syHqq9EPqEsJDjAJ5gj3!fe7go^}>-#G{cI$fUL$333gGReAoX^ zdIA6rMxgqKM-=qKBcl4hq$m6r6(L5&R(?qV)z1#Xg<92sfG7||?)1;XM3h`8g|?9p z6C<#&(95#xs+Q9F+Ha_DDHdSj2>yP2Q=VtHm&tLyhi&H@-Z|%7=j)EouY(JApg0B7 zaj*hov6=bD910F-TRX1+z%JbVjAWAi{lR>UXL%sw1HJ}6%~F%kn2#?1u3I(H2*Vn@ zKHLXI>j#I@!VJSL`BtET5rr!<*D6zGE}AGdToon+3Hc0z#|W_SBn(dILgum;Y8Rd( z7rZEgHOqbd^nBCtn_ahDub7|u7~JOadeo-`A(6uj5TtP-y!%c|(Xdh((=3!&rS6e=+xV_z5A7iaF^pp__~czNRuhLb zr&gORcH>aYq7}Y}TI>#$k-Ji$xPx3suROx5+jb{p=StZ$!8=zOBPm3Ff(S#I1q`kg z(Ri=HlJNgU**Qgb7DQ`4wrzFzk8O8s+qP{x>Daby+qP|W>|}c8-j{nH=FXh8&Uvre zU)8R&YJa~iWNxPuM?u9bty4&QN8D!nK>jF`zCfIF!0k8fi$e@?gY1_jENII_}?q&vk(F}tEhw#lI{lWSWHX!`Z>p!D8%+A(4Ta?){1Ap^n-1~*Hth9=J7!Wo=sZG$nPw(n&-xKwT4;N_4f z{2th8lNstNn<8JJiY2e5u2@9A) zH{HIIVB8c#ZJPm~ql71qK&`KJy&#QHcT1Nf zF&I!Kx{gH$v6Micze1~z^?S81a1C{-q62D3j9ArQPITu zUmQhT|KSki9qo)voSf_&<*i-JEdDc^+3`|VAc9E2l`$Q6$WTW)Rs>;ix;l3WqZ0Dk ziBU*ctETGMrpBhKe``I)5Xa(RZeR=rNE5Ww6m;~2{eG-_fSm0`&NNGd^*W{~?VM5@ z=2T}q=yqbVEOOQuQ%5c%Ww1Ci8(voaRfaI320*RCwkHTl6%N_A?6LfABihQb+_qbR za`QvYnQ$DC@y#NYzJ-KzMUhnfob*^(_;9zs_%rS~PG1!i9j8UW2NgrABpSNKxc>mB z_^%g_pE~pU@GjG|ix9X9(#3FCnPl7VLiuSSl{rAkvu$L{f0aK!DWO-+zX@CX_mchJ zCeGQy+KH6$KeX->EeJEffF$zskHi63gAJ$C#`T0yuqUP)0v%#oO8FyR;>m$Y&?g*G ze}n((m-a*W;K`o@1QQMIbZRxOw!4)cXOEq6VGkJs zDL+F2-{g(n;88cR>uEE zXsB8^S^R@#{KxSBksFj21<<-POQ>Y1p`bL;fCViCBg)FWBM|-pD*!xsK7H6`E!Ua@ z!9^#apBnFb9EU;tef&lAOgr1wi5O7~9DK$vN2V`XPPaQYy@Wnr5I_%gqWa5EIH9|b zG^P8U`D#X?*9%;gxV4~@&!y57`a9g3Mwc}fG&=##A=tCK*)4Evi9W)78J zZ3ll;;4f}*vnLh7oclRi#Ske2=6feh1%5HOMzS$!R-^L;^s}4D+N>>EU~K}M>5}JF ztH+}A5dQ(B0I0-4k>sOH%M-%z9xw8Q2q6M>V6j&wew1OAr3mfC^&8DI{5m+Lilk7s ztS}yFC>eeeIrZ`EI^u&24LzE}CyL!x2)|$l1pNCMeODdK7d&H(9VCBX8$QUg@1$iS zW6Qw|6@o6X1FQWx04{7otvSX0Z-*{8_I{)1lZyn_c&_iKmU9zlRP%7rM@tyZ);VDjBF+*lpZj z6Sb3Z`m}Ow>&%WRL3ZQ(oIjG$1zY#dJ2348SzUH%tCQwxwNxWNTd;;vTXq)H({Nlj zZQnb=gFRnZ*g|{}73R>D1^7#dIdBUg!B;@I=b+o)1o5TdFf)aq^A3p0MFP}C z8}Y#i^TX|Rk+1=PHW25Ua$jwb=p-Uvux6nm1D~-&Q6n)G)D`WWv1`OPKuARLklSFW z0&0jA!Er>AFv7i7Hje!AKam}^!x*W0LlJl7Q1%OIN9JYXMT9C3++j<|u9dRd$wIt&Ocf(M(EA0!07B)1q~DqO zaqF*BM2a%f2vWEa^ChPb)T6vIK3bE1qWrylGxPP#c5$P{HQ(2oc1 zh&NIJtsGXPOui^08%%U#zVZi>fQAIT=669sJJ>V2`HRszVxD(;&A9r-jpk5$?daRd zsAGqmtjau&+KURg#6-X9stg3!v|I|8+~sy71q$`In7f|GB-G|Hl=pXyWYR zXshgDZ$c_%VQc)K$yoWzZb2T6Hx49Z1AeHzz5Q(*kD>Jjl%E(jxGp$6Ganb4@moI6 zFtvt;mgcV4k;Xx^aJ}{>j%nwG2&MzeBGGO4ocm?#;Ras&^Ys(Hk1L0{s%bmr1iw9H z@qR<6)xgqq(>z1Qrq^g)x69DAqo(oYdn~%QE~^A?b2TjbB zYN&yuvQTKQAo8P%@4%l|JsE7K!2$ktrh%ew?vVc37=~ay6-jz2uVTx1LEHxnxB&0s zgxYw?;x?TsG&h(clF`bydtU`JbuZo){l9B%j-6)bZHZT)gSS zlt3WcMQgmnKUt&SvV{mHw4)c+jM93BElE`sZE+l{8l>4X+)aYA$A-zvX9^n+MnuE{+jl4wV_&Iwjz+-A!*2Xs0O)>H$NP%YHSfInUSFL=l#ejWX)Y!!J%&C%XFk`h9QFumj6S!x<)xp5YOan-N7@rGW@% z%<)EkDtM-Shi9Iqy$OVC%3A%&mDr8oj|&0jmvM0qMR_RZ+n?d|&bl2m(p>(AzDWRx zqIq|PG?fhV2mhugDor_^{kwM*=Zr12btC?c+Al#83|8&)%kGTibKEbW7DGzHOr38y z5~$J_cm+%y5vmURQ&RlGK&1A~OMTHQfPn2uNjmqlgFctI2$n`c!a`noKnXd>U6fI@ z6X~voh{n~@_L<_psuuz&^&krZ2*?l~2#D_gL%shY+-j9gCsY%(ADbS@7K4B$fqG?0 zfjkQkG6W9DBOCO-hUQXFja)A8g67ruX4`)laV-LZ4g~77Ew2VnQ;rBBvobI$gek zMOYRvUXk2Vp^=D##%**VlWj4KC@5gx*riglV9cx1+~v}kQ1_(|0y49H?k(5Xwu$p- z1eHCjh0buj3&CI!Q9A@Y@kt{gbtl)0WXuDsnnQaeWK5*jRpGbeKEUCUX{8u#tjgny#zHWl6B&z<66J}B z!%1vg6a@@~b$oP$w;MLNpcQ&>`jokN)rKB{>s*xXjY5GG<`Y){%eJTto`0&S#}{dM zkn%V^{?JsTGiL4?uQLq~*h#n#ZTlqUrS;-3vXGHk#k5#cyWm5UU6Tvp6FL<}Wkgqy zp)babf~1ArftV`9F>5lBT9uGca0}bqtCB5MP0Oqj6TS=B?DYIz^<3y_@q8G%jXbf$$71dC%~FA zC%tY{A)+or<@%#x_e0p{!p^MPRzTdsvVvwsE?;FYct@&2E$GzXFIq~3S6P)j7f!x2 zl8h3`m@sIO9IQ~&BsyTOrb(SYl$?{mFp|tBPU%9XG0npB6fX)MCJ@2-K5BN3TW>YKgb+wjkxizZ`S-0#!c4Hc z11C-EVqII}rm-oSZG(yZ5>Ff^$X}x{e=iIc7Mi?--lLWa6UT-ai0QF4hgA-fE#rv_ zQNzLo*0mT2|4 z>e54k$QB8fzwwA$7Jp)YDd zvv370Rcgl@cGRRbMk4j>#oY% zJ@qI84OJZzX3YYv;e{cvJ5JFRLg5+sVx5!5;8bC3{&s{WNnwhwV-@pSa8M&Fs!o?B z*9~tEO95U1cAl<)_jg#=6GEKRhD1|st}pe*yj+Xj+U8Es@;0wIv8Gs4j`=SIYJ~)I zR0S<|dez|66M(lB$vmI+%}jFXkj$VJORBp9SSe*AV|1h=u{4g{#hsDcQ;*s!;}v z<7{euHTS_AS)36G_>64><}6+IKN|f@c6pjIhIVEQB{$G4^6Re~AnlPTV_OP-K7EjZ z;9Iq_VLlk%6j-mIRab&%G#HdCitsBluyuM$gWdzaXWW4+w<&$U|J|>$a!pTg?x^RY zxFL(?A$5Q-LY7SVIE?Oq?lg2JZnZ1_VNo27Q{?5)rArXvetKO-@J6)V?6botNHn~# zp8F(P-8uwN`3xB z|7E)4R%?t}|MmVw=vw1;l5UpcMgE=p{r1iKn?*!-l#+X{-czxzdvLXd3+wF4{8{!M zl81IDMIuUw&u>mPI{p%C)^nD$x76mTsH4QFYnqrFT2w>uhxExtfZgUVo6J4fs!WBI z9YT})U3Sd;+II;ZY!kR}P76}#IyTv5GJn1SWuLYpdRI%0R_d%TZmw^BcyK84(`R3xz*OvP4l9>HHoH~a$Rq3tlplL zRlO3-uX4$>k``MNVIv=v>n#Y;^2y4=Bs-|`^GGbtE*m1oiD*TXCrr5Ju9*oS7tWK(~agys=nHJo{`w zS%u|bL5h!Oa@R23aMOP>kBg)yBuQjZ2V{mFw9R8%l?Z-$-P|`+08n!SjVDTj>ZP?# zJILu{|4fUK&0$;K!sRa@lz}wm*AL^07SZFNF01+4ZC=dbbgu#^@I}Ka+hOPD;Ubgt zxze>*>!&1`EmAIkeO>YL+>CT8*F)k? zG%gePNsM01xa_pZ509AIb#63f`|pqKjLL7EKeW2n55$i*DLZIb+7Kn7URm2AItO>r za#jb#Wp5d!5{cy=R-W0sTG;w*$aQY4^L%`o;QfcR67B)({!i7iinAG|U zt!kcU%03O)Qm%lF3!|9?61+LZ9GdPfbh=uXHG~i%q$yoqL*fF9pfU5XAZSx z3m_Fes}|e_gkzpPQo%z)i&Xp!6mDb1Ryx77S^>e-uP8USskn;4-DdyuyAzR3MKU-$ zVik(?pYWo6Ei^avdU;$ANn7&S8VR9)f01M~98@!UGd#AvL`!LCSCw z+-J)-j_HuAd{BhE4h@ZtRdL-6QW{wy7=oNI*C6C6;-_?)8+0IV=9ybR5_>6}qoeJx zj`7ouqj#H2%oCp)SrLHeK0}ODP@c#6iYD0J%R4;~RTJW4d#cmGgm82Q$S%f8L)WymO42MM0;-^l(>$zn?jCAW*EK)bK8LevVQYy_A* zakb#4d_&yUXWNVPVL)D|j{D;nxFC4KQi65Q)t`TDz+4R)Z!JJ=5`61L1|$S-eHnQS z>-v?xppX85#*TT4)OV;t`jnwNUis35hQ++9r`JrZ@%f0Ky(vGj3@Hd^GkEf;J;RuMR-%@u<~QInMdz$${c-Bu#Rxu~frDfv>n5oUivIj3gm*Ad31EU!}_P|`1c2wp@Km=3@ z0W&wibmCjwo#N~(0kiM+BmIE`P*qmim}_fvmUV3OhYF@uOoe7pA*8^#n5j^3t7|re z_QcO`C__rct(0)8n>Mj+_cs(a3**7jWfXETovxX~I}!M6niSpknZx^_7O+;aBRAiV zjdhvB|AO7SOjf1UUSgQ-C(qx~PcGeit*E$^oWQrniCi|lLqemTKFFs`$rL$r(TdPe z29`)x$q8|6R>_HRELNctY##y)n$)W$v#_izt8u7<1IYF#w3Q_X(c2IV^SQv>S5UyM zD0`WhHB=PgQR0Uv zx(pU5LTZ(7SYqs#@&3Ds%223SBCE~NOI59OfPc8a2axyEG^c^D=qk&I0M`_kex8_xH1v-BMG>+Skc+C`WY@)=DkMAhc+to)lb@HU_sSP3bme zm#o!0ny6?@3$gZ}&sSs|PnoO8xVSb|oN%+3MD9EoK@`3SHEJ48e`cDiOnXB!q-m|H zpX#TU4_4KhYb)zr>i^BTTHc50BK0z9b8O}cus?3Sm>NvJwD;b>ho8e$X^y(YP^PJ= zu+vrs;o3#BuvAx9P%X~bi{_{<8A%uc%r(G@E?AdW*i@C((oliMPN0`pt1Bw%=`}3% z+m1p=7A)^l_p1(HL~gXl?0s>g2eHjm)@mK-yBS!ocSSaUo9u}|c528mLzl`Jz45xlrhPrg}p|n=Ka?)=M z^BAjUAJ_7}!K!jr%;-#f4@CD2mo9OX^|6HY$+aWn_=8XymR8&d$cib&dQaO#Mv#VjfOd6kVSohKSMT z&_&U|+yS0B-)y^Px3bUd&na9Zt^KFd^ZC)D&&-fKl0N1u7>y7c2uHQNH+ffi3ZUA! z6d(QwY9F5rGl)8Pf1B5^@yOQOoDD(}eI|0`40G#dubP-6eDZw>r49cTDRd^RtzNt! zN?hq(ytqkRaX)7@@eqK%V0HWLz0 z)wZzC?oL8hU7XcDvHFyyygW)Xp{zS>%K^5Cd9-sUyc`t&Y%Nocf9JcE3tZemEp2l^ zzb5u0;UQ+`tHKir{guEB5A*M*z_Cmo<;bpPhdLGW@zy&X?YO^uA#=+Tas{VDWOKwG zmeY?jamr}wYVdIx*SE$IM>@{3g8h^a;#Ig`m6hOR$TMov&SVf)r+4;kUcAsSRK^tt6x))i=#`bRbvL)wWZ~qEfh53b#Dxg0tO#X_Usj+QEFJazFv$ELQ6pg z>DPWi3E9y2%<@yPDS#PR4F$|n*Tk0MnNZ;aB%FVfTlhp?-V|9cYYLZhYpeXr^l^hH z932@ud>$}whn<#Bj?IEU zT^3U*71I=)C;(r1TSdwEjW;^Hz{V!DG&Br|Y)IQNc^a;wTrQF~QkbIlfl7LEC>8x% z7De38Xb_|y6C=1V^Chp^U8)#iwv#fodgs4V5kNF_qmEOpiH5#}tPdjhuptU|a0Xl6 z)2!Y8RUJumzWh}MSulnnH&$pH@0vgT4GkoL_L8@=Dwt-}h(AUXRKceWHi#X3V#ci6r7pwa{IHsW(jza5gb12Z204 zZ=X}~93;f^MQK!>oFxC+-lR=V za{B_7)Ra}1)Rt0I`YJbXsUGpUPdp-jh$9p^NrdeR9^PFRzXtwNVYKpRO4EI33F&d7 zaM`=vW6J#g4u_|$s;wxutkTrpKk{SJLS9?1l1kk-C2u!0DjP&~THwLdU9^hiEetgp zv9!x<1?|FhO2)H>qp`FKBUz2rkZ^L!6W%^!hnO(3_2MszONM+Def2HxC|>Wn5SKc# z62kn9`NhW_*n2H6CjeI$IZAkC_Q*u>!|f+$^X)T4(oLUZ$kEK1^{7Jg7SN&ax8{Kr z@-v{Ne1ZyAElI`#SVtR*i`UnWCb8Ijxn*r}U#X&GqDZg7wh16yc&R}f6-{&wmHA?KUmB~L#3*|{>wjgi1x*766vCY~Xi4@JNc&3Zq z*Bo;8;RexT#EQ!X!V#+JwLDoQGW@qlzm`6rX|%BABj>3^%U@9cv1L)vFDchVOdG}& zy^sZeB*O$a*oV4kZ66PeuHj{VSY1i4usKCyv7*X{Ic$nQ zTcHdCadImU`kQGPXl3`=O2-ya%A!LTFbjY>g)jTpLInC~*Hv$fX?7u@V?zk%P&?ZU{{VmA%YuBUGjU{zqj- zDONX1MG`bz+(P9IZV>%L7fwq~7iMFK-w63kubgR`#PTbXcjr=vx;K$!;w6>8i#`7a zC^7k{u2hH@tc@t6w~#O1V&>r@=v3b#vUt(-5N`GV8y!#NSz_NJ!Nbr?TOH&lYN*4{>%eJ{bTrS(^r{!!JUu~Ls8Sa2 zz^BEC`&MzV_ro^nC5}r+q_;6<0kYnx7Ycn60fr&+^_c=!C($C@RmmzA^3sszYZnji zT9%-+I}-w>8gLuCzC8W`7q z%x(#k>H$nyKGF9p!)nh|qq|Dzoi|*v6*x5b5nd zO6Am%MNqBGT=uc^JgvE~&g6eM@x-E2yL; z6JYG`0ZEnkT_fkLYyl@4?Eo0Rj6Lw;GnV2m_PL$J<+9v+-5Tc{5=E6u9F+u#C zpKx5wF^qXIX?)lIO3@{ne1x;=rJtLroqT`AphtQ0LM#XzM#!uR{v^f0EV4rl$39zY zeZXXL#{QPa`8{o}?nP8)eOj{6C(6*I%Tdnz&cefrR`vqX|6^j+HEmU?X~q5ZtqWcA zz2u|-k_jY1Ra-`*p}gJJP|C;Zx>eNXkSE+RJ;PM%Zy|TNr$9BQOMWnlwNq3CXM7(1XPHv4ZW3n>4 z@(?Qh=gkZivxzFohma}r1VZm(Y?hgI!Z7iuezB=b)rBI$N!$48O9&C4*vqVk!~KKa zgMew6Y5AB>k{jmD(W_(V7}3 z0%FmG(*%ZI=ot2KYldOUvqRp3a3OVJ1x((1{<9rbW=50B@)>y=+1YaA(~JP&%kw&S z8I$OzfVAW!481x|f0If>S%abuQmNM$XHMwxnpEW%nQ$bN&WYpPY?`=a{BaibFUEve z#?5>z@<%7@dOxYMZ~s9m?qg5ZL5Nc8JY)$L^@`rM`HMbDqPr7>W2R3OE&-2cdTsvC zfn7F0auq>+@Rue&_|#LV&^~N+KK@~~?{@P7u^a+q3OVA-R~Pa3gZ}3!R6jm*=GXfz zWOh=?^XzfDJ{rU1-e0{SO@~aH#d<4Am%Q~u#L`FHX}qU7OTElh?<0fe=x{;^h&rwW zoB?7lJ4oL99C`z=6ui4>ds3(G)Ku@2#D0$-Ld3(Va`KmW=w&{Etf{gizlpu{$(e7$ zdzTY9F;awp7j`C@toGb>^|jS?${Ce>WJ7v#+3!j$~)F^pqJ z!wWl)c_%u{MR}vw=5{xQ86C?q9>gE6X;Eq3Sn-^=hIb>>fJR&U{8skgC z&U=BumwIyj!C@FB0hA2)`9k1Z8u$T3D|$IyDW;K!Z)^b>#EpwbF-e>d?r(}rTkG2_ zotYD|FH`Fz>Z?63qn~^T?9g0ERy+xU3ouDVH|1dG=<80bw$g`eLbXjW)dY?TsP<2J zz2L7?#UA8*SDd^Q^;90)%H7GjF|mDRkQ+lZvX& zivamr&fzE__BYq~pM1K1*m$mgm)jd^l4Y4}w#DTg-rDRoJ&_2J*?XkkrSE@Hxy4pg zaRSj_GIUDw+d!klG}Q2;qH^+Row;Jci;9?8ER@e_xU?AABv0kJM{;W=%8ST=*lb7L zMh`lPvZaVS{9_9z&)hpues{#m7U7;7zvE{MZJx7q;1+f;-d3jF(WhO~a>ex&K4?Jb z42dqof9PQI?_$I#+x$ zpC~Bx1(w!w|;`V@VZ+t z2DdDZtxe~AuZNnr*+YwTkwe4zb7DvynTc#xr3ipIp~9S(cw%V0+LMqbci7>yU4v{2 zxe6-Qu2X1uiO_0QR3lZAG(5Z8sbf+9gy^=Yf_&2hftPI>ZLq0v zVfVD3<|w>L*n zJbCVbcacbRtMtea{)NRGwgLOd(=F~-l!~PD8L?BMb_QDaGWuxt9<5tQe_pHqcl8|7 zGw55`4kW!bEqljw{1E|H`j!dPXH0ZK49P!EgUx5a@r;=bRgWwn+qMa8&wLLyplE;2 zMg*nGHI-ZLyrqg@17q7KmXo~8E2(2@yU^L{x49Balpj2PZPk41+OFGccZ6+=dIMai z>Oe2&qH*srqoZ2FR}r2B@OEYx#v)~z?o2`ehUVV zQ+k`-OZoK^C@H&@stIQ*&oWGbLnL*Y-~98Ub?a13a$nedk5r|TX?a%ZF}7w9+x<(s zauoBn;vY&=60>#0k07{`we<#%d{V&F2&HlwIA2jQ##u3jY$^Q->f}-e>(+3%(}vt%Doh z%~{7Yk!KIh>#bUzu~w@gd-3T{fn7sd2Yr1Mv6=#}EIf@3&jRA}W&ME@1ckXU82{+JKbsLW6 zROgpDNCiGD1B3`Dw+gB)g?Q7b@%|Kf6fH?A>vY{cpG&Zs0P(|reX1f^UP&z#h$iHf z!B|aO{%v)DHJ~+<l(O zOk}c39Ryc`SCkuLstf1V=-I;=M0(TCWDg6pRmrv{R%f~=g#;}r1ZKWt>bTtlAb)C& zi1qOQ)FK&ICia+Ro{72gkXkXzUX<2V_4zv}8EBPtBtyP5MwlcSWTzI^1l za5tO#6|o{A+Z6k-TH{2vvL5MDGr|>=pZ~};!r_GP;S+jd=z){|19}=M;cwwD3@qZm z?$6Yx-3KCop9fqA22_Jd4Lt3??BDDUL}WgL4FPl{(1vQy4um6k1;GR6j+S@!BOU0W7f$s94Mh8EuQjsu z8&dmcr}Des*ZU#j=>vT45_m*#5c;*(P>QKbIy9L=pHGaJoMukh(r6@E=GZ ze#yUuVEhvWU`_%2WUoqr|M4*q4s_U4gZ53{Q(MPdMCeK0(}M0vjz;6b1|f%nUs2&*`ry zz?p}_fXF~74_^jO1GWT;0~`e`29g4-3KR=b1;PTX2~_RR>Td+(D}bAaKL-p2yaLJw z5(}CI#DQ$jw5QyM(TDBd2y_ZG1F8+w24&BSVss?j$ zJ?4PHwJ~kHC4%!xRbj>!^ok#XLBw}~_Oi^)v zIK7kbW|@uYW)t4Lo3f^yj-2^q2}VXI(?5wg!%in0Z&DuId#X+#Cquj&tdEqAy0mlpsE^0JbG8Of7uPQ=!I#ur%W+$N7q6bQ z<&t^<<>Q9Ov2asSk^?`5Il3)`~B(GsGO%?1O0?uDB1v- z^D7lR{BaOOJ3oK5hr&B|q#k6Om$c0r+A;BijM^~g@rvuNO~fr+=dUBnXD?V=wf305 z_hv>Dd}A~|w6Z{YQNqy^GrHprfGnCQ?iXlOtAf{#hX0J|HnG{Gpbq5i-=5}U>Xx@` zgmXtJzoML%7NJqJP%ZFK1*$`u69* ziG*i(&ky2nZYLPd>S$Ri2*B3;Cq6JUX3=|K!o^r_WRQB)Pxam51zYLbRdFCw*$IN%6`t zBo8qE#V}nnz9k8HavRS+!mZ#P?OO24F&WXYVZ~fqAPBB+Ib8L+K-Z~XW;*uC%WQ4I zH0}BeUMWif$@FR#mS$u`8M0y}kOM;PE%6Omx4f7oJ5?pRHJ)&Y!W_ots2z$MeHD!L z!zm+FA@ZwG+vvI5TtS9n{1tvL1J{DGH{$-4R{zCte#VJbwO$W%J2dpxML2oA4jo?aBGklmP{aIHl07LM9(V3l4)l{FBIjE-OWJM0epeXNn-5FuuAJ>Rk<7l= z8N)YH@_o1RFkuPAHx%t*oFc3r+>&1w*Bh!ch+o3Yp4|M~C!#aBUq;RG>|FJyMn@vQ z*vs9i1-)ND&I$dz)Ti7donJcNL9J$%4;4pe_-vC2)({V0Ye-WmVI<0i7G$R@_(R)_i>L z0UcDVknEeUN4KxCx^|a!QMXCNZ2i(+pqXowfIb9P#gG?g;%I-btjeu#@bXZsy*jq* zOz?7D#gCo8ft=8~JCj~3qcw`&kFqzc_DUw6)*C$u@=0{{dAm%UM3^*D3a-GLG0ilbSeZU_UNc?@I9?K01c$97^rI>!$MjDB#J0z_ z+zZpLHk4LfBXM;)=#9JLt}*9&4le;lK?64tMKUmAvyZ*N4vMlff)MgsQuy2*3y763 z(JmC5fzy(Oml0*z1%=k;^M3RLoFkNv}f@tE6fe|kueuzFeADIP0sFp$L z!mukMosOzYW9bEnC_fG8)6t?RO+1|>R}_{#2HC^epR&)I`c)xCLvht>4V`v-nqJji zS2cTr-mg#LS7exkXP*KTx6!0j>h@XRe$ua`)obgOdi#UX)# zD&F=){z2EfQ@1qy?N4yGS0N?~3cvEG=v`RpjQLZX#{O%`*^3hD?R71%%Y8f72e+-7^6e%{@9y%N zKh?%8Qjr13jJ>}OHdPF{7IttGAZ`k;-%SF{rJasmZmAs7O(j3{4;y=Lbn8ok!T{=NBE%gFG|!iFEZ$ls(MNo6eshPnfga z&(&-#p#5aNRBejzv)zuYInq;aEr>F*72#e2#fpeWF)E5tEEdFGkcE_lJRT?Q&_F1_ zUywi?>whf56QY;I>;{C*>lp*OsTR+iI3vGl7t>`->jaq+O~z^1L`@sV9a%EToz~zu zo!XbD!>vx9RLfAiJJ`2*Ft_sBirTV5J$eGq zG9J*%w+~ix_8o1ew9&t|(D=B!C>CFu9_&a4%w)kH`hUP{0oE{6QknJKZ@sOG8D12- ztF+cy7JmT8E>T6>hDcRe_IyiL5%mN9s|7N^JgFQ?L{Vd8W($-WaGZny?G)l~s8V3E z;f1D1o;7^ee^kqcNb!1Q<448AR>b1S{W+DCIIbmHWsPXC%jG&vRZ6$WXbMV`)-lb< z1-f`0s01#hVXT#32$V?-*9UoI73?}Ew>qnTFIo(9TT!otF8N9r`-$Qu z@>C`9n!Lng1?NznjF$1_CbgP^(&8}Pc$voz>ylOz*lzmn#|Z1<*&|ClFPo#~Nt`GZ zr>&FbJQ>^7DSqZf)*mj(3Fl-zIkrvL^~^A*-`P9yus@jH?F;3&*rZ`_3JuzE_||ze z?eU_MhjkZ1?%*dC?3z0kHC#082$iDQ=v|A8Np65h7<*a&^}q5~ur!FQ&^xDX9Ehyo z`K1NTd7w1C%IWFaJ?l)&?HJW}#eCUVFSc;t6CE0ioBLF5HT$~6ZDGOEPpjSJAtti1YDgW1Eq8pRBST%o{mIZ@*03byT^lo_n zFr-Ch`u`DH$4WoSJH^N-y(-3roDE7eOBy6u*mGdSjK8G=B8( z9Sl4yvmY8z`1`TQ`=KUUMA0478qQ{Xi{{lCRoH<#@P(U2YFpxXcy(&g8ekLWIxFK2 zzX>h0`2)LMb4xZxsEL~tztHp$&qILsH{EE6emS0BnMdMQtn9qzEvAPmFLbL{Hp7c3 z&KhIghJ<0Zp}l6bW|1BulyUphhFICl>g9QvJCA{JfX~^px({|j7#FC+=n?~wJbNTGv2R<0JBm-9c6cH=Tf|dyX^g7Tr?1<@ zQy0p7x)EPIdqfz`9ZL3f^|+-ElgCujEMf73q3h^nP_3-16a~|xO-6cq&~P# zmNg3*9A^%H6OV+B9m8O8ADLK4kNRE1S01^)|sOH@Hj~Fk0yM1R!)sQJz}^|wE}Wampq$QO znlzk~^)_NQc6<|`l}LS;o#)e=d$fu-IafZZLh#3e=Z6ZrHYbSf7Pq%STdW(YUYNA{ zmBSyk*S19lPdd9bb+=>r?7H*w9{b#6ZyFL)j)#_SaaG-mjS78VGU!pgFvA(_q5J*k zlH!!BTsGqGmV;rTB_7NbG=AmuNdppCrkx?xMdm7WtV2`-S52i`2tr*FSRzK)QZDNV zSo+u!s{oXAGfA-1V8tYB(8V>8Iihun+qJn-)A3vvO*Gt?*I$5Hr)p~$ZDVZ7<#o6j zfA1V;`^QGo73h9yh~PF^ZUo}I`F^A|4GNm0HN)bXq`R`;F19PkEV^1BggV!W3f!@9 zGxnIWc>7pOj^R-u}%!8}} zlvW{g-0S*{JuWRpE!91rco8IkWIfljsyFkvfhBr~$uWgzVBW zYs~8`cxk4&gK~c!w)s+j9smo5J{`iTOB|W9%(za54KmnwrN=M*al%#;Q+lqNe$L|} z+7u3>Fo+BZ_o-Lh!)fk4;3+64+F(}ehV>bTo1tY&+7F%}yDpdnb9dI5`Ul)%&YU3$ zMzea}fE7zx^!t_o@3Y?e12y&trg%gaTEe$cwGu*IX1oQAF^U$mRtqr&=PyJe%31m+c*aZO}CcpkrP#z0VFQ1C(nYfJ0QGZQigF`F#Q1B z!=!u+R3O-nCN!I_$Zkl8V?Ls_T6l_FjnHU+h>B4UG>$e@0juH*1z7nIEQt_X6E^*E zW8Euts8ShwQzvkwf}N~AZIh;BpGfi|+VM#Jt90YVW*zM!Y|n5z^3{M%UwyuHPF`x09r{ z6SGGuX(ijAMs+YOILY4raxj5+xk9Bg^i^RW;T4zGT_XApMxBc93tzrB(_Ie1*>)f7 zyvwN65ypzwI>Rd3DP#1|X(KNe0t||w^H;! z42B7N1Gq>`+K(!^YB$?Q%-73o;s-UCSXI@drIXt=JC=!g1Hs-JHN6)5xBQHH#{<>A zR~i=SCG=|sTDZz6xv0Blz18=0_tsk$UG(935-r-d*M7i>d_*-lL!7eBCq`<@Qs|bP zRG1wmZU1oFvgjUrRnGlnJa|v_@U^=I^47jodfWuq_5Dcl9aQm&ta|4H+zMMA=F}zC z7*c(ODeYz6<5xnPDmIylY&wUxXBcU{n{7$w-zUJa5o2jS1znMCQVN-QMhXJR^}Mt5 zp{-=+7XhZHD(iPnH5bAj1CL0ZdY)-pwLw=%HGMzdMc=K=FTAMa-&5bjJ=D4rJF{I* zUF(m+w2&N$&UVjk{y0`WGF5F$Rw8rId?TMSnfbSaxJb9_6tVso^&s#=>46gbp!X1^ zCN-9M-vnCUy}StKL#w-pDf=o_sI)Zlj48bE7VG6Ri?|Tt9DiiUGJQ*=t@oBmS?emK zvbMvv-tGzZm1JA*D(M8^3ykI<3dSVuQ;!|0`<6N9P2m?E@aSi`mg8&_!;j6c8HiYS ziO(@BPcKi$7+O_VJTRlcAdlNY)h%nA{zIV6tVw%$#sa zvyHlnd(j+CZvLTtN6ou*&>|-TqMu4Dy~L4bbr!4WBtte~a+ETy z?mMI+C4|@mL)MQWXdWCzb? z?=DlumP|j%IGXk*5iTEijz_g~*sh z$U}~XnQO`V-DK6+g(eI;zpv|lfROU~V~e#cVF@?Px(d2A%dMT|I?Jmu)Vy_&$9lmD zf;x(OTERWw<xG$QI+Z1 zlGVx0_1ZV|8D&+?+%h$UF9AOeUJKYnRWC?(C&Ke;+~`R)cZ|m(!CW+H=(!?dqfQ^w zdWDZL_7kR*dSgQpQ#EI}p2ZI?a}?c;=t&B%A~{6CnfUoyNNr5lXFn3V+IO%@!&8Wl4SCX3$z| z{vMk)?92LcV%u(U&w#p=YMFOw8deZJp;t)Z{`{!ds-BzMHGqD|ISxC~wZo*cdli+B zw`YcBREZlm1KDPqXD>*)jap>hR1<2(8lJ%&(r6pLo(~w}^jI(};KKm+SX$wy!^}8g z*?038UXjAbAfGiI8oh6_hw`?}l;OiPWwgnh#2IR}3bp6OHrMK@kBV3U9had*D(iO6^4R_B@dwCdV?Zk(aSeC#%geKNx?oo%1F zd6&7JqQ3>T56ffFbN-q}VgBVwi z>9NUUIQzLq!z{r=)gBaF)@;};SN~FcuE6uSZf&>whL186(1qnTyszEic=&tZum0~74<~$}c_#3kPs#R>;F&Vu9<5*^>;D8>l zz-V7wEw6;YTXr61UtKNd*sSb^n}$uNkZeE3DgOp3%c?`l6su;2WvGIEdHDowpU$cI zMzw9(EdY;xD=_gh3Xg58F4Pw`berslHy-_nA>!)zx4B-gr0Zy`#G})A)XUSz{wud$ z>@cyI%F{*JEodvIC|4wS7$s&`;*9I|P{~f`^q;q5=DBAO%WM?)9{Tlgn>nI-2Z{SS z!7EiW^V@~zzv6FZQZ8#i30a?(WZ0r`?ji?#ax++;{Wv!ShubvM4yb&3?bs}!dV_3p z*I9`faq)4$Sq)~;y<)ytUm+Z{-XBQOBli!8sJ%of{CJY~d&V>MMa+Jb*ORu3DJvsQ zh1r?Id~y0W-po7|GHERu`TtU`@Ky3@qO67kFA3#oui$D zxs9o#t+RunG2K60yNr$Kbaj8b+vr=H8|qtGx&JnIw9|JoH2a4?+dmhLy=Cg){P|J- zDuUYILT5VP^i4=;G281owcrec#bomD(BE3Z`TW5*zQyEFF(t5lihK#-6HK(=rtT(T`k?f0 zCY_}Z;oatLE^c-nZ#h1S`F`EKx~x70oQP#R%uqPYL#&U%wLLC&_)!H#LLs1q2XY-Q@3JQG3B$x% zRk?nXe(&*vENrJmp}+Fxk7zVZ0eARU9Lq1u9T1^xh^ptj*bo@>5GR$bhHG%zw3g6u z7)6F&yxXNI`w+HFR#S>>8U0i{-FUqgW`A7g1@|Dt{)sPplM$8}Qu2@CM^&*UmlY(4 zVVK8NW71V63*&`{su%tF8%upVf)1O)NuwRCSv@s*e zZ|=}+u-*_}cAVJo7baC-YeL-`BD*HFPr_DFSWh10eH-(~ieemvtnMpO3=$LN>}C7E zM{<+(8zt-to;pEgb;h7N14N+0b_j5GgT}}(KbppuXmLNU?pcyJZ<6OlP zHxPv1r;g>{3r(FpfJS-Vo6Jv`O-=IjAJjBr^z%lkAPsOx&A$KO+2>>w+IR0rCi8US z6umP#q&r}gr5arJY`JZOcc5C85?DB++*+VdNFCC2lBn7m;u<+wgn7tV9Gp5GarS5z z2s-{{igr~b>|5MPJ-LXSn3L<|Klan+@p=~d`%4l0hW9;84oZsWbBCZTJiN!V!zTw; z_x)SCH>eR!hIFpZcEM>P^xe2&ZZ;xD=aE0F*bsA z@({kW^Zvh>ss1CZVG_n2RKLR-@;j{M{=bB^kiOlwrPcR;9*K~HvA&b>KcUS3%bD&U zj+6i4LYJlVrhu%9@#RetO9~FDSq6eSJJ%LCt|38()g6FBV6{TD)u_1HhVH3BC)8q>xh;V)5C$2~9-`BCA`d)a8%iUf=Jqt>NDpZm z9hNhb!hO3}HXb;*)^3=x`k9XIHVWHUv-AeEu%**}>(u#2k>b7pLJ0F71a!PSd%*$7 z1W(D1l!aJmd zhkhdtY-*>n_=S|0OI#g60o%M>u99?Yo|t%yncWo7mAsaHC9&nlu^3gyeWc%Tr$U17 z5%cqCR|%@46#C<2__&f>g9fuDkmGM?CVXAn6viI3SDBXgAhZQnc?kenWUgy5G(n7A zd=TBT{VxS{$-$t4YVAyML2ck$_(DKszRMr zju7VTmBw>!8J2EGX05?kh{i&fWOao_j#P^?pGx$;%w~s+6-F~Uo62B(%PzzFZUDj{ zL0w&S2u}BOC#`7)k(X@-8CJKtBH+082<%qCvw^UHmb|;z)o@iYMvz61Uz-urFrJ)n zTyq725^d4qb~=6c2?+e<-A~u@ed?M=F5NxaU=$~NbMVx3;zS=2gCCl~A0Alx7s4Eh zEY|mg98YNz-t|yTty9ur0mfg>RNzM5PGD)^Qs{D^S7y^J*{z7`-R_A)I#5~3{RYQ^ zRc)z>v;-## zWH?h(gZOTc@Y3A9;F_PMod#5aAxYLKCBlZV=>v1u&!bRsfb*7JGj8N6J zJM6`RfC>H#D&)rpg=!39^_CNJ8wq($?4SN9@OYi9jMa6p@OTYicD>vqI_5FCm z*9BP#mZuY6T=bg&Qx&rwPtZjA{){NDfcK96~=%^anX?xdczd>#8^)Li*9x z#LAZsrYX+dPLHHTo=zGELlqxOuVr7LZ$b*9tdG3Q&E9y;-*iG^fpMO_obnh?Wq`o@ z+(Ej+w$9xjmfo92v{vp*S|mA%$@}4A<3JTw`nz9l{JsG`6gAS09F;(Hh zV37pT6jl0@R&R^WXmtPcTyydi9so8!3Ndm|4)I#7N*`l!{R&>{u?*`4pOLLQ?5jAM zM1Ii#a)U}%CIVz;7h(LmWTh;mz{%iU>-n17Q-!U1nMzXo+Z=oF&3gC|0u(E0tI&_N zakv(j3sf*nZyQnQN0+qxyaFWDMjFOTjrMGc@)*|*uJJjVpP9}p1iIJh&p_nJ>7J?+ zg^*}j24ImBaqMjRA?aeY(OF#_6tX#Z}+4|FTrq8mC@)(oHIKr=f zZgi*+`ClR1uaAy4h{{4WlAf)MV4Vp0!o1n@=dMysyS?(~X63omsM25m*r*wRfVCQ& zoTUC6>*r~oBk@eXIVri^5J6o#qVhJP7`2n?sK8Ns7d_f%)}|GInR+yAAqvLgo}Rpy<})qtrNEXrzV zCK9ucS9HbInzqbN#se*aa=M(b&qPl~y1FskMn*Q#d2~@crL)sIjf>$g+H@)t7-nyo zaui;us2t=_v<;92S=;iIIUpdw0LD?y&}UK~6h{d03}Ul|N51*SJJIl(A7{tF+PXGoU%d|e?n*g6wsR;KI5qbXa9E%iPJchQ(zHsmRlUKv8ZTY4BnpisQ0>QS(@ zI)T=yhlon;vkpoqzeohri0O?Y>Vcyd3L8TB4j3p34ysKy|S8HPDwX~2vt&cTT#Y14*&E)sx8}Ka5i)N@r(GF+K zP2ys<3dB!M82s|%c6TrLiQtfMjxsG2ng)9FHoz^H{#m&#ZXGU%N_Iw^P11aqM&z{; zyurQ)0A}67&H0GIM?GMeycB2K|LV*BhUxLa&>sM;K zyG3y8R(;@w;;68frO{7V#fTG}3-KVzXPa{W_2IeYM%afOn8G?}S3B#Y)U_xs^NJ)q zq?6(Wna_A`*j-N2wZ-;nZzd0lgg!W#udI_I7(VxM2Atf;oi-NCD|JB+%Er)kH2bHA zbVXwJAs#0nYZdQ#AkVbDP40bcHI@gs`3Q##iQy+@dOKZ`G`J>VO7>?CI8rXxVy-^i z?+L#M3>{V@syf>*PuS@kx|XLvJME$Lrp9&3Z0Jx6)Eq)rL!sx zVypFIMY7Y_sz;s>sJv5ELeh>A=Nf7Q^akBu<;=9t%63MfrXq{?pi$ospukaxKc&E? zV~YAwwWJ)s&Qz}-L-=|RqwV(j7}!uHqGf|Thq`-e1lfI1i46n)PFAodhIbcP-UyX>@JNm{vEvBIP;_t*9@W^vH zTa=(%mQ0}d_9;gllfI{+gg_3z>oRBOoV3r%HN8PtaIi?^aSUYxXXg*O4?Qsxy9amP zQ6J_QHlkx(-9;XNEuDhAT?-F=BJH=1Xmm+Q*2H?IWvY(04ty<}9oICy0YsOP%{2Q$ zI?jB*P*N-x+Q(Ye?1wLR+A*oP+Uyx^)ZuqZ$@4`p%V&|HGD9^~Diq5YwBcsxgF>cWI<{$gg)-O{qbuRm)talLQG6_mw;KZ*u zC7q|r!lp(`E+u(QuFd(6hrd^D+siy(?^oNjKr2z*koRpmyxP=m$q96Aq;ypC0LvpI zTI-{t{SpZ41~r_AgVJLYB;k4EHkVu1ho|=vB6fFN77uOsLBi<0e9-^a^w9iI(p-0 zXb+pVX_u0pC!9ohQmbyie%XjXNI<_?aO@4#g=#IMEXX>tX`0gs{@GLoB8iypBrlgFMgLjn65(dNPr zUnx&+1R&0*co0Twh?u;AcAoc=-kN;YA0Sy6Vt*ORy@G29s>*jZxYLs*^3brT; zE^jV{M0^M4#^^_2lv3P=bwO*PZPLLXgERd7i*YQA#&ihPtm@GI=n!K_nVlTerb_f6 zEXW@x!9Ak29$`qIlbr73tXHV~Y(taIas3P}-U8jlzLx$5AG=Ad9s_{n+x-y-1#nipZvM3JeyAuGjEEkD9LzjX?|lbCESJ9hty6J zmNev9Gx-6|BU@st8O+6WGd_z6XPHf&yv*i6V(xkqFFAL6;2K;+ z8Ll?5J77D`>DFPc>U?Y@2z)b>EFpvCqQBVGydFaIYY66)Nh>`oS;yGu@1engn=ui< zzs$yNUuBEoBYrsSyoB7J=#)igubA&n+ihxa$T_&8g3E^RL6Bf~c7$`13X6}_pxoeZ zva1HbBKt{;_iLb82jFkr_(9FuoYR~9^fLE{?+z25%q~mkk@gE45_+pj@Pxz-{aD;J z8d1#4pR9AUh!mqFRHXLKFHB6G~Sq7Ylv7I-=KaUr`RJsVG{p_%a~zR zs)M|}ziLv#U11mmsI7jI&5~2u6s&L zsQDVBkml{e4F&HJZv^V)#-Be#k}ywC*B=D$zb%W&3P+Ftjjm2Eq(a8;*Yc#8&jz;i z6*K{tzs3W<50;ax`ckRqSiM}5F?ORd>{@+lvdd{zA7|Cn%zRB%?Hef%#63CInA=|* zA0H90ZR2ZSd+-JrC(Lf%C|vmLVXlPn!e^SFvpPekf6z^D-XgA$3&7YI4Q!Q)h938uy^9 z7VzXecPxpDXLHF)8p#BoeQ>ZnU^n8{e|$yz=7j;G@ZW(yDfZ8G45bGW1GQ{iT})g| zvQ3XJk87^@fEI2tcN31`VHh59T?snEY#j|x)V;UZDuG>p6mT>Ko^ba49LYOvCAube z*?FlMHoSan)lJWn{KH@smPaV$*=cA4k>fsHJ21k&(;K&}dc%Di!D#hK*9~RW>L*4p zRqL%x=sCQ!V6dVKBLgxHW61;qBiS2AEWr}2S~cjvOtB<6?CkFy?AK*hyR^v7Hl_`` zoJ)$>Yk^|_M__r<-L^PRk}#MhIJNLkUW49bgGsPhSY$Cwk$bs;m`ssbTVGMRlVY;_ z4>r;skbvSy?Q!@E`%NV{S3A|cmf_fXs|;uhlc=>-^%k(hDz$^|-QF?Ib5Y znt^oIT|997U<&IkMslQ?1_Tde7(N7d5TlnD9k#sNF`n6f2_{%j#cy%k=B8DTdkZ6? zQz-l}VAht@ON+$ecpd+Jk~sub6?3v6l88s3UFIWH96x@Uz55#G;3;Lvz-)l)&M(dg zsffgq+L0aGk>8QdJZd}gntTp=PShLNi1^}2Wn_N~#+6jllC>I|olj9jJ!L+gS%6~0 z)q492PX)@9o;G461o#t0UNlOlSmF5a_y_XO4pB6Gxj|rc_|qXpXFfmE#*z^(L2DV{ ze}%vNqtmM9n4^pJ-Dy?%&L)5V|9*-8QKE^yDrJJW0Fzn~eBn zlnKhT#dnlt3IEnQZiHR(th4kYD?qpPFw5E`gr@@yKOp$}t>pIH= z&_1BR!G0N*FQap~ar@rE{M6`lBWA)OfslBRiCUjav=bh@+DIU76a`=oOkSa5Eyv=W zC@ZT=*1R&- z$kwt_AoLeuS+T#Ug#qhvdRHn}DN?E~5Gi15G+|ea;p5M6hm%70Qe4 zGsGBP1wn*uEMX=AI*dvs7V^!cKDjsH1&Rjuxo1jAQXL4yr%vhmA5&iY5A|wuBHOOZ4>VOj zvI$>rAnl5VQDR%?fW&#J6L1Li^fC$JPxzrWnR)Kp4NAe;#oMpV#ov1pwnH-se4OBR zgDlGgLhT4u6Y`RdYS8wu&HEcm;^Pi}X8Q=+=Ch@RgXi}ua_9Wa%5x`1gv~NIJBj}U zIpE=NMI4coQY3(KoT3QAoM`(~hDA&`8F%1Xq)Gy&WsX-j1vbZvk2R z77&L2G4@3CtsIU2N$mKKsx3+Be+QZ-pte#A>{qA*vWGEPE4sW*l7&1mI5Bq?fZSNT zJ)#}DPxglI`cGK$Z{+=k8#c^iD`?7;Kk!*hTujFqFD6I#!!>l85#8ZOk%}~d?b713^u>V*v!Y{owekdiS}Nt|K{p#e+5~$n$5Y$^ zCgGVkgi8(6uMn6uWh4 zjzP6s$S-#&OJNH8>8zy!bs`1%@V55crx0{2FC=&g>e8KJzMOPmTF-Xn?^bNR}v1ko(+wHh^EFXCAHY z_eDYyyhjx-F)MN)W0;K;Vu1Moy-<4!$vCw+l5^Una_V5kq3%j!wqbs{a^&_|Je+SXWqALD7bQiAEhnkf67o z(}av-5XYI5q=h5#(~>xwfqU!;3~_;5Dyxd5b|-1Y%zi^X)paWFk>Z+%KM{3q1CY@B zv5M1Lws%iFBqTV7WlqzuW! zrCk+=tD=A2$wBSY-OIL}nRjb{xV#0K54yupNo4`)B4_rQZTyUKK_NQ}7%*{ARb)@- zs($j$AwpS5?mJBpoSB%TUEZcl7t#R{F*>aqQaG+cTUmpCacDqT?{2H zVr|Z&*UDb6)h{q33}L`7k)zOqG(|Pp7MH`j5`V>nPGC3f?=u&t`*pAvjs1(dqo@Yi zr@miNhfHI4?8{s}598{7qRsq{Y(u@M%0gMc^6->GVop%kb@DIMSchCHtIq=b)+FX4W6eGJKjf&*_Sox__Ux?bS zJr9FrKht1OCA>jKBsGClF>Ru}L2$#m8r|W7^YW6iOoJVvhLrBf%8S}Z$h}kiHL`4S zO}!HhZbZ|Soy_`}btxJg74;b3Gi12hCeBUBdj{$~tB zKf0v7{q6LyPBvjvDN;|O5Ro6;GT%clJLNYUTj}cHAnP8@KYDrlmgtKo@1IkBZrH)t z5fL_qpX$ZyyL-l4?85M28UF&?orDtdbORjw``F%(8p%5}CN%!U(5r9Fc?kLECujFv zW%nN>8w8>G`Z2yc;d*qcZv8#<4TH_JSVH@T1NXjD|anXzc%s)uuSYz;?eApB_l7Hj*s$kA-IDKr9eCVla^W?I|f$b zkc1zh;22}bBUN8?h^-}>N2zZLNx1JkTfU%#(>pRp@n>X;YK06X)p~{EVWhNXcfQd@CNc&*j20(-s*TrJu3&Qw_|ybkYKa@}1^I+YNtwftF_qfh3HJ{+Zc)+@u*q;5wjx!V zFH2>G3`|cCF=zq5q3Bclh2Sy_li$+jy30|%a5`EzF=wVbfBu6m&#k2VR*@5!gFL}~ z*p3_trmrYMYC+mXq-1Hg`p6qZ(g6iCp{zHo@_e32K~LU6Bdll9(ae;{$kYtQ%!?}n zWRV!TTB4wQmo_-5PI2fYkl$cefA(UxI+Sw#=!NjUcYUyM!rTl|t-3@((VhF-lQ|#} zxuw{=#S&nh9;(lxQP6^EiD3a0e;g7sXCO*uT~aESn`iEF$pW9mlHwPZNyUU^qpu+r zvcvjJ6f9i`GhSq0X3A-x7V@;Xr?MgPY}&Sz#3t33tM83+L77)wfAAwpWJhG5P#LUj z2$EBI&ZuEd;%B1@f3rKHQ z=)1fdvb>%L{O$?xD{944_tc0j-oRiB@;|eG8S$JQ^_P#=YOzG#;v7RO^kZbGFR@Dd ztGl=vcX0RrV8;jozFlNzG>jR?pyuPx_@&n}H>;g7SZg2=0ii6*U*a!hhr*U2@^S7B z>weUen*BE+M7w4asRzQ&4RNS<2noRL;O+s2F?21!UHZ)XyS35D@Ox6AT*#9>xMC(Z z`iuBJmJ848cezwVj5!Sc;INYI7rSQ$n>-Qw7=SZCwx3*GTB%7qel+fvZC{7Cc`|$< z25*q8s69;1ufH(HQdqp?aw!RyLxpX+7{p`|tQ(E8q=)F&ZYVj!=wLSGi5^J=9+0{U zM7q)XVAU$II3=ts>qO6#bkwAXFAcIgQ&5Dk(|uJ6vAy?^yOz&w;kVdU(~kD$Zk*w^ zWpWlUmK(ey1k0+S=5BuaJ`mf=XW57??$u@Wi;bdA4eJ1rD5tI255|{leri(D+tW%m z>r@i|m!}`^wP@SJ4IsEh0Ue#QaaB-UXEv2i4XKy=1%Q6CPaMSz$cixJe&}*^yngZY zoh9=lwI$mi9Ak^@xWmXclR|mDzG={o24U^MC8>#v80sOF&;qZT?N z`?VxjtiwO!?IDNKi=5qM?g=WJlV?Lk3B;lJU+0*CYcliU(lNiS$303H&W8f1^YYTyuST zR0!gBvlqR5cwT)kU~z;;Y>&T8Z=H8G5ZWKou{(Dj-NC<0*r94wXin{|CE%^&zeK+L zuIzKx`WpDcig7^BS>DI>yCzt+AVu~7P`Fpf{v=t{EI6+AXa~MJQ0&|cbtOFL?9AZo zCq-MjdBI}_Lj!o`&7Us49yyA2$T83FB}AAocd*eHpiY`)-^zvEK9nBPZ8iDbl4vV0 z02Et3xYwStg+)K!pjTEL;4+|FD*kMNyvpida|b^HGW)U{FtP)uxTd5s*XRX}d1WFx zTP|}Au}>AypA=&ciUsV0WR@MC7?V(A&Ebdp(Gg36+}x1VDYNr)T5e?($a}>%bZ~33 zK_%bVvlVUe(OUlGJ*K-!1IIL4+Fuai*}5af==9Ymx2W_OKIBmBG?-qO5(PuM307I` zQ=!{c@*u@j`hXJ`^0@zm_3Kg0OR=x~W1HQZU=bj=tzxM~oP|$*vJ?|t&;(j^9Hzjn z(DSSMfvz0B3Z(&A^;L$ToSSavTwKtOc&jJFs*w=B(eq~?qQ3)5!o*4Y4X6&07gpO1 z%GADb_M#?tn(8$&T@o$&^fM#z)Az+kVwLjh!n81`^jP{Gr<hk6)IkB?NVG{B=bn$5o*|X92i)m!O8D-7T?Q-vHkEYOsGLWSD-! zu@zqS4(gTr(J^~N_Kov%>H&Y@72Go^{Ea4ZSGQy3h2_O`$PO{(y^sK_Z``;$RFHI4 zTjMu+xUds*Xa`jHEs<|$YOu0Shcf9)_D|~1ptz4VwL9x zA-tsZZ}i~9ii)GQ(3mcdaMQnzPXD6`2FcS&s{37pOThe}r6{(xF7E%DqExA9f5To- zcslXV>#Ok*gu~Kv$q-!z<&_q+Nf8kQK}x9!{f`V&t&<7cnb?^kdWYYky~i@>xKqnP z%MFxu6qE3i#!j>K)#U;uZs|KeoTqu7?l0EgmbbgVfOi;u5Jp;c2Cq|i*2|u4HX91% zohR$5u}y?I{TR+#FUQV4EIJLienI*XOCE)rD@m6aY-H%htHcUw?X1~Q?7#m!Psee5 z@2OaZGzSO#wE`gndv#&TiZ6F`4Pt%bS&r|z^2l)c`vc*`0Z(09}2QWHmFA-F3%Tm>FCj=s_c}^lG?2tZ{$fX*jN6i?knI( zfO1~TjFTGODr9+AyLVo;88Eg7;=wdA5m9)i3QJmA5p!CW$tKl}#+e=uMHVD!Q~~2` z^JMJSTXXK-ORjA?;4)GEAw{S~?62!;LN?dZMa+{=AatF9d0#+a*X8Nus=>sX(Eku_ zICex~^GmQ9Yz`F@CODm}%{ew_k15Dil;F#zo_IoogEXM+m;xXKqQ1V}c4@vbsfPi! zh(K+^fIHO{pjWCXf5H6JbvG$7OLj3*B5!ejsoxp}kQkt-VF{zJd*V-BalI^UkMH|{ z!P|+oDD6M^f|B_R;Wls8QD1bLuREZ1HVSr5&bRGuoF$^GYF6F?vpL`AMBPq~lQQhx#a+b@7>?#_MlSAJWu$B{ zZuV>U@u-B)Z_aYG-3Xme)bXpJ;ZT3q3Vh-1^4vfm#wzsTcnnl@_8 zJpB@09{2yUe}Jrdy@i}}i&EYog*|I@eFK8XkS%YTf}1M{1rMYjruH&TWmD~k zWbN?mH~)&jyHlu`V&bc{BehJa*)jq^@TZ8ZZT5-4?S8t3CJ6BwQOO_>3P;rMz2H=} zZoy*I2m+?#Jfp@NGFvsoIz+y#-lAYpphu^En=*Dq`%N8ifmod zk$sgI9}CbW;~3)O(2PJN?cSk!WHmzPAEc(Vyx|%Sk5G<@xp^G>=Otm&SLC{dFsHI_ zM-Hbw7Q6`?J&Rkx8mKx~+#SwyzF0ar!8d~nP&DJ$&$8a=uUb1IY# zC%PZcP_u@t-xWLhajP|lN2F~F;BZ7hI6?j3#Pb#&m-k3)ci72=%`=jPdk7295H^NE zqkFweHe;YaIU)SK&IBrIC*`q`3xt%T-198>`ItPs)8ogID;VJ~Xjja>%np_W${-am4dn`IE8 zlTs=NZU=s`n4rq6OQ9o>@qWn`?QE6E4MAgtWSL>mJb@cKMo7p-TJi|??~mVMnl0_- zo6pOF3j{>-KbG?nD$@TdltrpPy%ZmCzdkb>#pjg>z$_3*C`C0j%Kb}!mCC_Ikmeej zMP%^CFFy*TqwDJMuUv4uw0jC|ZaB?NmLZcNI^|#HwlBI*c*cp ziYHL6^IG429s9mdU0pqY9Yn3e0kO;c20Kb$;`b!8#w_!TOl#Wn@SIyf^2pc5o>6pp zJA<`cB5n8~G6q3NZ{Gk=wv@Ff^LuQ{VEt>q4iVFHvmeJUnUa92DQ=c!JoF$n)Ofp4 z4km+frNaiXjxpD+fVn;fchhEqZ9?h0NN%SlQ2nAn;-{zap<$Ay`Aye7L59Tqwa&<7 z9&WC&8D8JB`r$kGvJ*5>I(`?k$02 zsT#m3MwK_5kX}T-bn=*+M$x5`F|{^T-qQ$0lF2h?Mx9c^RA$Twk`P{9Mw*???P6^| z{!1%55t)PTG7?iYw-q&7?KQSlS@*~y3%%K-E{^eB5tLhc65F30XBVg=740{Wb5m*G zJ%Rt!`3S*Tmiq4=OL(lrw$?XOR9@e=VnVy%ei=kNMSIJG%?Y>4Jr18T2uE$UP z9?PLdLR|y5Iz@?~=1U8@24w_jN1-3kwGspgEc;qcZMl)jeUdO6KR5NR3KvC1*4Ghe zMZFOeT_pCRBUc^aUIi8w%w5(QL+U6cSG#0=k;F<3Eq|06VH%1mf*heZyW1%DZ|XuB zajK0*Q-6zq*Tm{`b^zxzkY!W-F0pA(yDoue9!krV1Zu=O;dI%A3=I>iyb}~&iKR;n znbD+L{1zGOEL1bQgS~4%j5JCuthwE042zyzCpA&=k$x?HJ~1J^1i5i~Rep^V&;ob7 zS0PRkGq-O8&ESG2ZXr$Mmh7p7F~cuvwT$8jbU? zlfcZ-E#Ng2vRl#9)mIa(BAe+gD1w-<=1dSL43bF__8^h^-UrZCQO5ORPz#{Zu47q3 z)oy$0oGQsFt+_FVwiY7GvRZCly_BB!4C9-beFV8ZN$Ony99`WNh15j4{Gik!=!w{U zQ}m%|y*ul?MLPOj+$JfVq|(Ef(8MxArmcB~^ai*HP`+jo)S*zmVY8txpW5oCZ-8Vu*q|I4U4o@(Z(ooEmcFZ_@ z?X<|6vqs2|4@En8;whIvz28_Or8PGv)37O1L5_HQ(eR=7n%{Vy?JkTGbVs1Nj_ygr zeEv0IV{V;e3eN_?8$?Aa&T=HRm9+-BH5~!yBSvuIBAkj5iw>^?G%1_XWXEuj>tsiA z6O}-k#rCwu;~u_~WDmx(pHJ$?d>o&a&mS-8Xys;WlSn@NWiZBB!8g~1ZXx@<5eI~1 zge389$%@%tI|6nVRVwoBe%ShlZHcaxsh3;Zw2MNnBzp|G3WK58LqbkJbd*86i^S>= zxP}{#QlAxU0XejU)cwBNpm9WER7yCP(3w`02#!thFRb#a3k*=XYK3?gug`1?9 z=8h#`^&J${N5XBwPpQaK^v*+B;}7SdHcFYb+$IEYXHw8$wvz0dl#8jd&D&d3gZcej zDsb3G47{l98J|lHpVKRA3hl)lDC70;{LqCzlSxzj`-sZgX-fJ&?vQpzx+bnX8!O!M zFd22?Jk6u=K1r{>k1`7wNP;>%$2!+INk1hNKU5F^xawXZY!j|0KRsfCQk!@Eco0R3 zkc)fB1X`@dDsvMrC7l!5xh9KaU@adB{DMnO?YzRoYFzrmx06Z@&npQ5hYP=FoprCc zPQUL|pWWd2i7%&Izu$lZrUYq`l|kdqZn!db* z2!j<&9obPmb>;OX(w{Hj+fvxl^B{Q%pIq3bty{YT*2db?v%2_yNwtU6fnM0R2t-X; z`MGJcKj5Uug7xJ^=F%j^go`wbaHtU>iGuwi#6AkC0`m5?lo($P7ws{SWoXYH7Zv_C zj-%kk8T;&ZE(6q_NG|o{qOwmLPWLm02r=-MtvaWc#9U@s*IjI-)q|?AxJ9J4PhIMN zn)tkltR}lW+$}S-)Ax6Mt0pc1MN3kJ<$?O24qoQ zX#VF+mH7E+1+s2i4tWHUkC)lZ1R3%-mV%9RTT-l(+H~bCk&g9MfBl0ma1GCxpk!53 zx*M81w&BDrdH9nI^qC^+IKQLz7i=A~V$qhUny! zYMB1$tI8qYn01u*na)%Q)20*`l*Yv8_qG)!^G;>FHbrHsn5}|h=yU-P%~T0sGgk<* zvuX(YF#gc~)8m>#v&*58EwJ2)eC;%$=bF&|V)1v8w#8sr&cnTBMkDLR_(;w%$viQ= zp~#JhK>Z!vv(%%e_q~mUBWOTNC`(xK&4M26Fv=wbr=+HE@!cS_!g+Kf)TWV4#~I=N z*buU41(cv@18ErF8jE4UXMv^!Xv8 zUVD>F*{5-668XSl@$ThgV^Rn~DEAcJu*=;o(udL@x3tKHtWM*O6W@F0q6e$KN{2{R zf=BW`(_gonreH&)BK+(A&A}tFW{>Rw_>;qF#u$Hzc-4LD51U>=zb_ESm{I3W&FhP( z!_ZB!>c0_!SE;!Z`_T>f_qhtp-~&!i%GI7wznokB@^o^PMe_PLWT~iNjEtE}B$JL2 zD2p?Ym^hHw2A+Huu7C$Oz#}K%5$(~H)1@V@mCoETjgJR>c<)Uo!LJW}M*YC_3-#1@ zsHSR$Qx`6%F7|@&#dM;5TjSVPMBBm~@w@xXZoF0(c3rzMuwON7gyWVvGPthL$c^GP zCZ0FTb+p5@ErPoWqv09A*Q3i6aUj9hb2C!-B)VXxk=k!_5ks_uo;`)LoIM=y@wTG9 z56%P;4{uH&jv7bv3Pw;X@m&3QPF;H&diy4o?+yeNslm~mS?qL>j&f zG;wxf!iE5YJ4&sv2SqyV0>B7K6!9~p3;EhwskGFI)OG80(BFq{vh))RWuq8futLIL z?EgSsKVU;NQ`HGR)UUe|_`zCFs{SJT4XKOYY}i&tIM@Xu7k(4{L$EWU!*!!-09%7R zXpdpx&N;Iku~&L#2!t^a0jKZK2#N4ysH;^a95`iHj_d@u@|U|YnXolnu=P*Zt3t5z(OVp_60x##n8C@$dC=DI>}%5L zcZ+iUz4KOlPM&~Ij|3HbqLOgWd&FFilpeeyoOtDR@)rm%B>#~b%3bBgWqXV8((-d= zBQ|`?`x~4luiU`9pom?`Iz0L)*br@cJ%Fknq9b2Em<2hxg(A#bzVMMy~0$E zJ3_+|YXq@V5NN&}Sx3eIgySJb(_T8YxThUO%17u_laOl`wHfDXc*Cku+;1!AA)Q$g z+y^Zb zM>D7F^FN;MP1=3JY~O+>H1 zuF{Q-TvM`!l0`;ZL&ws4YwQ&$)pX0s2?g-~5vjQC`?diwZDo))MV1>0Nrb&~K4&wt zzwaNnT>sGPGs5ur+nZ$G?EpT9{iWz0py%?Xt#I@S?9ag;^#<5{m0W`k0vXxh^d{F|1^#(-^lcu4Z zZN|yQ-9WcUp$p9pR4VYyvC2nBx?qr@COo9JpHrLU9v^mI1f|v7qq;YP#7AP>!b^9Z z@Edc-@gafB(kOX`8yALqB~O%*=9l7IkZm*I>Pf+!PLYJg==B#wgRjOdh>sTW&iPkS zgODDy;@i)*@ip@U>f!!3bQ-?}Q)?Hr0g|g7x_nw!$a%DKS=Dos>C@lrjaK%Q?{Rn1 z6f$7h$|{TYYJ9tfew1F3MixWWl`n%@z3Rq89!5M}BAVvSDo5*3SW-Wf$4z6h^B9p{aJ%Q;#X)v$~Kt%vGU6OD@1}A55I0FIL*YkFj@!zd< zb^BD8&d!qI|CUu>IU}t>6qi`vCNP^ntsbwZ+h6l~J|5fm0DFM*GnwGFRC=o}H~z_0 zc81nz!6_PzZdW{No-xlZ)cn1@M>>Cm={?89Lr*=uNjaiwzhBKDEhgv@{YV8L$e8^| zqZ`Ea>Z*s3#Z!Z=C#pU!4KRlqf$fvG%7KyRY9@!#_8GXUp(T*wS%4dGkZng$!?c0$DqF-J%*=oY<$E$0~+%2YNfQ`$*V-(YComFRK zBqdfZWfW!lzWx-l1rI1A7SXN4LCWoAQf{l1%V{%CuzI7P9E*%`$f2{4;ui~zb*}xm zrhui??|kCc*cg@flwBqA9m_vs*l4mdNt)GdVKV*@nyc~~liYZvcSIs$i=5GI3}y-5 zU7hE-JE;gqmO9^VMgxClmibv{6Bz`^jk1K1=vM4upfn7*D}Y6znO0Qvd;J9wR$849 z$}|_Gpd$H(+Dc@Sazk`ud*p8;YQ=%^V_0cRZRJ)b+E$sNW^x4y-DIU6_cr$1vz{VZx+~ z!|17k;dllRM_GB0c^B)|Ru#;^$-j||HA@XNq{FPSJfrEyLkTlWcG7wntm`d_w8!9p*QbnXqij z#Mov>YatB4F_q`BeDl5WzG4%+5xQ(M{3Sw(2segujKLR?WD26qGvlcU!MRe+ zNf;kHcaViVm%qRJ{6$C#;*eSH2J=P8S|2;ycv^}!2{cZ!| zzBB26SA@yg+lg7)8QNHS{l6;BgjYLs2C$0^?8@$1n={|A7f`c&x9$$FvQ_4RR!ko?6pG*^pQ1GZ+%t>lXnQ+8iuiDfWa4zkd4e?$mfGf zxCajA&=BJe7kin}PAb!+mW#||z$LY>^i7WClAkx8h?jb3{!tX4Yi5MOBRgeSwq5uZ zFv;tB0SDhZZF|6Iyo(0KW@oVW&?X|e;Tl>dR)1WSmffvOgI@%Df{l^c)$3}S2w z-x52OME2=l|8X{stUKT{bC*UIeyENvaLr-Yzp9B zNGY02lh|iUb;+wwC-VExm{bO;k%NpIs(M5Gmr0_(HDZ+F-m{xzuFueU<3(1ek0Dsp>n$p^L_)p{&q6DEagr9{w7EOqJ?_37shjM#5U z8ZUz}!&DMsP-IURN4$sWSgxoC@#TMF{mF$$sbs7!el}!5BK)Vlm!YB;K8&k7CZ zK~%0MgZe~bpY5KDW0s{(NR8bCf#!CGn!#Sns;#vM4!$x-2M34Fco}4Hbu2}^v z!$j(!ZiQ|Pka}|%;kxs1Cx0KN1S_mD{FNa3Pl3WH5M9oDlHLhelJ$Ikx!go~+Z^KO zMLYXsTA83x<1n9OwKcKv(b=sk%RBQznM8kwz&%356g}O1pA`z)Tw_oFjtrgwse72k z(y99U!=$${643KTgC0DiUjO)?@+s(huS5kULifg_zgYw@(oKkl&|j4|U| zAbWM`+4a0}KV|Lz`S%G~09GEuE!e?8Bu{7=U!;$s5qAK(vU{GrGH`!n7(09bJ?>J> zZim_cW^yUg)e1BB5I%<3pT(vTt)T3B88ht&6NLmr?fCq6XNcexUIxtKkQjr+h;7*5 zIdF1j>gAN+Ic_QA7X5fKS5s#qGULMdThJs{wcsCt{(7KTLQC(!Ylh0yN6fFaF65E8 za<*_)RB8?4HY1aF;DP%)nG($VHdo(ST%Iga&WB2h-}*yb{sbfx@!C{L8syl%))M{B zUoDCJu*>e>=By7?E&Wqm*cQj|dz47>zb8q_r(u_}SqJr7lER8(#f4y?mUhbnEKFET z$oZuORtn?>=^Svue3qJaZQag1SWnqERg3o_?Y+&Naj5M$^61O}?wcwPl(_~gs208U z-1$mG%_P475$7CvPzrN^<{_u{PWTA5#V1#qKpsH>?f8e%$f#dmtaPOhnaDQkP>P3p z^4UEK`J=ogoW82F(jhfedV)t+h&W2q7`BZ;@*Pd^Aa9WdYEPLAd%lVr8@ZGu-Qiur=11wKqV!^Vlq|EbsRx38|*{Z4P`-8Vk|D9PR>o@PnzPW$O2zLV_ge-}^nVI>OZ?5^(hWGQe|KAtn zUeycc4L4ru>lWT!jqdeZEFSv~vt;&rz)%i>{^8wx<+_jXN@t@r7aBb@{|?+U3qzQ* z_YpF){k)%FNB0PJU>Jq48^#$yiep&x*GK~qB}QShHRD7&sv$W7o1qpOWt2FGB@Cw1*#$EzlqeT~89^W=uCWA@3~qUw^;<`=#6V*lCJ8J?#0WxP z41u`DC442*8<2^X(hwD?UjNG{WC;7Au3ai&13JWT1zd}t$p4NjPyOq zbm7BCfFY5?fN*-e|2! zR(H*=H&|?LxzUv~Fu>;tU%@rnZlTcl6!;#c5$I#iWiP6#9ND~NsBV`BR|)= z>UqOBU7#}y)Y@wj4-w0>iT+O0h4ciEPvHGDWBMfT$j9`!Y5eeg0ixarP`(;c_AX;p zG6nHRaCt}z z{an|^#D7TV$~}en1v-`XEmI#b@Gc&tM0ik;kF;4V7E(cS@w1z#VnphRBi1v?BQ!*} zX#QNIwBFPs!b*P2O@Jq0S2(NYv)1!}H}^+IA)CJ6)l2ky#`oWSSjztZYX2GQnfybg z`F8x%bbo4kZ-BgTT_v>^j@~D#O|SyN12N3ZSZjktfKKLzNt}7v&RU_gjK)pjHoL z^{Y>{x0PqjB*hi?VuZQ9ieELhZo8tR7pm(?+qm?xhV{{fP}ARF0_dmoU$Mo@eWP=)%a37r-8`AYVd^nS5{)H( z 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 GYySag7-;JN From 6181223be1fb58db65b30a114ac845445345a0f3 Mon Sep 17 00:00:00 2001 From: Dhiraj Mahapatro Date: Mon, 27 Jul 2015 13:54:54 -0400 Subject: [PATCH 2/4] Package reverted & docs updated. --- build.gradle | 4 +- grails-app/conf/application.yml | 4 + .../oauth/scribe/OauthController.groovy | 6 +- .../oauth/scribe/OauthResourceService.groovy | 4 +- .../oauth/scribe/OauthService.groovy | 13 +- .../InvalidOauthProviderException.groovy | 2 +- .../exception/UnknownProviderException.groovy | 2 +- .../oauth/scribe/OauthTagLib.groovy | 2 +- src/docs/guide/furtherConfiguration.gdoc | 139 +++++++++--------- src/docs/guide/quickStart.gdoc | 85 +++++++---- src/docs/guide/upgradingFromGrails-oauth.gdoc | 3 +- src/docs/guide/usingThePlugin.gdoc | 14 +- .../oauth/scribe/OauthGrailsPlugin.groovy | 2 +- .../oauth/scribe/OauthProvider.groovy | 2 +- .../oauth/scribe/SupportedOauthVersion.groovy | 2 +- .../InvalidProviderClassException.groovy | 2 +- .../MissingRequestTokenException.groovy | 2 +- .../oauth/scribe/holder/RedirectHolder.groovy | 2 +- .../scribe/resource/ResourceAccessor.groovy | 2 +- .../test/Test10aApiImplementation.groovy | 2 +- .../oauth/scribe/util/DynamicMethods.groovy | 2 +- .../scribe/AuthorisationProcessSpec.groovy | 6 +- .../oauth/scribe/GMockAddon.groovy | 2 +- .../oauth/scribe/OauthControllerSpec.groovy | 8 +- .../scribe/OauthResourceServiceSpec.groovy | 4 +- .../oauth/scribe/OauthServiceSpec.groovy | 6 +- .../oauth/scribe/OauthTagLibSpec.groovy | 2 +- .../resource/ResourceAccessorSpec.groovy | 2 +- 28 files changed, 174 insertions(+), 152 deletions(-) rename grails-app/controllers/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthController.groovy (91%) rename grails-app/services/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy (90%) rename grails-app/services/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthService.groovy (94%) rename grails-app/services/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy (77%) rename grails-app/services/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy (75%) rename grails-app/taglib/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy (96%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy (92%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy (80%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy (87%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy (83%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy (87%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy (94%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy (91%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy (85%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy (74%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy (96%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy (85%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy (97%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy (96%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy (98%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy (98%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy (94%) diff --git a/build.gradle b/build.gradle index 7b7e492..2bc95e5 100644 --- a/build.gradle +++ b/build.gradle @@ -27,8 +27,8 @@ apply plugin: "org.grails.grails-plugin" apply plugin: "org.grails.grails-gsp" apply plugin: "org.grails.grails-doc" // Used for publishing to central repository, remove if not needed -apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/grailsCentralPublishing.gradle' -apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/bintrayPublishing.gradle' +//apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/grailsCentralPublishing.gradle' +//apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/bintrayPublishing.gradle' ext { grailsVersion = project.grailsVersion diff --git a/grails-app/conf/application.yml b/grails-app/conf/application.yml index ea8473a..e9e8d02 100644 --- a/grails-app/conf/application.yml +++ b/grails-app/conf/application.yml @@ -18,6 +18,10 @@ oauth: --- grails: + doc: + title: "Oauth Plugin" + subtitle: "Provides OAuth integration for Grails, using the Scribe framework" + authors: "Antony Jones, Peter Ledbrook" mime: disable: accept: diff --git a/grails-app/controllers/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthController.groovy b/grails-app/controllers/uk/co/desirableobjects/oauth/scribe/OauthController.groovy similarity index 91% rename from grails-app/controllers/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthController.groovy rename to grails-app/controllers/uk/co/desirableobjects/oauth/scribe/OauthController.groovy index 45910a1..97e4010 100644 --- a/grails-app/controllers/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthController.groovy +++ b/grails-app/controllers/uk/co/desirableobjects/oauth/scribe/OauthController.groovy @@ -1,10 +1,10 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.scribe.model.Token import org.scribe.model.Verifier -import grails.plugins.uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder import grails.web.servlet.mvc.GrailsParameterMap -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException +import uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException +import uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder class OauthController { private static final Token EMPTY_TOKEN = new Token('', '') diff --git a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy b/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy similarity index 90% rename from grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy rename to grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy index 835a7d1..171321f 100644 --- a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy +++ b/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import java.util.concurrent.TimeUnit @@ -8,7 +8,7 @@ import org.scribe.model.Token import org.scribe.model.Verb import org.scribe.oauth.OAuthService -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor class OauthResourceService { diff --git a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthService.groovy b/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthService.groovy similarity index 94% rename from grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthService.groovy rename to grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthService.groovy index 13192be..595f64d 100644 --- a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthService.groovy +++ b/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthService.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.codehaus.groovy.runtime.typehandling.GroovyCastException import org.scribe.builder.ServiceBuilder @@ -9,12 +9,11 @@ import org.scribe.model.Verb import org.scribe.model.Verifier import org.scribe.oauth.OAuthService import org.springframework.beans.factory.InitializingBean - -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.InvalidProviderClassException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor -import grails.plugins.uk.co.desirableobjects.oauth.scribe.util.DynamicMethods +import uk.co.desirableobjects.oauth.scribe.exception.InvalidProviderClassException +import uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException +import uk.co.desirableobjects.oauth.scribe.util.DynamicMethods +import uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor class OauthService implements InitializingBean { diff --git a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy b/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy similarity index 77% rename from grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy rename to grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy index 524ea49..79b40bf 100644 --- a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy +++ b/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception +package uk.co.desirableobjects.oauth.scribe.exception class InvalidOauthProviderException extends RuntimeException { diff --git a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy b/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy similarity index 75% rename from grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy rename to grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy index 735cc8f..53a2eef 100644 --- a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy +++ b/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception +package uk.co.desirableobjects.oauth.scribe.exception class UnknownProviderException extends RuntimeException { diff --git a/grails-app/taglib/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy b/grails-app/taglib/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy similarity index 96% rename from grails-app/taglib/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy rename to grails-app/taglib/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy index f83fd6a..9f9cd31 100644 --- a/grails-app/taglib/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy +++ b/grails-app/taglib/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.grails.taglib.GrailsTagException import org.scribe.model.Token diff --git a/src/docs/guide/furtherConfiguration.gdoc b/src/docs/guide/furtherConfiguration.gdoc index 6b313eb..72bc04b 100644 --- a/src/docs/guide/furtherConfiguration.gdoc +++ b/src/docs/guide/furtherConfiguration.gdoc @@ -1,17 +1,18 @@ -Provided that you have read the Quick Start guide, you should have some configuration which looks a little like this: +Provided that you have read the Quick Start guide, you should have some configuration which looks a little like this or the corresponding YAML format in @application.yml@: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' } } +} {code} + You're now in a good position to configure some further elements of the plugin if you need to. h1. Provider specific configuration @@ -21,20 +22,20 @@ h2. Adding a second provider Adding a second provider is as easy as adding your provider-specific configuration to the providers block: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - } - facebook { - api = FacebookApi - key = 'other-key' - secret = 'other-secret' - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + } + facebook { + api = FacebookApi + key = 'other-key' + secret = 'other-secret' } } +} {code} h2. Adding a callback URI @@ -44,16 +45,16 @@ Some providers allow for a callback URI to be specified on the providers side. I A callback uri can be specified at the provider level: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - callback = "${application.baseUrl}/oauth/twitter/callback" - } - } - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + callback = "${application.baseUrl}/oauth/twitter/callback" + } + } +} {code} {note} @@ -67,16 +68,16 @@ An Oauth2 SignatureType can be specified at the provider level, if your provider Valid @SignatureType@s are @SignatureType.QueryString@ or @SignatureType.Header@: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - signatureType = SignatureType.QueryString - } - } - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + signatureType = SignatureType.QueryString + } + } +} {code} h2. Oauth provider scope @@ -84,16 +85,16 @@ h2. Oauth provider scope Some providers (such as google) require a scope to be set for an oauth connection. The scope directive shown below will enable you to set this as necessary. {code} - oauth { - providers { - twitter { - api = GoogleApi - key = 'my-key' - secret = 'my-secret' - scope = 'my-scope' - } - } - } +oauth { + providers { + twitter { + api = GoogleApi + key = 'my-key' + secret = 'my-secret' + scope = 'my-scope' + } + } +} {code} h1. Global configuration @@ -103,16 +104,16 @@ h2. Turning request debugging on As of Scribe 1.2.3, debugging of HTTP traffic can be enabled to make troubleshooting issues easier. To enable this feature, add 'debug = true' in your global configuration: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - } - } - debug = true - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + } + } + debug = true +} {code} h2. Adding connect and receive timeouts @@ -122,17 +123,17 @@ Sometimes you want to account for slower providers, or just fail more quickly if The default value for both of these parameters is 30000ms (30 seconds) {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'myKey' - secret = 'mySecret' - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'myKey' + secret = 'mySecret' } - connectTimeout = 5000 - receiveTimeout = 5000 } + connectTimeout = 5000 + receiveTimeout = 5000 +} {code} In the example above, we set both connect and receive timeouts to be 5000ms (5 seconds). This is also useful if you want to test your resilience to failure as part of a test suite. \ No newline at end of file diff --git a/src/docs/guide/quickStart.gdoc b/src/docs/guide/quickStart.gdoc index 9a3ee3f..8f267b3 100644 --- a/src/docs/guide/quickStart.gdoc +++ b/src/docs/guide/quickStart.gdoc @@ -1,65 +1,86 @@ h1. Install the plugin -Installing the plugin can be done in one of two ways: +{note} +This version of the plugin is compatible with apps built with Grails 3 and above. This plugin uses OAuth scribe v1.3.7. +{note} -h2. Installing the plugin using the Grails dependency DSL (Recommended) +This plugin can be installed by specifying the dependency in app's @build.gradle@. -In @BuildConfig.groovy@, add the dependency to your 'plugins' section: +h2. Adding as Gradle build dependency + +In @build.gradle@, add the dependency to your 'plugins' section: {code} - plugins { - ... - compile ':oauth:1.0' - ... - } +dependencies { + .... + compile 'org.grails.plugins:oauth:3.0.0' + ... +} {code} {note} -Note that the version (1.0 in the example above) should be change to refelect the version you would like to use. +Note that the version (3.0.0 in the example above) should be changed to reflect the version you would like to use. {note} -h2. Installing the plugin 'on-the-fly': - -Simply run the command @grails install-plugin oauth@. Note that this will install the latest version into the global scope, rather than the compile scope which is slightly cleaner, above. - h1. Configure the plugin Before the plugin can work, it requires at least one provider to be configured. The following is the minimal configuration you can get away with: -In @Config.groovy@ +In @application.yml@ {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - } +oauth: + providers: + twitter: + api: org.scribe.builder.api.TwitterApi + key: my-key + secret: my-secret +{code} + +{note} +You have to specify the fully qualified class name of the api when using @application.yml@. +@org.scribe.builder.api.TwitterApi@ instead of @TwitterApi@. Same is applicable for other providers (Facebook, Google, DropBox, etc) +{note} + +In @application.groovy@ +{code} +import org.scribe.builder.api.TwitterApi + +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' } } +} {code} -In this example, @twitter@ is the provider name you will use within your application. @api@ is the scribe provider class which relates to the oauth service you are trying to connect to, and is a subclass of @OauthService@. It can be anything you want. @key@ is the oauth-key you have been given by your provider and @secret@ is the oauth-secret you have been given by your provider. You will need to import this into your @Config.groovy@ file using the standard java @import@ keyword. +In this example, @twitter@ is the provider name you will use within your application. @api@ is the scribe provider class which relates to the oauth service you are trying to connect to, and is a subclass of @OauthService@. It can be anything you want. @key@ is the oauth-key you have been given by your provider and @secret@ is the oauth-secret you have been given by your provider. You will need to import this into your @application.groovy@ file using the standard java @import@ keyword. {note} -Note that provider names are all lowercase - you don't necessarily need to lowercase them in your configuration, but when referencing them within the application, they have been lowercased for you. This means that 'MyProvider' becomes 'myprovider'. +Note that provider names are all lowercase - you don't necessarily need to lowercase them in your configuration, but when referencing them within the application, they have been lower cased for you. This means that 'MyProvider' becomes 'myprovider'. {note} h2. Adding success and failure URIs When connecting to providers, the @successUri@ and @failureUri@ are the endpoints which the user will get redirected back to if connection to the provider succeeds, or fails, respectively. +{note} +For brevity, the Groovy DSL for the configuration in @application.groovy@ is being used henceforth, but there is no stopping if the same configuration is desired to be used in @application.yml@. +{note} + {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - successUri = '/your/success/page' - failureUri = '/your/failure/page' - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + successUri = '/your/success/page' + failureUri = '/your/failure/page' } } +} {code} At this stage, you can safely use the plugin with no further work! diff --git a/src/docs/guide/upgradingFromGrails-oauth.gdoc b/src/docs/guide/upgradingFromGrails-oauth.gdoc index 004ccd2..bb0346c 100644 --- a/src/docs/guide/upgradingFromGrails-oauth.gdoc +++ b/src/docs/guide/upgradingFromGrails-oauth.gdoc @@ -1,4 +1,5 @@ -grails-oauth vesion 2.x is a ground-up rewrite of the previous plugin (< 1.x), with a number of small differences in its set-up. +grails-oauth version 2.x is a an upgrade to Grails 3. +grails-oauth version 2.x is a ground-up rewrite of the previous plugin (< 1.x), with a number of small differences in its set-up. This quick guide will attempt to make the transition as seamless as possible. diff --git a/src/docs/guide/usingThePlugin.gdoc b/src/docs/guide/usingThePlugin.gdoc index 25b1e5a..a310453 100644 --- a/src/docs/guide/usingThePlugin.gdoc +++ b/src/docs/guide/usingThePlugin.gdoc @@ -27,10 +27,8 @@ class MyClass { OauthService oauthService // or new OauthService() would work if you're not in a spring-managed class. Token getToken() { - String sessionKey = oauthService.findSessionKeyForAccessToken('twitter') return session[sessionKey] - } } {code} @@ -62,11 +60,9 @@ The convention used for accessing resources is @OauthService.R In the above example: {table} -*component* | *description* -*method* | is the HTTP method used, one of put, post, get, delete, head, or options. -*url* | is the url of the oauth-protected resource you are trying to access. -*provider* | is the provider name configured in your oauth configuration. -*accessToken* | is the access token you were given (via the session) when the user authenticated themselves with the provider. +*component* | *description* +*method* | is the HTTP method used, one of put, post, get, delete, head, or options. +*url* | is the url of the oauth-protected resource you are trying to access. +*provider* | is the provider name configured in your oauth configuration. +*accessToken* | is the access token you were given (via the session) when the user authenticated themselves with the provider. {table} - - diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy similarity index 92% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy index 2734d5e..a9d362a 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.plugins.* diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy similarity index 80% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy index 84f81d2..faf3b98 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.scribe.oauth.OAuthService diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy similarity index 87% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy index 49a0cec..eb10ef7 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe enum SupportedOauthVersion { diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy similarity index 83% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy index 240b2c2..33e5b19 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception +package uk.co.desirableobjects.oauth.scribe.exception import groovy.transform.InheritConstructors diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy similarity index 87% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy index cada46f..8bfa770 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception +package uk.co.desirableobjects.oauth.scribe.exception class MissingRequestTokenException extends RuntimeException { diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy similarity index 94% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy index eb4eb72..6b92757 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.holder +package uk.co.desirableobjects.oauth.scribe.holder import org.springframework.web.context.request.RequestContextHolder diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy similarity index 91% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy index d2b0ff2..eb63a31 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.resource +package uk.co.desirableobjects.oauth.scribe.resource import groovy.transform.EqualsAndHashCode import org.scribe.model.Verb diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy similarity index 85% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy index 55f61c2..1d28457 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.test +package uk.co.desirableobjects.oauth.scribe.test import org.scribe.builder.api.DefaultApi10a diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy similarity index 74% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy index a14b447..06d93a4 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.util +package uk.co.desirableobjects.oauth.scribe.util class DynamicMethods { diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy similarity index 96% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy index 97614aa..61c8dd0 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestMixin import grails.test.mixin.support.GrailsUnitTestMixin @@ -11,8 +11,8 @@ import spock.lang.Shared import spock.lang.Specification import spock.lang.Stepwise import spock.lang.Unroll -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor @Stepwise @TestMixin(GrailsUnitTestMixin) diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy similarity index 85% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy index 635eca3..2d374f5 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy @@ -1,5 +1,5 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.gmock.WithGMock diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy similarity index 97% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy index e3f1ff7..ec1121a 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor import org.scribe.exceptions.OAuthException @@ -9,9 +9,9 @@ import org.springframework.web.context.request.RequestContextHolder import spock.lang.Shared import spock.lang.Specification import spock.lang.Unroll -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder +import uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException +import uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException +import uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder @TestFor(OauthController) class OauthControllerSpec extends Specification { diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy similarity index 96% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy index 8098148..38f3428 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor import org.scribe.model.OAuthRequest @@ -7,7 +7,7 @@ import org.scribe.model.Token import org.scribe.model.Verb import org.scribe.oauth.OAuthService import spock.lang.Specification -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor @TestFor(OauthResourceService) class OauthResourceServiceSpec extends Specification { diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy similarity index 98% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy index d3f9e05..4039596 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor import org.scribe.builder.ServiceBuilder @@ -10,8 +10,8 @@ import org.scribe.model.Verb import org.scribe.oauth.OAuthService import spock.lang.Specification import spock.lang.Unroll -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor // This is a horrible hack. To disable automatic mocking and wiring of the // OauthService bean (because we can't test the configuration handling otherwise) diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy similarity index 98% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy index 367d2cb..ada9482 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor import org.grails.taglib.GrailsTagException diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy similarity index 94% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy index 4a6c3d1..6f56bf0 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.resource +package uk.co.desirableobjects.oauth.scribe.resource import grails.test.mixin.TestMixin import grails.test.mixin.support.GrailsUnitTestMixin From 8e8b3ee876d94253c89debef86d25b17c887a94d Mon Sep 17 00:00:00 2001 From: Dhiraj Mahapatro Date: Mon, 27 Jul 2015 13:54:54 -0400 Subject: [PATCH 3/4] Package reverted & docs updated. --- grails-app/conf/application.yml | 4 + .../oauth/scribe/OauthController.groovy | 6 +- .../oauth/scribe/OauthResourceService.groovy | 4 +- .../oauth/scribe/OauthService.groovy | 13 +- .../InvalidOauthProviderException.groovy | 2 +- .../exception/UnknownProviderException.groovy | 2 +- .../oauth/scribe/OauthTagLib.groovy | 2 +- src/docs/guide/furtherConfiguration.gdoc | 139 +++++++++--------- src/docs/guide/quickStart.gdoc | 85 +++++++---- src/docs/guide/upgradingFromGrails-oauth.gdoc | 3 +- src/docs/guide/usingThePlugin.gdoc | 14 +- .../oauth/scribe/OauthGrailsPlugin.groovy | 2 +- .../oauth/scribe/OauthProvider.groovy | 2 +- .../oauth/scribe/SupportedOauthVersion.groovy | 2 +- .../InvalidProviderClassException.groovy | 2 +- .../MissingRequestTokenException.groovy | 2 +- .../oauth/scribe/holder/RedirectHolder.groovy | 2 +- .../scribe/resource/ResourceAccessor.groovy | 2 +- .../test/Test10aApiImplementation.groovy | 2 +- .../oauth/scribe/util/DynamicMethods.groovy | 2 +- .../scribe/AuthorisationProcessSpec.groovy | 6 +- .../oauth/scribe/GMockAddon.groovy | 2 +- .../oauth/scribe/OauthControllerSpec.groovy | 8 +- .../scribe/OauthResourceServiceSpec.groovy | 4 +- .../oauth/scribe/OauthServiceSpec.groovy | 6 +- .../oauth/scribe/OauthTagLibSpec.groovy | 2 +- .../resource/ResourceAccessorSpec.groovy | 2 +- 27 files changed, 172 insertions(+), 150 deletions(-) rename grails-app/controllers/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthController.groovy (91%) rename grails-app/services/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy (90%) rename grails-app/services/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthService.groovy (94%) rename grails-app/services/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy (77%) rename grails-app/services/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy (75%) rename grails-app/taglib/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy (96%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy (92%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy (80%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy (87%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy (83%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy (87%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy (94%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy (91%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy (85%) rename src/main/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy (74%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy (96%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy (85%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy (97%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy (96%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy (98%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy (98%) rename src/test/groovy/{grails/plugins => }/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy (94%) diff --git a/grails-app/conf/application.yml b/grails-app/conf/application.yml index ea8473a..e9e8d02 100644 --- a/grails-app/conf/application.yml +++ b/grails-app/conf/application.yml @@ -18,6 +18,10 @@ oauth: --- grails: + doc: + title: "Oauth Plugin" + subtitle: "Provides OAuth integration for Grails, using the Scribe framework" + authors: "Antony Jones, Peter Ledbrook" mime: disable: accept: diff --git a/grails-app/controllers/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthController.groovy b/grails-app/controllers/uk/co/desirableobjects/oauth/scribe/OauthController.groovy similarity index 91% rename from grails-app/controllers/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthController.groovy rename to grails-app/controllers/uk/co/desirableobjects/oauth/scribe/OauthController.groovy index 45910a1..97e4010 100644 --- a/grails-app/controllers/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthController.groovy +++ b/grails-app/controllers/uk/co/desirableobjects/oauth/scribe/OauthController.groovy @@ -1,10 +1,10 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.scribe.model.Token import org.scribe.model.Verifier -import grails.plugins.uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder import grails.web.servlet.mvc.GrailsParameterMap -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException +import uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException +import uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder class OauthController { private static final Token EMPTY_TOKEN = new Token('', '') diff --git a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy b/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy similarity index 90% rename from grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy rename to grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy index 835a7d1..171321f 100644 --- a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy +++ b/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthResourceService.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import java.util.concurrent.TimeUnit @@ -8,7 +8,7 @@ import org.scribe.model.Token import org.scribe.model.Verb import org.scribe.oauth.OAuthService -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor class OauthResourceService { diff --git a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthService.groovy b/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthService.groovy similarity index 94% rename from grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthService.groovy rename to grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthService.groovy index 13192be..595f64d 100644 --- a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthService.groovy +++ b/grails-app/services/uk/co/desirableobjects/oauth/scribe/OauthService.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.codehaus.groovy.runtime.typehandling.GroovyCastException import org.scribe.builder.ServiceBuilder @@ -9,12 +9,11 @@ import org.scribe.model.Verb import org.scribe.model.Verifier import org.scribe.oauth.OAuthService import org.springframework.beans.factory.InitializingBean - -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.InvalidProviderClassException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor -import grails.plugins.uk.co.desirableobjects.oauth.scribe.util.DynamicMethods +import uk.co.desirableobjects.oauth.scribe.exception.InvalidProviderClassException +import uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException +import uk.co.desirableobjects.oauth.scribe.util.DynamicMethods +import uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor class OauthService implements InitializingBean { diff --git a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy b/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy similarity index 77% rename from grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy rename to grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy index 524ea49..79b40bf 100644 --- a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy +++ b/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/InvalidOauthProviderException.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception +package uk.co.desirableobjects.oauth.scribe.exception class InvalidOauthProviderException extends RuntimeException { diff --git a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy b/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy similarity index 75% rename from grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy rename to grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy index 735cc8f..53a2eef 100644 --- a/grails-app/services/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy +++ b/grails-app/services/uk/co/desirableobjects/oauth/scribe/exception/UnknownProviderException.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception +package uk.co.desirableobjects.oauth.scribe.exception class UnknownProviderException extends RuntimeException { diff --git a/grails-app/taglib/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy b/grails-app/taglib/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy similarity index 96% rename from grails-app/taglib/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy rename to grails-app/taglib/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy index f83fd6a..9f9cd31 100644 --- a/grails-app/taglib/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy +++ b/grails-app/taglib/uk/co/desirableobjects/oauth/scribe/OauthTagLib.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.grails.taglib.GrailsTagException import org.scribe.model.Token diff --git a/src/docs/guide/furtherConfiguration.gdoc b/src/docs/guide/furtherConfiguration.gdoc index 6b313eb..72bc04b 100644 --- a/src/docs/guide/furtherConfiguration.gdoc +++ b/src/docs/guide/furtherConfiguration.gdoc @@ -1,17 +1,18 @@ -Provided that you have read the Quick Start guide, you should have some configuration which looks a little like this: +Provided that you have read the Quick Start guide, you should have some configuration which looks a little like this or the corresponding YAML format in @application.yml@: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' } } +} {code} + You're now in a good position to configure some further elements of the plugin if you need to. h1. Provider specific configuration @@ -21,20 +22,20 @@ h2. Adding a second provider Adding a second provider is as easy as adding your provider-specific configuration to the providers block: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - } - facebook { - api = FacebookApi - key = 'other-key' - secret = 'other-secret' - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + } + facebook { + api = FacebookApi + key = 'other-key' + secret = 'other-secret' } } +} {code} h2. Adding a callback URI @@ -44,16 +45,16 @@ Some providers allow for a callback URI to be specified on the providers side. I A callback uri can be specified at the provider level: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - callback = "${application.baseUrl}/oauth/twitter/callback" - } - } - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + callback = "${application.baseUrl}/oauth/twitter/callback" + } + } +} {code} {note} @@ -67,16 +68,16 @@ An Oauth2 SignatureType can be specified at the provider level, if your provider Valid @SignatureType@s are @SignatureType.QueryString@ or @SignatureType.Header@: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - signatureType = SignatureType.QueryString - } - } - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + signatureType = SignatureType.QueryString + } + } +} {code} h2. Oauth provider scope @@ -84,16 +85,16 @@ h2. Oauth provider scope Some providers (such as google) require a scope to be set for an oauth connection. The scope directive shown below will enable you to set this as necessary. {code} - oauth { - providers { - twitter { - api = GoogleApi - key = 'my-key' - secret = 'my-secret' - scope = 'my-scope' - } - } - } +oauth { + providers { + twitter { + api = GoogleApi + key = 'my-key' + secret = 'my-secret' + scope = 'my-scope' + } + } +} {code} h1. Global configuration @@ -103,16 +104,16 @@ h2. Turning request debugging on As of Scribe 1.2.3, debugging of HTTP traffic can be enabled to make troubleshooting issues easier. To enable this feature, add 'debug = true' in your global configuration: {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - } - } - debug = true - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + } + } + debug = true +} {code} h2. Adding connect and receive timeouts @@ -122,17 +123,17 @@ Sometimes you want to account for slower providers, or just fail more quickly if The default value for both of these parameters is 30000ms (30 seconds) {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'myKey' - secret = 'mySecret' - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'myKey' + secret = 'mySecret' } - connectTimeout = 5000 - receiveTimeout = 5000 } + connectTimeout = 5000 + receiveTimeout = 5000 +} {code} In the example above, we set both connect and receive timeouts to be 5000ms (5 seconds). This is also useful if you want to test your resilience to failure as part of a test suite. \ No newline at end of file diff --git a/src/docs/guide/quickStart.gdoc b/src/docs/guide/quickStart.gdoc index 9a3ee3f..8f267b3 100644 --- a/src/docs/guide/quickStart.gdoc +++ b/src/docs/guide/quickStart.gdoc @@ -1,65 +1,86 @@ h1. Install the plugin -Installing the plugin can be done in one of two ways: +{note} +This version of the plugin is compatible with apps built with Grails 3 and above. This plugin uses OAuth scribe v1.3.7. +{note} -h2. Installing the plugin using the Grails dependency DSL (Recommended) +This plugin can be installed by specifying the dependency in app's @build.gradle@. -In @BuildConfig.groovy@, add the dependency to your 'plugins' section: +h2. Adding as Gradle build dependency + +In @build.gradle@, add the dependency to your 'plugins' section: {code} - plugins { - ... - compile ':oauth:1.0' - ... - } +dependencies { + .... + compile 'org.grails.plugins:oauth:3.0.0' + ... +} {code} {note} -Note that the version (1.0 in the example above) should be change to refelect the version you would like to use. +Note that the version (3.0.0 in the example above) should be changed to reflect the version you would like to use. {note} -h2. Installing the plugin 'on-the-fly': - -Simply run the command @grails install-plugin oauth@. Note that this will install the latest version into the global scope, rather than the compile scope which is slightly cleaner, above. - h1. Configure the plugin Before the plugin can work, it requires at least one provider to be configured. The following is the minimal configuration you can get away with: -In @Config.groovy@ +In @application.yml@ {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - } +oauth: + providers: + twitter: + api: org.scribe.builder.api.TwitterApi + key: my-key + secret: my-secret +{code} + +{note} +You have to specify the fully qualified class name of the api when using @application.yml@. +@org.scribe.builder.api.TwitterApi@ instead of @TwitterApi@. Same is applicable for other providers (Facebook, Google, DropBox, etc) +{note} + +In @application.groovy@ +{code} +import org.scribe.builder.api.TwitterApi + +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' } } +} {code} -In this example, @twitter@ is the provider name you will use within your application. @api@ is the scribe provider class which relates to the oauth service you are trying to connect to, and is a subclass of @OauthService@. It can be anything you want. @key@ is the oauth-key you have been given by your provider and @secret@ is the oauth-secret you have been given by your provider. You will need to import this into your @Config.groovy@ file using the standard java @import@ keyword. +In this example, @twitter@ is the provider name you will use within your application. @api@ is the scribe provider class which relates to the oauth service you are trying to connect to, and is a subclass of @OauthService@. It can be anything you want. @key@ is the oauth-key you have been given by your provider and @secret@ is the oauth-secret you have been given by your provider. You will need to import this into your @application.groovy@ file using the standard java @import@ keyword. {note} -Note that provider names are all lowercase - you don't necessarily need to lowercase them in your configuration, but when referencing them within the application, they have been lowercased for you. This means that 'MyProvider' becomes 'myprovider'. +Note that provider names are all lowercase - you don't necessarily need to lowercase them in your configuration, but when referencing them within the application, they have been lower cased for you. This means that 'MyProvider' becomes 'myprovider'. {note} h2. Adding success and failure URIs When connecting to providers, the @successUri@ and @failureUri@ are the endpoints which the user will get redirected back to if connection to the provider succeeds, or fails, respectively. +{note} +For brevity, the Groovy DSL for the configuration in @application.groovy@ is being used henceforth, but there is no stopping if the same configuration is desired to be used in @application.yml@. +{note} + {code} - oauth { - providers { - twitter { - api = TwitterApi - key = 'my-key' - secret = 'my-secret' - successUri = '/your/success/page' - failureUri = '/your/failure/page' - } +oauth { + providers { + twitter { + api = TwitterApi + key = 'my-key' + secret = 'my-secret' + successUri = '/your/success/page' + failureUri = '/your/failure/page' } } +} {code} At this stage, you can safely use the plugin with no further work! diff --git a/src/docs/guide/upgradingFromGrails-oauth.gdoc b/src/docs/guide/upgradingFromGrails-oauth.gdoc index 004ccd2..bb0346c 100644 --- a/src/docs/guide/upgradingFromGrails-oauth.gdoc +++ b/src/docs/guide/upgradingFromGrails-oauth.gdoc @@ -1,4 +1,5 @@ -grails-oauth vesion 2.x is a ground-up rewrite of the previous plugin (< 1.x), with a number of small differences in its set-up. +grails-oauth version 2.x is a an upgrade to Grails 3. +grails-oauth version 2.x is a ground-up rewrite of the previous plugin (< 1.x), with a number of small differences in its set-up. This quick guide will attempt to make the transition as seamless as possible. diff --git a/src/docs/guide/usingThePlugin.gdoc b/src/docs/guide/usingThePlugin.gdoc index 25b1e5a..a310453 100644 --- a/src/docs/guide/usingThePlugin.gdoc +++ b/src/docs/guide/usingThePlugin.gdoc @@ -27,10 +27,8 @@ class MyClass { OauthService oauthService // or new OauthService() would work if you're not in a spring-managed class. Token getToken() { - String sessionKey = oauthService.findSessionKeyForAccessToken('twitter') return session[sessionKey] - } } {code} @@ -62,11 +60,9 @@ The convention used for accessing resources is @OauthService.R In the above example: {table} -*component* | *description* -*method* | is the HTTP method used, one of put, post, get, delete, head, or options. -*url* | is the url of the oauth-protected resource you are trying to access. -*provider* | is the provider name configured in your oauth configuration. -*accessToken* | is the access token you were given (via the session) when the user authenticated themselves with the provider. +*component* | *description* +*method* | is the HTTP method used, one of put, post, get, delete, head, or options. +*url* | is the url of the oauth-protected resource you are trying to access. +*provider* | is the provider name configured in your oauth configuration. +*accessToken* | is the access token you were given (via the session) when the user authenticated themselves with the provider. {table} - - diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy similarity index 92% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy index 2734d5e..a9d362a 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthGrailsPlugin.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.plugins.* diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy similarity index 80% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy index 84f81d2..faf3b98 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/OauthProvider.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.scribe.oauth.OAuthService diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy similarity index 87% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy index 49a0cec..eb10ef7 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/SupportedOauthVersion.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe enum SupportedOauthVersion { diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy similarity index 83% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy index 240b2c2..33e5b19 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/InvalidProviderClassException.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception +package uk.co.desirableobjects.oauth.scribe.exception import groovy.transform.InheritConstructors diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy similarity index 87% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy index cada46f..8bfa770 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/exception/MissingRequestTokenException.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.exception +package uk.co.desirableobjects.oauth.scribe.exception class MissingRequestTokenException extends RuntimeException { diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy similarity index 94% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy index eb4eb72..6b92757 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/holder/RedirectHolder.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.holder +package uk.co.desirableobjects.oauth.scribe.holder import org.springframework.web.context.request.RequestContextHolder diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy similarity index 91% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy index d2b0ff2..eb63a31 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessor.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.resource +package uk.co.desirableobjects.oauth.scribe.resource import groovy.transform.EqualsAndHashCode import org.scribe.model.Verb diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy similarity index 85% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy index 55f61c2..1d28457 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/test/Test10aApiImplementation.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.test +package uk.co.desirableobjects.oauth.scribe.test import org.scribe.builder.api.DefaultApi10a diff --git a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy similarity index 74% rename from src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy rename to src/main/groovy/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy index a14b447..06d93a4 100644 --- a/src/main/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy +++ b/src/main/groovy/uk/co/desirableobjects/oauth/scribe/util/DynamicMethods.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.util +package uk.co.desirableobjects.oauth.scribe.util class DynamicMethods { diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy similarity index 96% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy index 97614aa..61c8dd0 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/AuthorisationProcessSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestMixin import grails.test.mixin.support.GrailsUnitTestMixin @@ -11,8 +11,8 @@ import spock.lang.Shared import spock.lang.Specification import spock.lang.Stepwise import spock.lang.Unroll -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor @Stepwise @TestMixin(GrailsUnitTestMixin) diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy similarity index 85% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy index 635eca3..2d374f5 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/GMockAddon.groovy @@ -1,5 +1,5 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import org.gmock.WithGMock diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy similarity index 97% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy index e3f1ff7..ec1121a 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthControllerSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor import org.scribe.exceptions.OAuthException @@ -9,9 +9,9 @@ import org.springframework.web.context.request.RequestContextHolder import spock.lang.Shared import spock.lang.Specification import spock.lang.Unroll -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder +import uk.co.desirableobjects.oauth.scribe.exception.MissingRequestTokenException +import uk.co.desirableobjects.oauth.scribe.exception.UnknownProviderException +import uk.co.desirableobjects.oauth.scribe.holder.RedirectHolder @TestFor(OauthController) class OauthControllerSpec extends Specification { diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy similarity index 96% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy index 8098148..38f3428 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthResourceServiceSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor import org.scribe.model.OAuthRequest @@ -7,7 +7,7 @@ import org.scribe.model.Token import org.scribe.model.Verb import org.scribe.oauth.OAuthService import spock.lang.Specification -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor @TestFor(OauthResourceService) class OauthResourceServiceSpec extends Specification { diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy similarity index 98% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy index d3f9e05..4039596 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthServiceSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor import org.scribe.builder.ServiceBuilder @@ -10,8 +10,8 @@ import org.scribe.model.Verb import org.scribe.oauth.OAuthService import spock.lang.Specification import spock.lang.Unroll -import grails.plugins.uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException -import grails.plugins.uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor +import uk.co.desirableobjects.oauth.scribe.exception.InvalidOauthProviderException +import uk.co.desirableobjects.oauth.scribe.resource.ResourceAccessor // This is a horrible hack. To disable automatic mocking and wiring of the // OauthService bean (because we can't test the configuration handling otherwise) diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy similarity index 98% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy index 367d2cb..ada9482 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/OauthTagLibSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe +package uk.co.desirableobjects.oauth.scribe import grails.test.mixin.TestFor import org.grails.taglib.GrailsTagException diff --git a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy similarity index 94% rename from src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy rename to src/test/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy index 4a6c3d1..6f56bf0 100644 --- a/src/test/groovy/grails/plugins/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy +++ b/src/test/groovy/uk/co/desirableobjects/oauth/scribe/resource/ResourceAccessorSpec.groovy @@ -1,4 +1,4 @@ -package grails.plugins.uk.co.desirableobjects.oauth.scribe.resource +package uk.co.desirableobjects.oauth.scribe.resource import grails.test.mixin.TestMixin import grails.test.mixin.support.GrailsUnitTestMixin From acc6a8069f887c760519cd6d4cc5eb0e62d03e93 Mon Sep 17 00:00:00 2001 From: Dhiraj Mahapatro Date: Mon, 27 Jul 2015 14:00:19 -0400 Subject: [PATCH 4/4] Uncomment publishing options --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 2bc95e5..7b7e492 100644 --- a/build.gradle +++ b/build.gradle @@ -27,8 +27,8 @@ apply plugin: "org.grails.grails-plugin" apply plugin: "org.grails.grails-gsp" apply plugin: "org.grails.grails-doc" // Used for publishing to central repository, remove if not needed -//apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/grailsCentralPublishing.gradle' -//apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/bintrayPublishing.gradle' +apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/grailsCentralPublishing.gradle' +apply from:'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/bintrayPublishing.gradle' ext { grailsVersion = project.grailsVersion