Pastebin::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.