internal/functions/exchange/attachment/New-MgaAttachmentObject.ps1
function New-MgaAttachmentObject { <# .SYNOPSIS Create new Attachment object .DESCRIPTION Create new Attachment object Helper function used for internal commands. .PARAMETER RestData The RestData object containing the data for the new message object. .PARAMETER ParentObject The ParentObject object where the attachment came from. .PARAMETER ApiVersion The version used for queries in Microsoft Graph connection .PARAMETER ResultSize The user to execute this under. Defaults to the user the token belongs to. .PARAMETER User The user to execute this under. Defaults to the user the token belongs to. .PARAMETER Token The access token to use to connect. .PARAMETER FunctionName Name of the higher function which is calling this function. .EXAMPLE PS C:\> New-MgaAttachmentObject -RestData $output Create a MSGraph.Exchange.Attachment.* object from data in variable $output #> [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseShouldProcessForStateChangingFunctions", "")] [CmdletBinding()] param ( $RestData, $ParentObject, $ApiVersion, [Int64] $ResultSize, [string] $User, [MSGraph.Core.AzureAccessToken] $Token, [String] $FunctionName ) $outputHash = [ordered]@{ Id = $RestData.Id Name = $RestData.Name AttachmentType = [MSGraph.Exchange.Attachment.AttachmentTypes]$RestData.'@odata.type'.split(".")[($RestData.'@odata.type'.split(".").count - 1)] ContentType = $RestData.ContentType IsInline = $RestData.isInline LastModifiedDateTime = $RestData.LastModifiedDateTime Size = $RestData.Size User = $RestData.user ParentObject = $ParentObject BaseObject = $RestData } switch ($RestData.'@odata.type') { '#microsoft.graph.itemAttachment' { $invokeParam = @{ "Field" = "messages/$($ParentObject.Id)/attachments/$($RestData.id)/?`$expand=microsoft.graph.itemattachment/item" "Token" = $Token "User" = $User "ResultSize" = $ResultSize "ApiVersion" = $ApiVersion "FunctionName" = $FunctionName } $itemData = Invoke-MgaRestMethodGet @invokeParam $outputHash.BaseObject = $itemData $outputHash.Id = $itemData.id $outputHash.Add("Item", $itemData.Item) New-Object -TypeName MSGraph.Exchange.Attachment.ItemAttachment -Property $outputHash } '#microsoft.graph.referenceAttachment' { $outputHash.Add("SourceUrl", [uri]$RestData.SourceUrl) $outputHash.Add("ProviderType", [MSGraph.Exchange.Attachment.ReferenceAttachmentProvider]$RestData.ProviderType) $outputHash.Add("ThumbnailUrl", [uri]$RestData.ThumbnailUrl) $outputHash.Add("PreviewUrl", [uri]$RestData.PreviewUrl) $outputHash.Add("Permission", [MSGraph.Exchange.Attachment.referenceAttachmentPermission]$RestData.Permission) $outputHash.Add("IsFolder", [bool]::Parse($RestData.IsFolder)) New-Object -TypeName MSGraph.Exchange.Attachment.ReferenceAttachment -Property $outputHash } '#microsoft.graph.fileAttachment' { $outputHash.Add("ContentId", $RestData.ContentId) $outputHash.Add("ContentLocation", $RestData.ContentLocation) $outputHash.Add("ContentBytes", [system.convert]::FromBase64String($RestData.contentBytes)) New-Object -TypeName MSGraph.Exchange.Attachment.FileAttachment -Property $outputHash } Default { New-Object -TypeName MSGraph.Exchange.Attachment.Attachment -Property $outputHash } } } |