First sync
This commit is contained in:
73
GCP/GCP-Publish.ps1
Normal file
73
GCP/GCP-Publish.ps1
Normal file
@ -0,0 +1,73 @@
|
||||
# Définir les variables de configuration
|
||||
#$jsonKeyFile = "C:\Users\hcornet\Downloads\ari-prj-np-mdf-001-d6cd222549da.json" # Modifier le chemin vers votre fichier JSON d'authentification
|
||||
$jsonKeyFile = "C:\Users\hcornet\Downloads\ari-prj-mdf-001-e24a11fe72e5.json"
|
||||
#$projectId = "ari-prj-np-mdf-001"
|
||||
$projectId = "ari-prj-mdf-001"
|
||||
$Topic = "MindFlow:publish"
|
||||
$subscription = "Alerte:pull"
|
||||
$APIUrl = "https://pubsub.googleapis.com/v1"
|
||||
$subject = "Azure Activity"
|
||||
$Message = "Message Lundi 26 Mai Test en directe à 15:40"
|
||||
|
||||
$data = $null
|
||||
$responsePublish = $null
|
||||
$responsePull = $null
|
||||
|
||||
# Activer le compte de service avec le fichier JSON
|
||||
Write-Output "Activation du compte de service..."
|
||||
gcloud auth activate-service-account --key-file $jsonKeyFile
|
||||
|
||||
# Récupérer le token d'accès
|
||||
Write-Output "Récupération du token d'accès..."
|
||||
$accessToken = gcloud auth print-access-token
|
||||
|
||||
# Définir l'URL de l'API Pub/Sub pour une opération de pull (récupération de messages)
|
||||
$PublishUrl = "$APIUrl/projects/$projectId/topics/$topic"
|
||||
$PullUrl = "$APIUrl/projects/$projectId/subscriptions/$subscription"
|
||||
|
||||
# Publier le message sur le topic Pub/Sub
|
||||
#$base64Message = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($Message))
|
||||
|
||||
$Headers = @{
|
||||
Authorization = "Bearer $accessToken"
|
||||
"accept" = "application/json"
|
||||
"Content-Type" = "application/json"
|
||||
}
|
||||
|
||||
# Préparer le corps de la requête (ici, on demande jusqu'à 10 messages)
|
||||
$payloadPublish = @{
|
||||
messages = @(
|
||||
@{
|
||||
data = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($Message))
|
||||
attributes = @{
|
||||
subject = $subject
|
||||
}
|
||||
}
|
||||
)
|
||||
} | ConvertTo-Json -Depth 10
|
||||
|
||||
Write-Output "Utilisation de l'API Pub/Sub..."
|
||||
# Appeler l'API Pub/Sub avec une requête POST
|
||||
$responsePublish = Invoke-RestMethod -Method POST -Uri $PublishUrl -Headers $Headers -Body $payloadPublish
|
||||
|
||||
# Afficher la réponse
|
||||
Write-Output "Réponse de l'API :" $responsePublish | ConvertTo-Json -Depth 10
|
||||
|
||||
# Préparer le corps de la requête (ici, on demande jusqu'à 10 messages)
|
||||
$payloadPull = @{
|
||||
maxMessages = 10
|
||||
} | ConvertTo-Json -Depth 10
|
||||
|
||||
Write-Output "Interrogation de l'API Pub/Sub..."
|
||||
# Appeler l'API Pub/Sub avec une requête POST
|
||||
$responsePull = Invoke-RestMethod -Method Post -Uri $pullUrl -Headers $headers -Body $payloadPull # -ContentType "application/json"
|
||||
|
||||
# Afficher la réponse
|
||||
If ($responsePull.receivedMessages) {
|
||||
Write-Host "Message tiré. Réponse : " $responsePull.receivedMessages
|
||||
Foreach ($message in $responsePull.receivedMessages) {
|
||||
$data = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($message.message.data))
|
||||
Write-Host "Received message: $data"
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user