module XRay
  # AWS Services listed below will be recorded as subsegments
  module AwsServices
    # exausted list can be tracked at http://docs.aws.amazon.com/sdk-for-ruby/v3/api/Seahorse/Client/Base.html
    @whitelist = %I[
      AccessAnalyzer
      ACM
      ACMPCA
      AlexaForBusiness
      Amplify
      APIGateway
      ApiGatewayManagementApi
      ApiGatewayV2
      AppConfig
      ApplicationAutoScaling
      ApplicationDiscoveryService
      ApplicationInsights
      AppMesh
      AppStream
      AppSync
      Athena
      AugmentedAIRuntime
      AutoScaling
      AutoScalingPlans
      Backup
      Batch
      Budgets
      Chime
      Cloud9
      CloudDirectory
      CloudFormation
      CloudFront
      CloudHSM
      CloudHSMV2
      CloudSearch
      CloudSearchDomain
      CloudTrail
      CloudWatch
      CloudWatchEvents
      CloudWatchLogs
      CodeBuild
      CodeCommit
      CodeDeploy
      CodeGuruProfiler
      CodeGuruReviewer
      CodePipeline
      CodeStar
      CodeStarconnections
      CodeStarNotifications
      CognitoIdentity
      CognitoIdentityProvider
      CognitoSync
      Comprehend
      ComprehendMedical
      ComputeOptimizer
      ConfigService
      Connect
      ConnectParticipant
      CostandUsageReportService
      CostExplore
      CostExplorer
      DatabaseMigrationService
      DataExchange
      DataPipeline
      DataSync
      DAX
      Detective
      DeviceFarm
      DirectConnect
      DirectoryService
      DLM
      DocDB
      DynamoDB
      DynamoDBStreams
      EBS
      EC2
      EC2InstanceConnect
      ECR
      ECS
      EFS
      EKS
      ElastiCache
      ElasticBeanstalk
      ElasticInference
      ElasticLoadBalancing
      ElasticLoadBalancingV2
      ElasticsearchService
      ElasticTranscoder
      EMR
      EventBridge
      Firehose
      FMS
      ForecastQueryService
      ForecastService
      FraudDetector
      FSx
      GameLift
      Glacier
      GlobalAccelerator
      Glue
      Greengrass
      GroundStation
      GuardDuty
      Health
      IAM
      IVS
      Imagebuilder
      ImportExport
      Inspector
      IoT
      IoT1ClickDevicesService
      IoT1ClickProjects
      IoTAnalytics
      IoTDataPlane
      IoTEvents
      IoTEventsData
      IoTJobsDataPlane
      IoTSecureTunneling
      IoTThingsGraph
      Kafka
      Kendra
      Kinesis
      KinesisAnalytics
      KinesisAnalyticsV2
      KinesisVideo
      KinesisVideoArchivedMedia
      KinesisVideoArchiveMedia
      KinesisVideoMedia
      KinesisVideoSignalingChannels
      KMS
      LakeFormation
      Lambda
      LambdaPreview
      Lex
      LexModelBuildingService
      LexRuntimeService
      LicenseManager
      Lightsail
      LocationService
      MachineLearning
      Macie
      ManagedBlockchain
      MarketplaceCatalog
      MarketplaceCommerceAnalytics
      MarketplaceEntitlementService
      MarketplaceMetering
      MediaConnect
      MediaConvert
      MediaLive
      MediaPackage
      MediaPackageVod
      MediaStore
      MediaStoreData
      MediaTailor
      MigrationHub
      MigrationHubConfig
      Mobile
      MQ
      MTurk
      Neptune
      NetworkManager
      OpsWorks
      OpsWorksCM
      Organizations
      Outposts
      Personalize
      PersonalizeEvents
      PersonalizeRuntime
      PI
      Pinpoint
      PinpointEmail
      PinpointSMSVoice
      Polly
      Pricing
      QLDB
      QLDBSession
      QuickSight
      RAM
      RDS
      RDSDataService
      Redshift
      Rekognition
      ResourceGroups
      ResourceGroupsTaggingAPI
      RoboMaker
      Route53
      Route53Domains
      Route53Resolver
      S3
      S3Control
      SageMaker
      SageMakerRuntime
      SavingsPlans
      Schemas
      SecretsManager
      SecurityHub
      ServerlessApplicationRepository
      ServiceCatalog
      ServiceDiscovery
      ServiceQuotas
      SES
      SESV2
      SFN
      Shield
      Signer
      SimpleDB
      SMS
      Snowball
      SNS
      SQS
      SSM
      SSO
      SSOOIDC
      States
      StorageGateway
      STS
      Support
      SWF
      Textract
      TranscribeService
      TranscribeStreamingService
      Transfer
      Translate
      WAF
      WAFRegional
      WAFV2
      WorkDocs
      WorkLink
      WorkMail
      WorkMailMessageFlow
      WorkSpaces
      XRay
    ]

    def self.whitelist
      @whitelist
    end

    def self.whitelist=(v)
      @whitelist = v
    end
  end
end
