diff options
Diffstat (limited to 'kamon-core/src/main/scala/kamon/instrumentation/HttpMessage.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/instrumentation/HttpMessage.scala | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/instrumentation/HttpMessage.scala b/kamon-core/src/main/scala/kamon/instrumentation/HttpMessage.scala new file mode 100644 index 00000000..b141331b --- /dev/null +++ b/kamon-core/src/main/scala/kamon/instrumentation/HttpMessage.scala @@ -0,0 +1,66 @@ +package kamon.instrumentation + +import kamon.context.HttpPropagation.{HeaderReader, HeaderWriter} + +/** + * Base abstractions over HTTP messages. + */ +object HttpMessage { + + /** + * Wrapper for HTTP Request messages. + */ + trait Request extends HeaderReader { + + /** + * Request URL. + */ + def url: String + + /** + * Full request path. Does not include the query. + */ + def path: String + + /** + * HTTP Method. + */ + def method: String + } + + /** + * Wrapper for HTTP response messages. + */ + trait Response { + + /** + * Status code on the response message. + */ + def statusCode: Int + } + + /** + * A HTTP message builder on which header values can be written and a complete HTTP message can be build from. + * Implementations will typically wrap a HTTP message model from an instrumented framework and either accumulate + * all header writes until a call to to .build() is made and a new HTTP message is constructed merging the previous + * and accumulated headers (on immutable HTTP models) or directly write the headers on the underlying HTTP message + * (on mutable HTTP models). + */ + trait Builder[Message] extends HeaderWriter { + + /** + * Returns a version a version of the HTTP message container all headers that have been written to the builder. + */ + def build(): Message + } + + /** + * Builder for HTTP Request messages. + */ + trait RequestBuilder[Message] extends Request with Builder[Message] + + /** + * Builder for HTTP Response messages. + */ + trait ResponseBuilder[Message] extends Response with Builder[Message] +} |