Classes/Analytics.ps1

class Analytics {
    # properties
    [String] $subscription_key
    [String] $location
    [String] $query
    [psobject] $result
    hidden $base_url 
    [String] $endpoint

    # constructor
    Analytics([String] $subscription_key, [Location] $location) {
        $this.subscription_key = $subscription_key
        $this.location = $location
        $this.base_url = "https://{0}.api.cognitive.microsoft.com/text/analytics/v2.0/" -f $this.location 
    }

    #region methods
    # detectLanguage(string[] text)
    [System.Object] detectLanguage([System.String[]] $text) {
        $Service = 'languages'
        $this.endpoint = $this.base_url + $Service

        $data = for ($counter = 0; $counter -lt $text.Count; $counter++) { @{id = $counter+1;text = $text[$counter]}}
        $request = @{documents = @($data)} | ConvertTo-Json

        $params = @{
            Uri         = $this.endpoint
            Method      = 'POST'
            ContentType = 'application/json'
            Body        = $request
            Headers     = @{'Ocp-Apim-Subscription-Key' = $this.subscription_key}
        }
        $this.result = Invoke-RestMethod @params -Verbose
        return $this.result
    }
    # detectLanguage(string[] text)
    [System.Object] getKeyPhrase([System.String[]]  $text) {
        $Service = 'keyPhrases'
        $this.endpoint = $this.base_url + $Service

        $data = for ($counter = 0; $counter -lt $text.Count; $counter++) { @{id = $counter+1;text = $text[$counter]}}
        $request = @{documents = @($data)} | ConvertTo-Json

        $params = @{
            Uri         = $this.endpoint
            Method      = 'POST'
            ContentType = 'application/json'
            Body        = $request
            Headers     = @{'Ocp-Apim-Subscription-Key' = $this.subscription_key}
        }
        $this.result = Invoke-RestMethod @params -Verbose
        return $this.result
    }

    [System.Object] getSentiment([System.String[]]  $text) {
        $Service = 'sentiment'
        $this.endpoint = $this.base_url + $Service

        $data = for ($counter = 0; $counter -lt $text.Count ; $counter++) { @{id = $counter+1;text = $text[$counter]}}
        $request = @{documents = @($data)} | ConvertTo-Json

        $params = @{
            Uri         = $this.endpoint
            Method      = 'POST'
            ContentType = 'application/json'
            Body        = $request
            Headers     = @{'Ocp-Apim-Subscription-Key' = $this.subscription_key}
        }
        $this.result = Invoke-RestMethod @params -Verbose
        return $this.result
    }
    #endregion methods
}