Skip to content

Commit 1bd0d9c

Browse files
author
eric
committed
Support for the v2 Endpoint
1 parent e30b392 commit 1bd0d9c

File tree

12 files changed

+73
-83
lines changed

12 files changed

+73
-83
lines changed

cloudlayerio-dotnet-examples/Program.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,19 @@ internal static class Program
2121
"https://en.wikipedia.org/wiki/Hypericum_calycinum", //1
2222
"https://www.bing.com/", //2
2323
"https://www.msn.com/en-us", //3
24-
"https://apple.com", //4
25-
"https://reddit.com", //5
26-
"https://github.com", //6
27-
"https://www.bbc.com/", //7
28-
"https://microsoft.com", //8
29-
"https://mozilla.org", //9
30-
"https://wordpress.org" //10
24+
"https://reddit.com", //4
25+
"https://github.com", //5
26+
"https://www.bbc.com/", //6
27+
"https://microsoft.com", //7
28+
"https://mozilla.org", //8
29+
"https://wordpress.org" //9
3130
};
3231

3332
private static async Task Main(string[] args)
3433
{
3534
Console.WriteLine(
36-
"This is an example application demonstrating the very basic capabilities of cloudlayer.io");
35+
"This is an example application demonstrating the very basic capabilities of cloudlayer.io. Before proceeding, open your dashboard to observe the progress:");
36+
Console.WriteLine("https://app.cloudlayer.io/jobs");
3737
Console.WriteLine();
3838

3939

@@ -65,7 +65,7 @@ private static async Task GetFilesystemDocxToPdfExample()
6565

6666
await rsp.SaveToFilesystem(Path.Combine("examples_out", "DocxToPdf", "Example.pdf"));
6767
DisplayEndText(
68-
"The pdf has been saved to your filesystem successfully! (Check the bin directory)");
68+
"The response has been saved to your filesystem successfully! (Check the bin directory)");
6969
DisplayContinueText();
7070
}
7171

@@ -196,7 +196,7 @@ private static async Task GetGoogleImage()
196196

197197
await rsp.SaveToFilesystem(Path.Combine("examples_out", "UrlToImage", "google.png"));
198198
DisplayEndText(
199-
"The image google.png has been saved to your filesystem successfully! (Check the bin directory)");
199+
"The response has been saved to your filesystem successfully! (Check the bin directory)");
200200
DisplayContinueText();
201201
}
202202

@@ -212,7 +212,7 @@ private static async Task GetGooglePdf()
212212

213213
await rsp.SaveToFilesystem(Path.Combine("examples_out", "UrlToPdf", "google.pdf"));
214214
DisplayEndText(
215-
"The pdf google.pdf has been saved to your filesystem successfully! (Check the bin directory)");
215+
"The response has been saved to your filesystem successfully! (Check the bin directory)");
216216
DisplayContinueText();
217217
}
218218

cloudlayerio-dotnet-examples/cloudlayerio-dotnet-examples.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net5.0</TargetFramework>
5+
<TargetFramework>net6.0</TargetFramework>
66
<RootNamespace>cloudlayerio_dotnet_examples</RootNamespace>
77
</PropertyGroup>
88

cloudlayerio-dotnet-test/base-tests/ImageOptionsTests.cs

Lines changed: 6 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18,57 +18,25 @@ public void Serialize_Empty()
1818
[TestMethod]
1919
public void Serialize_ImageTypeBMP()
2020
{
21-
var options = new T {ImageType = ImageType.BMP};
21+
var options = new T {ImageType = ImageType.Png};
2222
var json = ClSerializer.Serialize(options);
23-
Assert.AreEqual("{\"imageType\":\"BMP\"}", json);
23+
Assert.AreEqual("{\"imageType\":\"png\"}", json);
2424
}
2525

2626
[TestMethod]
2727
public void Serialize_ImageTypeEPS()
2828
{
29-
var options = new T {ImageType = ImageType.EPS};
29+
var options = new T {ImageType = ImageType.Jpg};
3030
var json = ClSerializer.Serialize(options);
31-
Assert.AreEqual("{\"imageType\":\"EPS\"}", json);
31+
Assert.AreEqual("{\"imageType\":\"jpg\"}", json);
3232
}
3333

3434
[TestMethod]
3535
public void Serialize_ImageTypeGIF()
3636
{
37-
var options = new T {ImageType = ImageType.GIF};
37+
var options = new T {ImageType = ImageType.Webp};
3838
var json = ClSerializer.Serialize(options);
39-
Assert.AreEqual("{\"imageType\":\"GIF\"}", json);
40-
}
41-
42-
[TestMethod]
43-
public void Serialize_ImageTypeJPEG()
44-
{
45-
var options = new T {ImageType = ImageType.JPEG};
46-
var json = ClSerializer.Serialize(options);
47-
Assert.AreEqual("{\"imageType\":\"JPEG\"}", json);
48-
}
49-
50-
[TestMethod]
51-
public void Serialize_ImageTypePNG()
52-
{
53-
var options = new T {ImageType = ImageType.PNG};
54-
var json = ClSerializer.Serialize(options);
55-
Assert.AreEqual("{\"imageType\":\"PNG\"}", json);
56-
}
57-
58-
[TestMethod]
59-
public void Serialize_ImageTypeSVG()
60-
{
61-
var options = new T {ImageType = ImageType.SVG};
62-
var json = ClSerializer.Serialize(options);
63-
Assert.AreEqual("{\"imageType\":\"SVG\"}", json);
64-
}
65-
66-
[TestMethod]
67-
public void Serialize_ImageTypeTIFF()
68-
{
69-
var options = new T {ImageType = ImageType.TIFF};
70-
var json = ClSerializer.Serialize(options);
71-
Assert.AreEqual("{\"imageType\":\"TIFF\"}", json);
39+
Assert.AreEqual("{\"imageType\":\"webp\"}", json);
7240
}
7341
}
7442
}
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net5.0</TargetFramework>
4+
<TargetFramework>net6.0</TargetFramework>
55
<RootNamespace>cloudlayerio_dotnet_test</RootNamespace>
66

77
<IsPackable>false</IsPackable>
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4"/>
12-
<PackageReference Include="Moq" Version="4.16.1"/>
13-
<PackageReference Include="MSTest.TestAdapter" Version="2.2.3"/>
14-
<PackageReference Include="MSTest.TestFramework" Version="2.2.3"/>
15-
<PackageReference Include="coverlet.collector" Version="3.0.2"/>
11+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
12+
<PackageReference Include="Moq" Version="4.16.1" />
13+
<PackageReference Include="MSTest.TestAdapter" Version="2.2.3" />
14+
<PackageReference Include="MSTest.TestFramework" Version="2.2.3" />
15+
<PackageReference Include="coverlet.collector" Version="3.0.2" />
1616
</ItemGroup>
1717

1818
<ItemGroup>
19-
<ProjectReference Include="..\cloudlayerio-dotnet\cloudlayerio-dotnet.csproj"/>
19+
<ProjectReference Include="..\cloudlayerio-dotnet\cloudlayerio-dotnet.csproj" />
2020
</ItemGroup>
2121

2222
</Project>

cloudlayerio-dotnet-test/requests-tests/RequestBuilderTests.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ private ISetupSequentialResult<HttpResponseMessage> When()
2929
[TestInitialize]
3030
public void Setup()
3131
{
32-
_fakeHttpMessageHandler = new Mock<FakeHttpMessageHandler> {CallBase = true};
32+
_fakeHttpMessageHandler = new Mock<FakeHttpMessageHandler> { CallBase = true };
3333
_httpClient = new HttpClient(_fakeHttpMessageHandler.Object);
3434
}
3535

@@ -93,7 +93,7 @@ public async Task DataFlowCheck()
9393
public async Task SaveToFileSystem_DataFlowCheck()
9494
{
9595
var fakeFileStream = new FakeFileStorage();
96-
var reqBuilder = new RequestBuilder<UrlToImage>(_httpClient, "", fakeFileStream);
96+
var reqBuilder = new RequestBuilder<UrlToImage>(_httpClient, "", fakeFileStream, ApiEndpointVersion.v2);
9797

9898
var urlToImageParams = new UrlToImage
9999
{
@@ -110,7 +110,7 @@ public async Task SaveToFileSystem_DataFlowCheck()
110110

111111
await rsp.SaveToFilesystem("\\test\test.txt");
112112

113-
var fileStream = (MemoryStream) fakeFileStream.GetFileStream("");
113+
var fileStream = (MemoryStream)fakeFileStream.GetFileStream("");
114114

115115
var fileBytes = fileStream.ToArray();
116116
var decodedText = Encoding.Default.GetString(fileBytes);
@@ -122,7 +122,8 @@ public async Task ApiKeyHeader_Exists()
122122
{
123123
var fakeFileStream = new FakeFileStorage();
124124
var testKey = "test-key-1";
125-
var reqBuilder = new RequestBuilder<UrlToImage>(_httpClient, testKey, fakeFileStream);
125+
var reqBuilder =
126+
new RequestBuilder<UrlToImage>(_httpClient, testKey, fakeFileStream, ApiEndpointVersion.v2);
126127

127128
var urlToImageParams = new UrlToImage
128129
{
@@ -144,7 +145,8 @@ public async Task UrlToImage_SendCalledOnce()
144145
var fakeFileStream = new FakeFileStorage();
145146
var testKey = "test-key-1";
146147

147-
var reqBuilder = new RequestBuilder<UrlToImage>(_httpClient, testKey, fakeFileStream);
148+
var reqBuilder =
149+
new RequestBuilder<UrlToImage>(_httpClient, testKey, fakeFileStream, ApiEndpointVersion.v2);
148150

149151
var urlToImageParams = new UrlToImage
150152
{
@@ -165,7 +167,7 @@ public async Task UrlToPdf_SendCalledOnce()
165167
var fakeFileStream = new FakeFileStorage();
166168
var testKey = "test-key-1";
167169

168-
var reqBuilder = new RequestBuilder<UrlToPdf>(_httpClient, testKey, fakeFileStream);
170+
var reqBuilder = new RequestBuilder<UrlToPdf>(_httpClient, testKey, fakeFileStream, ApiEndpointVersion.v2);
169171

170172
var urlToPdfParams = new UrlToPdf
171173
{
@@ -186,7 +188,8 @@ public async Task HtmlToImage_SendCalledOnce()
186188
var fakeFileStream = new FakeFileStorage();
187189
var testKey = "test-key-1";
188190

189-
var reqBuilder = new RequestBuilder<HtmlToImage>(_httpClient, testKey, fakeFileStream);
191+
var reqBuilder =
192+
new RequestBuilder<HtmlToImage>(_httpClient, testKey, fakeFileStream, ApiEndpointVersion.v2);
190193

191194
var htmlToImageParams = new HtmlToImage();
192195
htmlToImageParams.SetHtml("<h1>This is a test</h1>");
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net5.0</TargetFramework>
4+
<TargetFramework>net6.0</TargetFramework>
55
<RootNamespace>cloudlayerio_dotnet</RootNamespace>
66
<Authors>cloudlayer.io</Authors>
77
<Description>cloudlayerio (https://cloudlayer.io) - API Library for easy access to our REST based API services using the c# language. Take screenshots of webpages, convert HTML to PDFs or Images, etc.</Description>
88
<PackageTags>api, screenshot, converter, sdk, pdf-converter pdf-generation, webpage-screenshot, pdf-generator-api, webpage-capture</PackageTags>
99
<RepositoryUrl>https://github.com/cloudlayerio/</RepositoryUrl>
1010
<PackageProjectUrl>https://github.com/cloudlayerio/</PackageProjectUrl>
1111
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
12-
<PackageVersion>1.0.1</PackageVersion>
12+
<PackageVersion>2.0.0</PackageVersion>
1313
</PropertyGroup>
1414

1515
</Project>

cloudlayerio-dotnet/core/ClSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public static string Serialize<T>(T obj)
1010
{
1111
var json = JsonSerializer.Serialize(obj, new JsonSerializerOptions
1212
{
13-
IgnoreNullValues = true,
13+
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
1414
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
1515
Converters =
1616
{

cloudlayerio-dotnet/core/ImageTypeEnumConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public override ImageType Read(ref Utf8JsonReader reader, Type typeToConvert, Js
1414

1515
public override void Write(Utf8JsonWriter writer, ImageType value, JsonSerializerOptions options)
1616
{
17-
writer.WriteStringValue(value.ToString().ToUpper());
17+
writer.WriteStringValue(value.ToString().ToLower());
1818
}
1919
}
2020
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace cloudlayerio_dotnet.requests;
2+
3+
public enum ApiEndpointVersion
4+
{
5+
v1,
6+
v2
7+
}

cloudlayerio-dotnet/requests/RequestBuilder.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,20 @@ namespace cloudlayerio_dotnet.requests
1111
{
1212
public class RequestBuilder<T> where T : class, IEndpointPath
1313
{
14-
private const string ApiEndpoint = "https://api.cloudlayer.io/v1/";
14+
private readonly ApiEndpointVersion _apiEndpointVersion;
15+
private const string ApiEndpoint = $"https://api.cloudlayer.io";
1516
private readonly HttpClient _httpClient;
1617
private readonly IStorage _storage;
1718

1819
public RequestBuilder(HttpClient httpClient, string apiKey)
19-
: this(httpClient, apiKey, new FilesystemStorage())
20+
: this(httpClient, apiKey, new FilesystemStorage(), ApiEndpointVersion.v2)
2021
{
2122
}
2223

23-
public RequestBuilder(HttpClient httpClient, string apiKey, IStorage storage)
24+
public RequestBuilder(HttpClient httpClient, string apiKey, IStorage storage,
25+
ApiEndpointVersion apiEndpointVersion)
2426
{
27+
_apiEndpointVersion = apiEndpointVersion;
2528
_httpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient));
2629
_storage = storage;
2730

@@ -38,16 +41,19 @@ public async Task<ReturnResponse> SendRequest(T obj)
3841
{
3942
CheckArguments(obj);
4043

41-
var url = new Uri(new Uri(ApiEndpoint), obj.Path).ToString();
44+
// var apiUrl = new Uri(ApiEndpoint);
45+
// var versionUrl = new Uri(apiUrl, _apiEndpointVersion.ToString());
46+
// var fullUrl =
4247

48+
var fullUrl = $"{ApiEndpoint}/{_apiEndpointVersion.ToString()}/{obj.Path}";
4349
try
4450
{
4551
using var content = CreateHttpContent(obj);
46-
var response = await _httpClient.PostAsync(url, content);
52+
var response = await _httpClient.PostAsync(fullUrl, content);
4753

4854
var returnResponse = MapRateLimits(response);
4955

50-
if ((int) response.StatusCode >= 200 && (int) response.StatusCode <= 299)
56+
if ((int)response.StatusCode >= 200 && (int)response.StatusCode <= 299)
5157
return await CreateReturnResponseSuccess(returnResponse, response);
5258

5359
return await CreateReturnResponseFailure(returnResponse, response);
@@ -70,7 +76,7 @@ private HttpContent CreateHttpContent(T obj)
7076
var stringContent = new StringContent(json);
7177
stringContent.Headers.Add("Content-Disposition", "form-data; name=\"json\"");
7278
content.Add(stringContent);
73-
79+
7480
var fileName = Path.GetFileName(fileOptions.FilePath);
7581
var streamContent = new StreamContent(_storage.GetFileStream(fileOptions.FilePath));
7682
streamContent.Headers.Add("Content-Type", "application/octet-stream");
@@ -117,7 +123,7 @@ private async Task<ReturnResponse> CreateReturnResponseFailure(ReturnResponse re
117123

118124
return returnResponse;
119125
}
120-
catch (Exception e)
126+
catch (Exception)
121127
{
122128
return CreateReturnResponse(errorJson);
123129
}
@@ -142,6 +148,7 @@ private static async Task<ReturnResponse> CreateReturnResponseSuccess(ReturnResp
142148
{
143149
returnResponse.Stream = await response.Content.ReadAsStreamAsync();
144150
returnResponse.IsOk = true;
151+
returnResponse.ContentType = response.Content.Headers.ContentType?.MediaType;
145152
return returnResponse;
146153
}
147154

0 commit comments

Comments
 (0)