├── .gitignore ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── logo.png ├── readme.md ├── settings.gradle └── src ├── main ├── kotlin │ └── me │ │ └── avo │ │ └── realworld │ │ └── kotlin │ │ └── ktor │ │ ├── Application.kt │ │ ├── auth │ │ ├── AuthenticationException.kt │ │ ├── AuthorizationException.kt │ │ ├── BcryptHasher.kt │ │ └── JwtConfig.kt │ │ ├── model │ │ ├── Article.kt │ │ ├── ArticleDetails.kt │ │ ├── ArticleQuery.kt │ │ ├── Comment.kt │ │ ├── LoginCredentials.kt │ │ ├── MultipleArticles.kt │ │ ├── Profile.kt │ │ ├── RegistrationDetails.kt │ │ ├── Tags.kt │ │ └── User.kt │ │ ├── repository │ │ ├── ArticleRepository.kt │ │ ├── ArticleRepositoryImpl.kt │ │ ├── CommentRepository.kt │ │ ├── CommentRepositoryImpl.kt │ │ ├── ProfileRepository.kt │ │ ├── ProfileRepositoryImpl.kt │ │ ├── RowConversions.kt │ │ ├── Setup.kt │ │ ├── Tables.kt │ │ ├── TagSource.kt │ │ ├── TagSourceImpl.kt │ │ ├── UserRepository.kt │ │ └── UserRepositoryImpl.kt │ │ ├── server │ │ ├── ExceptionHandler.kt │ │ ├── Routing.kt │ │ ├── Server.kt │ │ └── routes │ │ │ ├── ArticleRoute.kt │ │ │ ├── ProfileRoute.kt │ │ │ └── UserRoute.kt │ │ ├── service │ │ └── AuthService.kt │ │ └── util │ │ ├── Extensions.kt │ │ └── Property.kt └── resources │ └── application.properties └── test └── kotlin └── me └── avo └── realworld └── kotlin └── ktor ├── TableSetup.kt ├── TestExtensions.kt ├── functional ├── ArticlesTest.kt ├── ArticlesWithAuthTest.kt ├── AuthTest.kt ├── CommentsTest.kt ├── FunctionalTest.kt ├── ProfilesTest.kt └── TagsTest.kt └── persistence ├── ArticleDetailsSourceImplTest.kt ├── ProfileRepositoryImplTest.kt ├── TagSourceImplTest.kt ├── TestEnvironment.kt └── UserRepositoryImplTest.kt /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/.gitignore -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/gradlew.bat -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/logo.png -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/readme.md -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'realworld-kotlin-ktor' 2 | 3 | -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/Application.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/Application.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/auth/AuthenticationException.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/auth/AuthenticationException.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/auth/AuthorizationException.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/auth/AuthorizationException.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/auth/BcryptHasher.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/auth/BcryptHasher.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/auth/JwtConfig.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/auth/JwtConfig.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/Article.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/Article.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/ArticleDetails.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/ArticleDetails.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/ArticleQuery.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/ArticleQuery.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/Comment.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/Comment.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/LoginCredentials.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/LoginCredentials.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/MultipleArticles.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/MultipleArticles.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/Profile.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/Profile.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/RegistrationDetails.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/RegistrationDetails.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/Tags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/Tags.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/model/User.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/model/User.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/ArticleRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/ArticleRepository.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/ArticleRepositoryImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/ArticleRepositoryImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/CommentRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/CommentRepository.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/CommentRepositoryImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/CommentRepositoryImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/ProfileRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/ProfileRepository.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/ProfileRepositoryImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/ProfileRepositoryImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/RowConversions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/RowConversions.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/Setup.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/Setup.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/Tables.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/Tables.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/TagSource.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/TagSource.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/TagSourceImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/TagSourceImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/UserRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/UserRepository.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/UserRepositoryImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/repository/UserRepositoryImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/server/ExceptionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/server/ExceptionHandler.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/server/Routing.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/server/Routing.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/server/Server.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/server/Server.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/server/routes/ArticleRoute.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/server/routes/ArticleRoute.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/server/routes/ProfileRoute.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/server/routes/ProfileRoute.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/server/routes/UserRoute.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/server/routes/UserRoute.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/service/AuthService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/service/AuthService.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/util/Extensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/util/Extensions.kt -------------------------------------------------------------------------------- /src/main/kotlin/me/avo/realworld/kotlin/ktor/util/Property.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/kotlin/me/avo/realworld/kotlin/ktor/util/Property.kt -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/main/resources/application.properties -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/TableSetup.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/TableSetup.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/TestExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/TestExtensions.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/ArticlesTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/ArticlesTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/ArticlesWithAuthTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/ArticlesWithAuthTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/AuthTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/AuthTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/CommentsTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/CommentsTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/FunctionalTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/FunctionalTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/ProfilesTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/ProfilesTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/TagsTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/functional/TagsTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/ArticleDetailsSourceImplTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/ArticleDetailsSourceImplTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/ProfileRepositoryImplTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/ProfileRepositoryImplTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/TagSourceImplTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/TagSourceImplTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/TestEnvironment.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/TestEnvironment.kt -------------------------------------------------------------------------------- /src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/UserRepositoryImplTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndreasVolkmann/realworld-kotlin-ktor/HEAD/src/test/kotlin/me/avo/realworld/kotlin/ktor/persistence/UserRepositoryImplTest.kt --------------------------------------------------------------------------------