mirror of
https://github.com/Thumbscrew/PSMatrix.git
synced 2025-01-18 17:45:44 +00:00
add initial module files
add first function for creating an access token
This commit is contained in:
parent
a87159e41a
commit
d6ce1b196e
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.vscode
|
134
PSMatrix.psd1
Normal file
134
PSMatrix.psd1
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
#
|
||||||
|
# Module manifest for module 'PSMatrix'
|
||||||
|
#
|
||||||
|
# Generated by: james
|
||||||
|
#
|
||||||
|
# Generated on: 12/03/2022
|
||||||
|
#
|
||||||
|
|
||||||
|
@{
|
||||||
|
|
||||||
|
# Script module or binary module file associated with this manifest.
|
||||||
|
# RootModule = ''
|
||||||
|
|
||||||
|
# Version number of this module.
|
||||||
|
ModuleVersion = '0.0.1'
|
||||||
|
|
||||||
|
# Supported PSEditions
|
||||||
|
# CompatiblePSEditions = @()
|
||||||
|
|
||||||
|
# ID used to uniquely identify this module
|
||||||
|
GUID = 'ed1fd437-5e51-4916-90ed-c31ae7deb50b'
|
||||||
|
|
||||||
|
# Author of this module
|
||||||
|
Author = 'Thumbscrew'
|
||||||
|
|
||||||
|
# Company or vendor of this module
|
||||||
|
CompanyName = 'Unknown'
|
||||||
|
|
||||||
|
# Copyright statement for this module
|
||||||
|
# Copyright = '(c) Thumbscrew. All rights reserved.'
|
||||||
|
|
||||||
|
# Description of the functionality provided by this module
|
||||||
|
# Description = ''
|
||||||
|
|
||||||
|
# Minimum version of the PowerShell engine required by this module
|
||||||
|
PowerShellVersion = '7.0'
|
||||||
|
|
||||||
|
# Name of the PowerShell host required by this module
|
||||||
|
# PowerShellHostName = ''
|
||||||
|
|
||||||
|
# Minimum version of the PowerShell host required by this module
|
||||||
|
# PowerShellHostVersion = ''
|
||||||
|
|
||||||
|
# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
|
||||||
|
# DotNetFrameworkVersion = ''
|
||||||
|
|
||||||
|
# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
|
||||||
|
# ClrVersion = ''
|
||||||
|
|
||||||
|
# Processor architecture (None, X86, Amd64) required by this module
|
||||||
|
# ProcessorArchitecture = ''
|
||||||
|
|
||||||
|
# Modules that must be imported into the global environment prior to importing this module
|
||||||
|
# RequiredModules = @()
|
||||||
|
|
||||||
|
# Assemblies that must be loaded prior to importing this module
|
||||||
|
# RequiredAssemblies = @()
|
||||||
|
|
||||||
|
# Script files (.ps1) that are run in the caller's environment prior to importing this module.
|
||||||
|
# ScriptsToProcess = @()
|
||||||
|
|
||||||
|
# Type files (.ps1xml) to be loaded when importing this module
|
||||||
|
# TypesToProcess = @()
|
||||||
|
|
||||||
|
# Format files (.ps1xml) to be loaded when importing this module
|
||||||
|
# FormatsToProcess = @()
|
||||||
|
|
||||||
|
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
|
||||||
|
# NestedModules = @()
|
||||||
|
|
||||||
|
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
|
||||||
|
FunctionsToExport = @(
|
||||||
|
'Get-MatrixLoginToken'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
|
||||||
|
CmdletsToExport = @()
|
||||||
|
|
||||||
|
# Variables to export from this module
|
||||||
|
VariablesToExport = '*'
|
||||||
|
|
||||||
|
# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
|
||||||
|
AliasesToExport = @()
|
||||||
|
|
||||||
|
# DSC resources to export from this module
|
||||||
|
# DscResourcesToExport = @()
|
||||||
|
|
||||||
|
# List of all modules packaged with this module
|
||||||
|
# ModuleList = @()
|
||||||
|
|
||||||
|
# List of all files packaged with this module
|
||||||
|
# FileList = @()
|
||||||
|
|
||||||
|
# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
|
||||||
|
PrivateData = @{
|
||||||
|
|
||||||
|
PSData = @{
|
||||||
|
|
||||||
|
# Tags applied to this module. These help with module discovery in online galleries.
|
||||||
|
# Tags = @()
|
||||||
|
|
||||||
|
# A URL to the license for this module.
|
||||||
|
# LicenseUri = ''
|
||||||
|
|
||||||
|
# A URL to the main website for this project.
|
||||||
|
ProjectUri = 'https://github.com/Thumbscrew/PSMatrix'
|
||||||
|
|
||||||
|
# A URL to an icon representing this module.
|
||||||
|
# IconUri = ''
|
||||||
|
|
||||||
|
# ReleaseNotes of this module
|
||||||
|
# ReleaseNotes = ''
|
||||||
|
|
||||||
|
# Prerelease string of this module
|
||||||
|
# Prerelease = ''
|
||||||
|
|
||||||
|
# Flag to indicate whether the module requires explicit user acceptance for install/update/save
|
||||||
|
# RequireLicenseAcceptance = $false
|
||||||
|
|
||||||
|
# External dependent modules of this module
|
||||||
|
# ExternalModuleDependencies = @()
|
||||||
|
|
||||||
|
} # End of PSData hashtable
|
||||||
|
|
||||||
|
} # End of PrivateData hashtable
|
||||||
|
|
||||||
|
# HelpInfo URI of this module
|
||||||
|
# HelpInfoURI = ''
|
||||||
|
|
||||||
|
# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
|
||||||
|
# DefaultCommandPrefix = ''
|
||||||
|
|
||||||
|
}
|
||||||
|
|
14
PSMatrix.psm1
Normal file
14
PSMatrix.psm1
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# Get public and private function definition files.
|
||||||
|
$Public = @( Get-ChildItem -Path $PSScriptRoot\public\*.ps1 -Recurse )
|
||||||
|
$Private = @( Get-ChildItem -Path $PSScriptRoot\private\*.ps1 -Recurse )
|
||||||
|
|
||||||
|
# Dot source the files
|
||||||
|
Foreach ($import in @($Public + $Private)) {
|
||||||
|
Try {
|
||||||
|
. $import.fullname
|
||||||
|
} Catch {
|
||||||
|
Write-Error -Message "Failed to import function $($import.fullname): $_"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Export-ModuleMember -Function '*' -Alias '*'
|
45
public/Get-MatrixLoginToken.ps1
Normal file
45
public/Get-MatrixLoginToken.ps1
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Login and retrieve an Access token.
|
||||||
|
|
||||||
|
.Description
|
||||||
|
Login and retrieve an Access token from _matrix/client/v3/login. See https://spec.matrix.org/v1.2/client-server-api/#post_matrixclientv3login.
|
||||||
|
|
||||||
|
.Parameter ServerUrl
|
||||||
|
URL for the Matrix server to log into, for example "https://matrix.example.com".
|
||||||
|
|
||||||
|
.Parameter Credentials
|
||||||
|
PSCredentials Object that contains the Matrix Username and Password for the user you wish to log in with.
|
||||||
|
|
||||||
|
.Example
|
||||||
|
# Create a PSCredentials Object
|
||||||
|
$creds = Get-Credential
|
||||||
|
$token = Get-LoginToken -ServerUrl "https://matrix.example.com" -Credentials $creds
|
||||||
|
#>
|
||||||
|
function Get-MatrixLoginToken {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory)]
|
||||||
|
[string]$ServerUrl,
|
||||||
|
|
||||||
|
[Parameter(Mandatory)]
|
||||||
|
[PSCredential]$Credentials
|
||||||
|
)
|
||||||
|
|
||||||
|
$apiPath = "_matrix/client/v3/login"
|
||||||
|
$apiMethod = "Post"
|
||||||
|
|
||||||
|
$reqBody = @{
|
||||||
|
identifier = @{
|
||||||
|
type = "m.id.user"
|
||||||
|
user = $Credentials.UserName
|
||||||
|
}
|
||||||
|
type = "m.login.password"
|
||||||
|
password = $Credentials.Password | ConvertFrom-SecureString -AsPlainText
|
||||||
|
} | ConvertTo-Json
|
||||||
|
|
||||||
|
$res = Invoke-RestMethod -Uri "$ServerUrl/$apiPath" -Method $apiMethod -Body $reqBody
|
||||||
|
|
||||||
|
$token = $res.access_token | ConvertTo-SecureString
|
||||||
|
|
||||||
|
return $res.access_token
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user