App-Nopaste-Service-dpaste/lib/App/Nopaste/Service/dpaste.pm
package App::Nopaste::Service::dpaste;
use strict;
use warnings;
use JSON ();
our $VERSION = '0.03';
our $SYNTAX_CHOICES_URL = 'http://dpaste.com/api/v2/syntax-choices/';
use base 'App::Nopaste::Service';
sub uri { 'http://dpaste.com/' }
sub fill_form {
my ($self, $mech, %args) = @_;
my $syntax_map = $self->get_syntax_map($mech);
my $syntax = $syntax_map->{$args{lang}}
? $syntax_map->{$args{lang}}
: $syntax_map->{text};
$mech->submit_form(
form_name => 'pasteform',
fields => {
content => $args{text},
syntax => $syntax,
expiry_days => 1,
( $args{nick}
? (poster => $args{nick})
: ()
),
( $args{desc}
? (title => $args{desc})
: ()
),
},
);
}
sub get_syntax_map {
my ($self, $mech) = @_;
my $res = $mech->get($SYNTAX_CHOICES_URL);
die "Unable to fetch $SYNTAX_CHOICES_URL: @{[$res->status_line()]}"
unless $res->is_success();
$mech->back();
return JSON->new->decode($res->content());
}
sub return {
my ($self, $mech) = @_;
my $link = $mech->uri();
return (1, $link);
}
1 && q[Electric Wizard - Return Trip];
__END__
=pod
=encoding UTF-8
=head1 NAME
App::Nopaste::Service::dpaste - L<App::Nopaste> interface to L<http://dpaste.com>
=head1 SYNOPSIS
nopaste -s dpaste -l haskell foo_file.hs
=head1 DESCRIPTION
This is an L<App::Nopaste> back-end for L<http://dpaste.com> pastebin.
All pastes will be expired in 1 day.
=head1 SEE ALSO
L<http://dpaste.com/api/v2/syntax-choices/> - available syntax mappings
L<App::Nopaste::Command> - command-line utility for L<App::Nopaste>
=head1 AUTHOR
Sergey Romanov, C<sromanov@cpan.org>.
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2013-2014 by Sergey Romanov.
This library is free software; you can redistribute it and/or modify
it under the terms of the Artistic License version 2.0.
=cut