NAME
    App::Filite::Client - client library for Filite servers

SYNOPSIS
      my $client = App::Filite::Client->new_from_config;
      my $url = $client->share( 'path/to/file.txt' );
      print "Shared to $url\n";

DESCRIPTION
    Share a file, chunk of text, or link via a Filite server.

    Filite is a URL shortner, file sharer, and pastebin that you can
    self-host.

  Config File
    Configuration is via a JSON-formatted file usually named
    ~/.config/filite-client/config.json (see also File::XDG), though this can
    be overridden using the `FILITE_CLIENT_CONFIG` environment variable.

  Constructors
    `new( %attrs )`
        Moose-like constructor.

    `new_from_config()`
        Load %attrs from the config instead of as parameters.

  Attributes
    All attributes are read-write.

    `server` Str
        The filite server to share things via. This will typically be a URL
        like "https://example.com/" or "http://example.net:8080".

    `password` Str
        Filite is a single user system so has a password but no username.

    `useragent` Object
        Can be set to a custom HTTP::Tiny instance. Cannot be specified in the
        config file.

    `errors` Int
        The number of errors which have been seen so far. It makes little
        sense to set this in the constructor or config file.

  Methods
    `share( $filename, \%opts )`
        Accepts `text`, `file`, `link`, and `highlight` options. All of these
        options are booleans.

        $filename may be "-" to read from STDIN.

    `share_text( $filename, \%opts )`
        Accepts a `highlight` option, which is a boolean.

        $filename may be "-" to read from STDIN.

    `share_file( $filename, \%opts )`
        The options are ignored.

        $filename may be "-" to read from STDIN.

    `share_link( $url, \%opts )`
        The options are ignored.

        $url may be "-" to read a URL from STDIN.

    `execute( \@argv )`
        Reads options and input filenames/URLs from @argv, like processing a
        command-line. If @argv isn't given, then uses the global @ARGV.

BUGS
    Please report any bugs to
    <https://github.com/tobyink/p5-app-filite-client/issues>.

SEE ALSO
    <https://github.com/raftario/filite>.

AUTHOR
    Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE
    This software is copyright (c) 2023 by Toby Inkster.

    This is free software; you can redistribute it and/or modify it under the
    same terms as the Perl 5 programming language system itself.

DISCLAIMER OF WARRANTIES
    THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
    WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
    MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.