diff --git a/Gitea-AttachAssetToRelease.ps1 b/Gitea-AttachAssetToRelease.ps1 new file mode 100644 index 0000000..4022b2a --- /dev/null +++ b/Gitea-AttachAssetToRelease.ps1 @@ -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 \ No newline at end of file diff --git a/Gitea-CreateRelease.ps1 b/Gitea-CreateRelease.ps1 new file mode 100644 index 0000000..7caba14 --- /dev/null +++ b/Gitea-CreateRelease.ps1 @@ -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 \ No newline at end of file diff --git a/Gitea-Functions.ps1 b/Gitea-Functions.ps1 new file mode 100644 index 0000000..80b87da --- /dev/null +++ b/Gitea-Functions.ps1 @@ -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" \ No newline at end of file diff --git a/URLDownloadToVar.ahk b/URLDownloadToVar.ahk index 2439bed..ca24e4f 100644 --- a/URLDownloadToVar.ahk +++ b/URLDownloadToVar.ahk @@ -1,12 +1,18 @@ URLDownloadToVar(url){ 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 { hObject.Send() } 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. return "" } diff --git a/WindowCredentialManager.ahk b/WindowCredentialManager.ahk new file mode 100644 index 0000000..7d6f9fe --- /dev/null +++ b/WindowCredentialManager.ahk @@ -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 \ No newline at end of file