en-US/about_PSGopher.help.txt

TOPIC
    about_PSGopher
 
SHORT DESCRIPTION
    A PowerShell module to download resources via Gopher.
 
LONG DESCRIPTION
    The PSGopher module allows you to connect to Gopher and Gopher+ servers and
    download resources and attributes. It has one cmdlet, Invoke-GopherRequest
    (alias: igr).
 
EXAMPLES
Example 1: Viewing Contents
    This example connects to Floodgap's Gopher server and return the content.
 
    PS C:\> $response = Invoke-GopherRequest gopher://floodgap.com
    PS C:\> $response.Content
 
    Welcome to Floodgap Systems' official gopher server.
    Floodgap has served the gopher community since 1999
    (formerly gopher.ptloma.edu).
    […]
 
Example 2: Viewing Metadata
    The -Info parameter will retrieve attributes about a resource, if the server
    supports Gopher+.
 
    PS C:\> igr -Info gopher://example.com/article.txt
 
    INFO : 0article.txt /article.txt example.com 70 +
    ADMIN : {
                Admin: John Doe <jdoe@example.com>,
                Mod-Date: Sun Nov 28 15:24:21 2021 <20211128152421>
               }
    VIEWS : text/plain: <11k>
    ABSTRACT : This article exists for documentation purposes.
 
Example 3: Downloading Files
    You can download files with the `-OutFile` parameter.
 
    PS C:\> Invoke-GopherRequest 'gopher://example.org/pic.gif' -OutFile pic.gif
 
Example 4: Viewing Links
    The `Links` property of a successful Gopher request contains all of a page's
    links.
 
    PS C:\> (igr gopher://floodgap.com).Links | Select -First 1
 
    href : gopher://gopher.floodgap.com/gopher/proxy
    Type : 0
    Description : Does this gopher menu look correct?
    Resource : /gopher/proxy
    Server : gopher.floodgap.com
    Port : 70
    UrlLink : False
 
Example 5: Sending Input
    The `InputObject` parameter (or pipeline input) can be used to send a query
    string to a Gopher server.
 
    PS C:\> igr gopher://gopher.floodgap.com/7/v2/vs -InputObject 'search terms'
 
    Pipeline input is also supported:
 
    Read-Host -Prompt 'Search for' | igr 'gopher://gopher.floodgap.com/7/v2/vs'
 
    Due to how the PowerShell runtime handles [System.Uri] objects with non-HTTP
    and non-HTTPS schemes, it is strongly recommended that you use -InputObject
    when creating URIs with query strings. This cmdlet will do the URL-encoding
    for you when using this parameter. However, if you're bold, you can build a
    URL by hand for the -Uri parameter.
 
TROUBLESHOOTING NOTE
    There are a few bugs and missing features in this version:
 
Gopher+ Directory Listings Are Plain Text
    Gopher+ directory listings aren't fully supported by this version. While you
    can fetch any attributes with the -Info parameter and get them as an object,
    doing this on a menu/Gophermap or directory will return plain text. This may
    be updated in a future release.
 
Using SSL/TLS, Where Supported
    There is an unofficial specification for wrapping Gopher connections in TLS.
    This cmdlet supports that in two ways:
 
    1. The -TrySSL parameter will connect with opportunistic encryption. First,
       Invoke-GopherRequest will attempt to connect to the server securely. If
       it fails, it will fall back to a regular non-secured connection.
 
    2. The -UseSSL parameter will connect with mandatory encryption. Should the
       server fail to negotiate a TLS session, Invoke-GopherRequest will abort.
 
    Supplying a URL with a scheme of gophers, sgopher, or gopher+tls is the same
    as using the -UseSSL parameter.
     
    Note that Gopher predates SSL and TLS. What enthusiasts call "SecureGopher"
    did not exist back in Gopher's heyday; it's a recent invention, and there is
    no official standard. Thus, few servers support secure connections.
 
    The .NET runtime performs certificate validation. The server must present a
    valid certificate in order for the TLS connection to succeed.
 
SEE ALSO
 - about_Gopher
 - about_GopherUriScheme
 - about_Gopher+
 
KEYWORDS
 - Gopher
 - Gopher+
 - GopherPlus
 - SecureGopher
 - SecureGopher+
 - SecureGopherPlus
 - retrocomputing
 - RFC 1436
 - RFC 4266
 - small web
 - WWW alternatives