ktor: BasicAuth is not resolved as a valid import in 1.2.0

Ktor Version

1.2.0

Ktor Engine Used(client or server and name)

Ktor-engine: Netty, httpclient: Apache

JVM Version, Operating System and Relevant Context

java: 11.0.2-open OS: linux, ubuntu build-system: maven

Feedback

After upgrade to version 1.2.0 from verison 1.1.4, the BasicAuth class fails to resolve: ‘import io.ktor.client.features.auth.basic.BasicAuth’ does not work.

Error:

[ERROR] /home/larsgard/workspace/ktor-test/src/main/kotlin/Main.kt: (8, 43) Unresolved reference: BasicAuth
[ERROR] /home/larsgard/workspace/ktor-test/src/main/kotlin/Main.kt: (16, 21) Unresolved reference: BasicAuth
[ERROR] /home/larsgard/workspace/ktor-test/src/main/kotlin/Main.kt: (17, 17) Unresolved reference: username
[ERROR] /home/larsgard/workspace/ktor-test/src/main/kotlin/Main.kt: (18, 17) Unresolved reference: password
[INFO] Kotlin compile iteration: /home/larsgard/workspace/ktor-test/src/main/kotlin/Main.kt

Sample application with Main.kt and pom.xml below:

src/main/kotlin/Main.kt:

import io.ktor.application.call
import io.ktor.client.HttpClient
import io.ktor.client.engine.apache.Apache
import io.ktor.http.ContentType
import io.ktor.response.respondText
import io.ktor.routing.get
import io.ktor.routing.routing
import io.ktor.client.features.auth.basic.BasicAuth
import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty


fun main(args: Array<String>) {
    val server = embeddedServer(Netty, port = 8080) {
        val myClient = HttpClient(Apache) {
            install(BasicAuth) {
                username = "username"
                password = "password"
            }
        }
        routing {
            get("/") {
                call.respondText("Hello World!", ContentType.Text.Plain)
            }
            get("/demo") {
                call.respondText("HELLO WORLD!")
            }
        }
    }
    server.start(wait = true)

}

Maven file:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>no.nils.ktortest</groupId>
  <artifactId>ktortest</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>ktortest</name>

  <properties>
    <source.java.version>11</source.java.version>
    <target.java.version>11</target.java.version>
    <kotlin.version>1.3.31</kotlin.version>
    <ktor.version>1.2.0</ktor.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
  </properties>


  <dependencies>
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-stdlib</artifactId>
      <version>${kotlin.version}</version>
    </dependency>
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-stdlib</artifactId>
      <version>${kotlin.version}</version>
    </dependency>
    <dependency>
      <groupId>io.ktor</groupId>
      <artifactId>ktor-server-netty</artifactId>
      <version>${ktor.version}</version>
    </dependency>
    <dependency>
      <groupId>io.ktor</groupId>
      <artifactId>ktor-client-apache</artifactId>
      <version>${ktor.version}</version>
    </dependency>
    <dependency>
      <groupId>io.ktor</groupId>
      <artifactId>ktor-server-core</artifactId>
      <version>${ktor.version}</version>
    </dependency>
    <dependency>
      <groupId>io.ktor</groupId>
      <artifactId>ktor-client-auth-basic</artifactId>
      <version>${ktor.version}</version>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
    <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>

    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>${source.java.version}</source>
          <target>${target.java.version}</target>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>kotlin-maven-plugin</artifactId>
        <groupId>org.jetbrains.kotlin</groupId>
        <version>${kotlin.version}</version>
        <executions>
          <execution>
            <id>compile</id>
            <goals>
              <goal>compile</goal>
            </goals>
            <configuration>
              <args>-Xuse-experimental=kotlin.Experimental</args>
            </configuration>
          </execution>
          <execution>
            <id>test-compile</id>
            <goals>
              <goal>test-compile</goal>
            </goals>
            <configuration>
              <args>-Xuse-experimental=kotlin.Experimental</args>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>
</project>

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 6
  • Comments: 22 (8 by maintainers)

Most upvoted comments

Hi @nilsmagnus. Thanks for the report. As mentioned above, the feature Auth with basic provider is a common preferred way instead of BasicAuth.

There is no metadata for JVM artifacts for now, and the artifact ktor-client-auth-jvm should be used.

Has ktor been abandoned? To a brand-new user, seems like some very basic stuff is wrong. I just tried to use the intellij plugin and the code it produces doesn’t even compile due to this problem.

Guys, with such a bad documentation - no one will be using ktor. Now it is awful. See how great is documentation in Spring.

Please include at least dependencies and corresponding imports in code snippets with examples.

@e5l , it means that the example in the docs (https://ktor.io/clients/http-client/features/auth.html) is not working. The dependency stated there is not resolved.

https://github.com/gradle/kotlin-dsl/issues/1117

I know this is unrelated but, cmon guys, its been almost two years and KT and friends just feel like so much hot garbage in practice, unstable, can’t build, project generators have showstopping bugs in them, IntelliJ seems to like to crash, on top of that the whole Gradle ecosystem is a mess to debug??

You’ve had this bug for 2 months, it can’t have been that hard to fix (for anyone who knows this system they’ve constructed). What happened, did all the funding dry up or something? Or is this just incredibly unstable that two patch versions broke this again?

Can confirm, although I used Gradle. Started with a generated projet through the IntelliJ plugin, and only have seen afterwards that it did not support 1.2.0, did the upgrade manually. Workd with 1.1.4, does not with 1.2.0.

@nilsmagnus, the documentation was fixed here: https://ktor.io/clients/http-client/features/auth.html @banshee could you file a separate issue for the plugin?

Thanks for the notice. We’ll update the docs and generator.

Looks like there is nothing, but metadata files in jar archive and documentation for maven projects is misleading. To make it work, dependency name should be adjusted with suffix -jvm

<dependency>
    <groupId>io.ktor</groupId>
    <artifactId>ktor-client-auth-jvm</artifactId>
    <version>${ktor.version}</version>
</dependency>

Or basic auth

<dependency>
   <groupId>io.ktor</groupId>
   <artifactId>ktor-client-auth-basic-jvm</artifactId>
   <version>${ktor.version}</version>
</dependency>