public static IClientBuilder AddGoogleCloudStorage(this IServiceCollection collection)
        {
            ICoreBuilder coreBuilder = SimpleS3CoreServices.AddSimpleS3Core(collection);

            coreBuilder.UseGoogleCloudStorage();

            IHttpClientBuilder httpBuilder = coreBuilder.UseHttpClientFactory();

            httpBuilder.UseDefaultHttpPolicy();

            coreBuilder.Services.AddSingleton(x =>
            {
                //We have to call a specific constructor for dependency injection
                IObjectClient objectClient           = x.GetRequiredService <IObjectClient>();
                IBucketClient bucketClient           = x.GetRequiredService <IBucketClient>();
                IMultipartClient multipartClient     = x.GetRequiredService <IMultipartClient>();
                IMultipartTransfer multipartTransfer = x.GetRequiredService <IMultipartTransfer>();
                ITransfer transfer = x.GetRequiredService <ITransfer>();
                ISignedObjectClient?signedObjectClient = x.GetRequiredService <ISignedObjectClient>();
                return(new GoogleCloudStorageClient(objectClient, bucketClient, multipartClient, multipartTransfer, transfer, signedObjectClient));
            });

            //Add the client as the interface too
            coreBuilder.Services.AddSingleton <ISimpleClient>(x => x.GetRequiredService <GoogleCloudStorageClient>());

            return(new ClientBuilder(collection, httpBuilder, coreBuilder));
        }