Gist
NAME
Pastebin::Gist - Raku interface to https://gist.github.com/
SYNOPSIS
use Pastebin::Gist;
my $p = Pastebin::Gist.new(
token => '3f2b4ca292960fafc63fb6798f148e3b47ea9fff',
);
my $paste_url = $p.paste("<foo>bar</foo>");
my $paste_url = $p.paste(
{
'file1.p6' => { content => "Paste content 1" },
'meow.css' => { content => "Paste content 2" },
},
:desc("Foo Bar"),
:!public,
);
$p.delete: $paste_url; # delete a gist
DESCRIPTION
This module allows the user to create and paste to GitHub Gists as well as retrieve them.
METHODS
new
# Assuming PASTEBIN_GIST_TOKEN env var has the token:
my $p = Pastebin::Gist.new;
# Set token via an argument:
my $p = Pastebin::Gist.new(
token => 'ghp_4ca292960fafc63fb6798f148e3b47ea9fff',
)
Creates new C<Pastebin::Gist> object. Accepts the following settings:
token
token => 'ghp_4ca292960fafc63fb6798f148e3b47ea9fff'
To use this module you need to
create a GitHub token. Only the gist
permission is needed.
You can avoid providing the token
argument by setting the
PASTEBIN_GIST_TOKEN
environmental variable to the value of your token.
Local User Testing
In order to test the module with your token, use the installed executable 'test-pastebin-gist' to insure all works before using this module in other programs.
paste
my $paste_url = $p.paste('Paste content');
my $paste_url = $p.paste('Paste content', filename => 'foo.raku');
my $paste_url = $p.paste(
{
'file1.raku' => { content => "Paste content 1" },
'meow.css' => { content => "Paste content 2" },
},
:desc('Optional summary'),
:public,
);
Returns URL to the created paste (e.g.
https://gist.github.com/5590bc07b8d5bd8fd98d). On failure, throws
`Pastebin::Gist::X` exception whose `$.message` method has reason for error.
First positional argument can either be a string of content to paste or
a hashref where keys are filenames and values are hashrefs with
values key content
set to content of files to paste. Using a hashref
allows you to make a gist with multiple files. All other arguments
are optional and are as follows:
desc
desc => 'Optional summary',
Optional. Provides the description (summary) of the gist. By default not specified.
public
public => True,
Optional. Takes True
or False
values. If set to True
, your
gist will be visible in search results and recent gists page.
Defaults to: False
.
filename
filename => "Foo.raku"
Optional. Applies only when the first positional argument to
/paste is a string. Specifies the filename to use for your gist
(affects syntax highlighting). Defaults to: nopaste.txt
.
Note: GitHub's API docs have this blurb in them:
Don't name your files "gistfile" with a numerical suffix.
This is the format of the automatic naming scheme that
Gist uses internally.
It tells you not to use files gistfile3
or gistfile33.txt
. Behaviour
when using this types of values for filename
is not defined.
fetch
my ( $files, $desc )
= $p.fetch('https://gist.github.com/5590bc07b8d5bd8fd98d');
my ( $files, $desc ) = $p.fetch('5590bc07b8d5bd8fd98d');
say "Title: $desc";
for $files.keys {
say "File: $_\nContent:\n$files{$_}";
}
Returns a two-item list: files in the gist and gist's title.
Takes one mandatory argument: a full URL or just the
ID number of the gist you want to retrieve. The $files
is a hashref,
where keys are file names and values are the file's contents.
On failure, throws
`Pastebin::Gist::X` exception whose `$.message` method has reason for error.
delete
$p.delete: 'https://gist.github.com/5590bc07b8d5bd8fd98d';
$p.delete: '5590bc07b8d5bd8fd98d';
Returns `True`. Deletes an existing gist referenced by either the ID or the full URL to it. On failure, throws `Pastebin::Gist::X` exception whose `$.message` method has reason for error.
AUTHOR
Zoffix Znet
COPYRIGHT AND LICENSE
Copyright 2015 - 2018 Zoffix Znet
Copyright 2019 - 2022 Raku Community
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.