NAME
Cloudinary - Talk with cloudinary.com
VERSION
0.1101
DESCRIPTION
This module lets you interface to http://cloudinary.com.
SYNOPSIS
Standalone
my
$delay
= Mojo::IOLoop->delay;
my
$cloudinary
= Cloudinary->new(
cloud_name
=>
'...'
,
api_key
=>
'...'
,
api_secret
=>
'...'
,
);
$delay
->begin;
$cloudinary
->upload({
file
=> {
file
=>
$path_to_file
},
on_success
=>
sub
{
# ...
$delay
->end;
},
on_error
=>
sub
{
# ...
$delay
->end;
},
});
# let's you do multiple upload() in parallel
# just call $delay->begin once pr upload()
# and $delay->end in each on_xxx callback
$delay
->
wait
;
With mojolicious
See Mojolicious::Plugin::Cloudinary.
Options
As from 0.04 all methods support the short and long option, meaning the examples below work the same:
$self
->url_for(
'billclinton.jpg'
=> {
w
=> 50 });
$self
->url_for(
'billclinton.jpg'
=> {
width
=> 50 });
url_for() examples
$cloudinary
->url_for(
'billclinton.jpg'
, {
type
=>
'facebook'
});
$cloudinary
->url_for(
'billclinton.jpg'
, {
type
=>
'twitter_name'
,
h
=> 70,
w
=> 100 });
$cloudinary
->url_for(
'18913373.jpg'
, {
type
=>
'twitter_name'
});
$cloudinary
->url_for(
'my-uploaded-image.jpg'
, {
h
=> 50,
w
=> 50 });
$cloudinary
->url_for(
'myrawid'
, {
resource_type
=>
'raw'
});
ATTRIBUTES
cloud_name
Your cloud name from https://cloudinary.com/console
api_key
Your API key from https://cloudinary.com/console
api_secret
Your API secret from https://cloudinary.com/console
private_cdn
Your private CDN url from https://cloudinary.com/console.
METHODS
upload
$self
->upload({
file
=>
$binary_str
|
$url
,
# required
timestamp
=>
$epoch
,
# time()
public_id
=>
$str
,
# optional
format
=>
$str
,
# optional
resource_type
=>
$str
,
# image or raw. defaults to "image"
tags
=> [
'foo'
,
'bar'
],
# optional
on_success
=>
sub
{
my
(
$res
) =
@_
;
# ...
},
on_error
=>
sub
{
my
(
$res
,
$tx
) =
@_
;
# ...
},
});
Will upload a file to http://cloudinary.com using the parameters given "cloud_name", "api_key" and "api_secret". $res
in on_success
will be the json response from cloudinary:
{
url
=>
$str
,
secure_url
=>
$str
,
public_id
=>
$str
,
version
=>
$str
,
width
=>
$int
,
# only for images
height
=>
$int
,
# only for images
}
$res
for on_error
on the other hand can be either undef
if there was an issue connecting/communicating with cloudinary or a an error:
{
error
=> { message:
$str
},
}
The file
can be:
A hash
{
file
=>
'path/to/image'
}
A Mojo::Upload object.
A Mojo::Asset object.
A URL
res
in callbacks will be the JSON response from http://cloudinary.com as a hash ref. It may also be undef
if something went wrong with the actual HTTP POST.
See also https://cloudinary.com/documentation/upload_images and http://cloudinary.com/documentation/upload_images#raw_uploads.
destroy
$self
->destroy({
public_id
=>
$public_id
,
resource_type
=>
$str
,
# image or raw. defaults to "image"
on_success
=>
sub
{
# ...
},
on_error
=>
sub
{
my
(
$res
,
$tx
) =
@_
;
# ...
},
});
Will delete an image from cloudinary, identified by $public_id
. on_success
will be called when the image got deleted, while on_error
is called if not: $res
can be either undef
if there was an issue connecting/communicating with cloudinary or a an error:
{
error
=> { message:
$str
},
}
See also https://cloudinary.com/documentation/upload_images#deleting_images.
url_for
$url_obj
=
$self
->url_for(
"$public_id.$format"
, \
%args
);
This method will return a public URL to the image at http://cloudinary.com. It will use "private_cdn" or the public CDN and "cloud_name" to construct the URL. The return value is a Mojo::URL object.
Example %args
:
{
w
=> 100,
# width of image
h
=> 150,
# height of image
resource_type
=>
$str
,
# image or raw. defaults to "image"
type
=>
$str
,
# upload, facebook. defaults to "upload"
secure
=>
$bool
,
# use private_cdn or public cdn
}
See also http://cloudinary.com/documentation/upload_images#accessing_uploaded_images and http://cloudinary.com/documentation/image_transformations.
COPYRIGHT & LICENSE
This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Jan Henning Thorsen - jhthorsen@cpan.org