All Downloads are FREE. Search and download functionalities are using the official Maven repository.

httpc.http.errors.scala Maven / Gradle / Ivy

The newest version!
package httpc.http

import cats.Show
import cats.implicits._

sealed trait HttpError {
  override def toString: String = this.show
}

object HttpError {

  case class MalformedHeader(header: String) extends HttpError
  case class MalformedStatus(status: String) extends HttpError
  case class NetworkError(message: String) extends HttpError
  case class UnsupportedProtocol(protocol: String) extends HttpError
  case object CorruptedContentLength extends HttpError
  case class UnsupportedTransferEncoding(name: String) extends HttpError
  case object UnspecifiedTransferModeError extends HttpError
  case object CorruptedChunkedResponse extends HttpError

  implicit val showHttpError: Show[HttpError] = Show.show(render)

  def render(err: HttpError): String = "HTTP error: " |+| (err match {
    case MalformedHeader(header) ⇒ s"malformed header: $header"
    case NetworkError(message) ⇒ s"$message"
    case MalformedStatus(status) ⇒ s"malformed status: $status"
    case UnsupportedProtocol(protocol) ⇒ s"unsupported protocol $protocol"
    case CorruptedContentLength => s"corrupted Content-Length value"
    case UnsupportedTransferEncoding(name) => s"unsupported Transfer-Encoding protocol $name"
    case UnspecifiedTransferModeError => s"unspecified Content-Length or Transfer-Encoding"
    case CorruptedChunkedResponse => s"corrupted chunked response"
  })
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy