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 TLS
    implementation used only supports encryption. Unlike Web browsers, there is
    no certificate presented and no server authentication is performed (not even
    TOFU like in Gemini -- there's nothing to check). While it will encrypt your
    traffic, you should expect no privacy or security otherwise.
     
 
SEE ALSO
 - `Invoke-WebRequest`, which this cmdlet is modeled after.
 - RFC 1436, "The Internet Gopher Protocol". https://tools.ietf.org/html/rfc1436
 - RFC 4266, "The Gopher URI Scheme". https://tools.ietf.org/html/rfc4266
 - Gopher+. http://gopherinfo.somnolescent.net/documentation/gopherplus.html
 
KEYWORDS
 - Gopher
 - Gopher+
 - GopherPlus
 - SecureGopher
 - SecureGopher+
 - SecureGopherPlus
 - RFC1436
 - small web
 - WWW alternatives