in reply to Re: Upload image to Imgur and retrieve the link/embed bbcode
in thread Upload image to Imgur and retrieve the link/embed bbcode

The ->content method is documented in Imgur::API::Endpoint::Image, unsurprisingly.

Um, where? I don't see "content" mentioned anywhere on that page :/

  • Comment on Re^2: Upload image to Imgur and retrieve the link/embed bbcode

Replies are listed 'Best First'.
Re^3: Upload image to Imgur and retrieve the link/embed bbcode
by Corion (Patriarch) on Jul 02, 2017 at 09:09 UTC

    Whoops, indeed, sorry for misleading you!

    The parameter documented is named image and should be set to the base64-encoded image data. I think with these parts you should have enough to create an example image and upload it.

    As the synopsis also contains syntax errors, maybe it isn't really tested.

      Hi,

      I've written something I think is syntactically correct and should work, but I dont understand authentication and I would appreciate shortcuts :D

      My code which is currently returns 403 as expected with a fake registration

      #!/usr/bin/perl -- use strict; use warnings; use Imgur::API; use Data::Dump qw/ dd /; use Carp::Always; my $key = shift or die "key"; my $file = shift or die "folder/folder/file"; # my $imgur = Imgur::API->new( api_key => $key ); # Missing required arguments: client_id at (eval 28) line 45. my $imgur = Imgur::API->new( client_id => $key ); # die # dd( $imgur ); # dd( $imgur->ua ); $imgur->ua->add_handler("request_send", sub { shift->dump; return }); $imgur->ua->add_handler("response_done", sub { shift->dump; return }); ################################ # ?? oauth login stuff here ??? ######################################################## my $img = $imgur->image->upload( image => $imgur->content( $file ), title => $file, description => $file, # album => "my files 1", ## ??? folder/folder/ ???? ); dd( $img ); print join "\n", $file, bblinkimg( $img ), "\n"; print join "\n", $file, dellink( $img ), "\n"; dd( $imgur ); my $ret = $imgur->image->delete( $img->deletehash ); dd( $ret ); exit( 0 ); sub bblinkimg { my( $img ) = @_; return sprintf '[url="%s"][img]htttp://i.imgur.com/%sl.jpg[/img][/url]', $img->link, $img->id, ; } sub dellink { my( $img ) = @_; return sprintf '# https://imgur.com/delete/%s', $img->deletehash, $img->id, ; }

      Speaking of oauth , I'm about to register an app, what do I choose?

      (*) OAuth 2 with callback url

      ( ) OAuth 2 without callback url

      ( ) Anonymous usage without user authorization

      I suspect its option number 2 cause this will be a cli app not a web app, but its extremely new to me and I would appreciate a quickstart or baby instructions :)

        Bug patch, an error didnt get turned into an exception .... left all the tracing in there it can't really hurt :D

        sub Imgur::API::request { package Imgur::API; { my ($this,$path,$method,$params) = @_; $params->{_format}="json"; $this->ua->agent("Imgur::API/0.0,1"); my $auth; if ($this->access_token) { $auth="Bearer ".$this->access_token; } else { $auth="Client-ID ".$this->client_id; } say STDERR $auth; my $response; if ($method=~/(?:post|put)/) { $response = $this->ua->$method($path,$params,'Authorization'=> +$auth); } else { $response = $this->ua->$method($path,'Authorization'=>$auth); } say Dumper($response); if ($response->content_type eq "application/json") { $this->stats->update($response); my $json = JSON::XS::decode_json($response->decoded_content); if (!$json->{success}) { my $e = Imgur::API::Exception->new(code=>$json->{status}, +message=>$json->{data}->{error}); say Dumper($json); say "BUG!!\n"; return $e; } return Imgur::API::Response->new($json); } else { return Imgur::API::Exception->new(code=>$response->code,messag +e=>$response->status_line); } }

        And then this works to upload anonymously provided you've registered as documented ... for all the Moose in the code its not used for much but it might be early :/

        #!/usr/bin/perl -- use strict; use warnings; use Imgur::API; use Data::Dump qw/ dd /; use Carp::Always; use feature 'say'; my $key = shift or die "key"; my $file = shift or die "folder/folder/file"; my $imgur = Imgur::API->new( client_id => $key ); dd( $imgur ); my $img = $imgur->image->upload( image => $imgur->content( $file ), title => $file, description => $file, # album => "my files 1", ## ??? folder/folder/ ???? ### No album wa +s found with the ID: my files 1 ); dd( $img ); winOrDie( $img ) or die; print join "\n", $file, bblinkimg( $img ), "\n"; print join "\n", $file, dellink( $img ), "\n"; my $ret = $imgur->image->delete( image => $img->{deletehash} ); winOrDie( $ret ) or die; exit( 0 ); sub winOrDie { my( $res ) = @_; if( $res->is_success ){ say "win winOrDie"; dd( $res ); return $res; } else { die "die winOrDie ", Data::Dump::pp( $res ); } } sub bblinkimg { my( $img ) = @_; return sprintf '[url="%s"][img]htttp://i.imgur.com/%sl.jpg[/img][/url]', $img->{link}, $img->{id}, ; } sub dellink { my( $img ) = @_; return sprintf '# https://imgur.com/delete/%s', $img->{deletehash}, $img->{id}, ; }