Gitea automation functions

main
Yuriy 5 months ago
parent 62e8afebb8
commit 8447b6009a

@ -0,0 +1,47 @@
$apiurl=$args[0]
$apitoken=$args[1]
$filename=$args[2]
$filepath=$args[3]
Write-Host "apiurl: $apiurl"
Write-Host "apitoken: $apitoken"
Write-Host "filename: $filename"
Write-Host "filepath: $filepath"
# Load the required .NET assemblies
Add-Type -AssemblyName System.Net.Http
# Create Object and Load the required .NET assemblies
$httpClient = New-Object System.Net.Http.HttpClient
# $url = 'https://git.zinchuk.xyz/api/v1/repos/yuriy/TestRepo/releases/22/assets'
# $fileName = 'TestFile58.exe'
# $token = '2cf4a54d941'
$headers = @{
'accept' = 'application/json'
'Content-Type' = 'multipart/form-data'
}
# $filePath = "C:\Users\yuriy\Syncthing\Git\TestREpo\test.exe"
$fileBytes = [System.IO.File]::ReadAllBytes($filePath)
$fileStream = [System.IO.MemoryStream]::new($fileBytes)
$httpClient = [System.Net.Http.HttpClient]::new()
$httpClient.DefaultRequestHeaders.Add('Authorization', "Bearer $apitoken")
$multipartFormData = New-Object System.Net.Http.MultipartFormDataContent
$fileContent = New-Object System.Net.Http.StreamContent -ArgumentList $fileStream
$fileContent.Headers.ContentDisposition = New-Object System.Net.Http.Headers.ContentDispositionHeaderValue -ArgumentList "form-data"
$fileContent.Headers.ContentDisposition.Name = "attachment"
$fileContent.Headers.ContentDisposition.FileName = $fileName
# $fileContent.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse("text/plain")
$fileContent.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse("application/x-msdownload")
$multipartFormData.Add($fileContent)
$response = $httpClient.PostAsync($apiurl, $multipartFormData).Result
$responseContent = $response.Content.ReadAsStringAsync().Result
Write-Output $responseContent

@ -0,0 +1,62 @@
<#
.SYNOPSIS
Create a new release on on a Gitea site using the Gitea API
.DESCRIPTION
The Add-Numbers function takes two integer parameters, $Number1 and $Number2,
and returns the sum of those two numbers.
.PARAMETER APIURL
The Repo Releases API URL of the Gitea site, including the API Key.
Example: "https://gitea.example.com/api/v1/repos/yuriy/TESTREPO/releases?token=aaabbbcccdd"
.PARAMETER ReleaseName
Name for the release that will be created
.PARAMETER ReleaseTag
Tag for the release that will be created
.PARAMETER ReleaseBody
Body Text for the release that will be created
.EXAMPLE
Gitea-CreateRelease.ps1 "https://gitea.example.com/api/v1/repos/yuriy/TESTREPO/releases?token=aaabbbcccdd" "1.0" "1.0" "Initial Release"
.NOTES
This function was created as an example for a PowerShell documentation demonstration.
.LINK
https://example.com/powershell-functions
#>
$APIURL=$args[0]
$ReleaseName=$args[1]
$ReleaseTag=$args[2]
$ReleaseBody=$args[3]
<#
Write-Host "APIURL: $APIURL"
Write-Host "ReleaseTag: $ReleaseTag"
Write-Host "ReleaseName: $ReleaseName"
Write-Host "ReleaseBody: $ReleaseBody"
#>
$headers = @{
"accept" = "application/json"
"Content-Type" = "application/json"
}
$body = @{
"body" = "${ReleaseBody}"
"draft" = $false
"name" = "${ReleaseTag}"
"prerelease" = $false
"tag_name" = "${ReleaseTag}"
# "target_commitish" = "string"
} | ConvertTo-Json
# Write-Host "body: " $body
$Result = Invoke-RestMethod -Uri $APIURL -Method Post -Headers $headers -Body $body
Write-Host $Result

@ -0,0 +1,63 @@
<#
.SYNOPSIS
Adds two numbers and returns the result.
.DESCRIPTION
The Add-Numbers function takes two integer parameters, $Number1 and $Number2,
and returns the sum of those two numbers.
.PARAMETER Number1
The first number to add.
.PARAMETER Number2
The second number to add.
.EXAMPLE
$sum = Add-Numbers -Number1 5 -Number2 10
Write-Host "The sum is: $sum"
.NOTES
This function was created as an example for a PowerShell documentation demonstration.
.LINK
https://example.com/powershell-functions
#>
$APIURL=$args[0]
$ReleaseName=$args[1]
$ReleaseTag=$args[2]
$ReleaseBody=$args[3]
function CreateRelease {
param (
[string]$APIURL,
[string]$ReleaseName,
[string]$ReleaseID,
[string]$ReleaseBody,
)
$headers = @{
"accept" = "application/json"
"Content-Type" = "application/json"
}
$body = @{
"body" = "${ReleaseBody}"
"draft" = $false
"name" = "${ReleaseTag}"
"prerelease" = $false
"tag_name" = "${ReleaseTag}"
"target_commitish" = "string"
} | ConvertTo-Json
# Write-Host "body: " $body
$Result = Invoke-RestMethod -Uri $APIURL -Method Post -Headers $headers -Body $body
Write-Host $Result
}
Write-FullName -FirstName "John" -LastName "Doe"

@ -1,12 +1,18 @@
URLDownloadToVar(url){ URLDownloadToVar(url){
hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1") hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1")
hObject.Open("GET",url) Try, hObject.Open("GET",url)
catch e {
Message = Error Ocurred when trying to do GET Request using URLDownloadToVar to`n: %URL%
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,ErrorSummaryVar")
}
try { try {
hObject.Send() hObject.Send()
} }
catch e { catch e {
Message = Error Ocurred when trying to hObject.Send() with URLDownloadToVar Function
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,ErrorSummaryVar")
; MsgBox, 4096, Error, Failed to connect to:`n`n%url%`n`nAre you connected to the internet? Or is the website down?`n`nDisable Auto Update Check to disable this message. ; MsgBox, 4096, Error, Failed to connect to:`n`n%url%`n`nAre you connected to the internet? Or is the website down?`n`nDisable Auto Update Check to disable this message.
return "" return ""
} }

@ -0,0 +1,98 @@
; https://www.autohotkey.com/boards/viewtopic.php?t=112391
; Usage:
; cred := CredRead("CREDENTIALNAME", NewlineInPassword := 1)
; Username := cred.username
; Password := cred.password
; msgbox % cred.username
; msgbox % cred.password
; Functions
;------------------------------------------------
CredWrite(name, username, password)
{
VarSetCapacity(cred, 24 + A_PtrSize * 7, 0)
cbPassword := StrLen(password)*2
NumPut(1 , cred, 4+A_PtrSize*0, "UInt") ; Type = CRED_TYPE_GENERIC
NumPut(&name , cred, 8+A_PtrSize*0, "Ptr") ; TargetName = name
NumPut(cbPassword, cred, 16+A_PtrSize*2, "UInt") ; CredentialBlobSize
NumPut(&password , cred, 16+A_PtrSize*3, "UInt") ; CredentialBlob
NumPut(3 , cred, 16+A_PtrSize*4, "UInt") ; Persist = CRED_PERSIST_ENTERPRISE (roam across domain)
NumPut(&username , cred, 24+A_PtrSize*6, "Ptr") ; UserName
return DllCall("Advapi32.dll\CredWriteW"
, "Ptr", &cred ; [in] PCREDENTIALW Credential
, "UInt", 0 ; [in] DWORD Flags
, "UInt") ; BOOL
}
CredDelete(name)
{
return DllCall("Advapi32.dll\CredDeleteW"
, "WStr", name ; [in] LPCWSTR TargetName
, "UInt", 1 ; [in] DWORD Type,
, "UInt", 0 ; [in] DWORD Flags
, "UInt") ; BOOL
}
CredRead(name,NewlineInUsername:=0, NewlineInPassword:=0)
{
DllCall("Advapi32.dll\CredReadW"
, "Str", name ; [in] LPCWSTR TargetName
, "UInt", 1 ; [in] DWORD Type = CRED_TYPE_GENERIC (https://learn.microsoft.com/en-us/windows/win32/api/wincred/ns-wincred-credentiala)
, "UInt", 0 ; [in] DWORD Flags
, "Ptr*", pCred ; [out] PCREDENTIALW *Credential
, "UInt") ; BOOL
if !pCred{
; Username
InputBox, Username, Input Username, Username not found. `nPlease Input Username for: `n--%name%--,,,,,,,,%Clipboard% ; , Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]
if(ErrorLevel)
return
InputBox, Password, Input Password, Password not found. `nPlease Input Password for: `n--%name%--,,,,,,,,%Clipboard% ; , Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]
if(ErrorLevel)
return
if !CredWrite(name, Username, Password)
MsgBox failed to write cred
else, { ; try reading the credential that was just saved
DllCall("Advapi32.dll\CredReadW"
, "Str", name ; [in] LPCWSTR TargetName
, "UInt", 1 ; [in] DWORD Type = CRED_TYPE_GENERIC (https://learn.microsoft.com/en-us/windows/win32/api/wincred/ns-wincred-credentiala)
, "UInt", 0 ; [in] DWORD Flags
, "Ptr*", pCred ; [out] PCREDENTIALW *Credential
, "UInt") ; BOOL
}
if !pCred{
msgbox, Failed to read cred. after writing it to Credential Manager.
return
}
}
name := StrGet(NumGet(pCred + 8 + A_PtrSize * 0, "UPtr"), 256, "UTF-16")
; append new line to end if requested
if(NewlineInUsername)
username := StrGet(NumGet(pCred + 24 + A_PtrSize * 6, "UPtr"), 256, "UTF-16") . "`n"
else,
username := StrGet(NumGet(pCred + 24 + A_PtrSize * 6, "UPtr"), 256, "UTF-16")
len := NumGet(pCred + 16 + A_PtrSize * 2, "UInt")
; append new line to end if requested
if(NewlineInPassword)
password := StrGet(NumGet(pCred + 16 + A_PtrSize * 3, "UPtr"), len/2, "UTF-16") . "`n"
else,
password := StrGet(NumGet(pCred + 16 + A_PtrSize * 3, "UPtr"), len/2, "UTF-16")
DllCall("Advapi32.dll\CredFree", "Ptr", pCred)
return {"name": name, "username": username, "password": password}
}
; Misc
;------------------------------------------------
; Escape::ExitApp
Loading…
Cancel
Save