Registration and secrets
Register a new free account at Cloudinary.
Go into the Dashboard and look for
- Cloud name
- API Key
- API Secret
Open appsettings.json and add the template for the keys
"CloudinarySettings" : {
"CloudName": "Set the key in secrets. View README for more info.",
"ApiKey": "Set the key in secrets. View README for more info.",
"ApiSecret": "Set the key in secrets. View README for more info."
}Using the console create the three key in secret storage.
dotnet user-secrets set "CloudinarySettings:CloudName" "******"
dotnet user-secrets set "CloudinarySettings:ApiKey" "******"
dotnet user-secrets set "CloudinarySettings:ApiSecret" "******"If the ApiSecret starts with - or -- there is a bug in the command line that will result in a message:
Unrecognized option 'your ApiSecret value'Workaround: create a file cloudinarysettings.json containing your settings.
{
"CloudinarySettings": {
"CloudName": "******",
"ApiKey": "******",
"ApiSecret": "******"
}
}Pipe the configuration file in secret storage
cat ./cloudinarysettings.json | dotnet user-secrets setRemember to put this file in gitignore or in a directory not in source control.
Helper class
Create a new class Helpers/CloudinarySettings.cs with properties for the Cloudinary keys.
public class CloudinarySettings
{
public string CloudName { get; set; }
public string ApiKey { get; set; }
public string ApiSecret { get; set; }
}Open Startup.cs and add to ConfigureServices the configuration for the settings helper so that it is available for injection.
...
services.AddCors();
services.Configure<CloudinarySettings>(Configuration.GetSection("CloudinarySettings"));
services.AddAutoMapper();
...Change the Photo class
When we upload a photo to Cloudinary the documentation says that the call returns a JSON object. Inside this object we have a key public_id. We need to store this key inside our photo object.
Open Photo.cs and add a prop for public_id.
public class Photo
{
...
public string PublicId { get; set; }
}Add a new migration.
dotnet ef migrations add AddedPhotoIdCheck the migration code and if everithing is ok apply it to the DB.
dotnet ef database updateCloudinary package
CTRL+SHIFT+p Nuget Add Package
Search CloudinaryDotNet and add the latest version (at the time of writing it was 1.3.1).
Add a package for Newtonsoft.Json and add the latest version (11.0.2).
Restore to install the new packages.
dotnet restoreNow run the application to check that it builds correctly.