content: {-# LANGUAGE CPP #-}
  {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE TypeFamilies #-}
  
  -----------------------------------------------------------------------------
  
  -----------------------------------------------------------------------------
  
  {- |
   Module      :  OpenTelemetry.Resource.Telemetry
   Copyright   :  (c) Ian Duncan, 2021
   License     :  BSD-3
   Description :  Information about the telemetry SDK used to capture data recorded
   by the instrumentation libraries.
   Maintainer  :  Ian Duncan
   Stability   :  experimental
   Portability :  non-portable (GHC extensions)
  -}
  module OpenTelemetry.Resource.Telemetry where
  
  import Data.Text (Text)
  import OpenTelemetry.Resource
  
  
  -- - id: cpp
  --   value: "cpp"
  -- - id: dotnet
  --   value: "dotnet"
  -- - id: erlang
  --   value: "erlang"
  -- - id: go
  --   value: "go"
  -- - id: java
  --   value: "java"
  -- - id: nodejs
  --   value: "nodejs"
  -- - id: php
  --   value: "php"
  -- - id: python
  --   value: "python"
  -- - id: ruby
  --   value: "ruby"
  -- - id: webjs
  --   value: "webjs"
  -- other allowed
  
  -- | The telemetry SDK used to capture data recorded by the instrumentation libraries.
  data Telemetry = Telemetry
    { telemetrySdkName :: Text
    -- ^ The name of the telemetry SDK as defined above.
    , telemetrySdkLanguage :: Maybe Text
    -- ^ The name of the telemetry SDK as defined above.
    , telemetrySdkVersion :: Maybe Text
    -- ^ The version string of the telemetry SDK.
    , telemetryAutoVersion :: Maybe Text
    --- ^ The version string of the auto instrumentation agent, if used.
    }
  
  
  instance ToResource Telemetry where
    type ResourceSchema Telemetry = 'Nothing
    toResource Telemetry {..} =
      mkResource
        [ "telemetry.sdk.name" .= telemetrySdkName
        , "telemetry.sdk.language" .=? telemetrySdkLanguage
        , "telemetry.sdk.version" .=? telemetrySdkVersion
        , "telemetry.auto.version" .=? telemetryAutoVersion
        ]
  