<
From version < 1.2 >
edited by Roelof Zwaan
on 2021/11/22 10:41
To version < 6.8 >
edited by Robert Jan Daams
on 2022/08/24 15:17
>
Change comment: There is no comment for this version

Summary

Details

Page properties
Parent
... ... @@ -1,1 +1,1 @@
1 -Implementatie dcoumentatie.WebHome
1 +Implementation documentation.WebHome
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.RoelofZwaan
1 +XWiki.RjDaams
Content
... ... @@ -8,10 +8,34 @@
8 8  )))
9 9  )))
10 10  
11 +{{box title="**Contents**"}}
12 +[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||height="15" role="presentation" title="Click and drag to move" width="15"]]
13 +{{/box}}
14 +
11 11  (% class="row" %)
12 12  (((
13 13  (% class="col-xs-12 col-sm-8" %)
14 14  (((
19 +== Changelog ==
20 +
21 +=== Update 2022-08-23 ===
22 +
23 +As part of on-going efforts to improve performance and scalability, we have introduced a dedicated version of DataWS named DataWSExternals.  This new service should be used for external API consumers.
24 +
25 +| |**URL**|
26 +|**Old**|{{code language="none"}}https://web.terraindex.com/DataWS/{{/code}}|(((
27 +[[https:~~/~~/web.terraindex.com/DataWS/ITWDataRestService_V1_0/GetProjectsJSON>>https://web.terraindex.com/DataWS/ITWDataRestService_V1_0/GetProjectsJSON]]
28 +
29 +[[https:~~/~~/web.terraindex.com/DataWS/ITWImportExportServiceASMX_V1_0.asmx>>https://web.terraindex.com/DataWSExternals/ITWImportExportServiceASMX_V1_0.asmx]]
30 +)))
31 +|**New**|​{{code language="none"}}https://web.terraindex.com/DataWSExternals/{{/code}}|(((
32 +[[https:~~/~~/web.terraindex.com/DataWSExternals/ITWDataRestService_V1_0/GetProjectsJSON>>https://web.terraindex.com/DataWSExternals/ITWDataRestService_V1_0/GetProjectsJSON]]
33 +
34 +[[https:~~/~~/web.terraindex.com/DataWSExternals/ITWImportExportService_V1_0.svc>>https://web.terraindex.com/DataWSExternals/ITWImportExportService_V1_0.svc]]
35 +)))
36 +
37 +== ==
38 +
15 15  == 1. Retreive all changed project from TerraIndex ==
16 16  
17 17  To retreive all changed project from the TerraIndex database since a specific timestamp, there is a webservice call you can do. This will return all project rows that have changes since the timestamp you send within the request.
... ... @@ -18,7 +18,7 @@
18 18  This way you only download projects that have changes, and it will not request project that are not needed, so it won’t keep our servers busy with exports that are not necessary.
19 19  
20 20  To start connecting this webservice, you should use this URL:
21 -[[https:~~/~~/web.terraindex.com/DataWS/ITWDataRestService_V1_0/GetProjectsJSON>>url:https://web.terraindex.com/DataWS/ITWDataRestService_V1_0/GetProjectsJSON]]
45 +[[https:~~/~~/web.terraindex.com/DataWSExternals/ITWDataRestService_V1_0/GetProjectsJSON>>https://web.terraindex.com/DataWSExternals/ITWDataRestService_V1_0/GetProjectsJSON]]
22 22  
23 23  Fill the **Body **of a **POST **HTTP call with:
24 24  
... ... @@ -32,7 +32,7 @@
32 32   "Language": "en"
33 33   },
34 34   "LanguageCode": "en",
35 - "WebserviceVersion": 1,
59 + "WebserviceVersion": "1.0",
36 36   "SearchFilter": "",
37 37   "ArchiveID": 0,
38 38   "PageSize": 30,
... ... @@ -234,11 +234,12 @@
234 234  == 2. Retreive the project export from TerraIndex ==
235 235  
236 236  To request the export from TerraIndex we have a SOAP webservice. This webservice is called the ExportService, and it will provide a full project in TerraIndex Format.
237 -The format of the projectfile is documentated here: [[Documentation TerraIndex Export format - dsFieldProject.xsd>>Implementatie dcoumentatie.Documentation TerraIndex Export format - dsFieldProject\.xsd.WebHome]]
261 +The format of the projectfile is documentated here: [[Documentation TerraIndex Export format - dsFieldProject.xsd>>Implementation documentation.Documentation TerraIndex Export format - dsFieldProject\.xsd.WebHome]]
238 238  
239 -To start connecting this webservice, you should use this URL of the Import Export Webservice:
240 -[[https:~~/~~/web.terraindex.com/DataWS/ITWImportExportServiceASMX_V1_0.asmx>>url:https://web.terraindex.com/DataWS/ITWImportExportServiceASMX_V1_0.asmx]]
263 +To start connecting this webservice, you should use this URL of the Import Export Webservice:
241 241  
265 +[[https:~~/~~/web.terraindex.com/DataWSExternals/ITWImportExportService_V1_0.svc>>https://web.terraindex.com/DataWSExternals/ITWImportExportService_V1_0.svc]]
266 +
242 242  With this URL many IDE’s can create a proxy for you, just by providing the URL. Once this proxy is created, you will have a few classes looking like the call in the image below.
243 243  
244 244  [[image:image-20200108-123431.png]]
... ... @@ -252,12 +252,15 @@
252 252  Also fill the license and the applicationCode. //(These two fields can be requested at the TerraIndex Servicedesk.)//
253 253  5; Fill the **ExportType **'**Export_FIELD_XML_v1_0_0**’. This export corresponds with dsFieldProject.xsd and is the best XML to connect TI with.
254 254  Create at least create 2 parameters as in the image. Beacause 2 parameters are needed.
280 +//If JSON is prevered use: ExportType = 'Export_FIELD_JSON_v1_0_0'//
255 255  6; Fill the parameter with the FileName.
256 256  7; Fill the parameter with **projectID**. Instead of ‘ProjectID' it’s also possible to fill the parameter ‘ProjectCode'.
257 257  8; Send the request and wait for the reponse. In response field ‘ResultCode’ should be 'SUCCES’ when it all went OK. If not it will tell what went wrong.
258 258  9; The response field 'Filecontent’is filled if it went OK, and it contains XML you can serialize.
259 -\\*Username and password are known by each TI user and the application manager of your company can create new usernames.
285 +10; an extra parameter is added calles: **UseZipStream**. The result data is default Base64 encoded, if you add UseZipStream = true, the result string is GZIPSTREAMED Base64 encoded. **At the end of this page, we have added an class as code, to parse the base64 or ZIPStream Base64 to a normal string.**
286 +*Username and password are known by each TI user and the application manager of your company can create new usernames.
260 260  
288 +
261 261  **EXAMPLE CODE**
262 262  
263 263  ExportType:
... ... @@ -299,11 +299,76 @@
299 299  
300 300  Example call
301 301  
302 -<soapenv:Envelope xmlns:soapenv="http:~/~/schemas.xmlsoap.org/soap/envelope/" xmlns:itw="https:~/~/wsterraindex.terraindex.com/ITWorks.TerraIndex/"> <soapenv:Header/> <soapenv:Body> <itw:Export> <itw:request> <itw:AuthorisationRequest> <itw:Username>USERNAME</itw:Username> <itw:Password>PASSWORD</itw:Password> <itw:Licensenumber>LICENSE</itw:Licensenumber> <itw:ApplicationCode>APPCODE</itw:ApplicationCode> </itw:AuthorisationRequest> <itw:WebserviceVersion>1.0</itw:WebserviceVersion> <itw:LanguageCode>nld</itw:LanguageCode> <itw:UseCompression>true</itw:UseCompression> <itw:TypeOfExport>Export_FIELD_XML_v1_0_0</itw:TypeOfExport> <itw:Parameters> <itw:ExportParameter> <itw:ParameterType>FileName</itw:ParameterType> <itw:StringValue>Export</itw:StringValue> </itw:ExportParameter> <itw:ExportParameter> <itw:ParameterType>projectID</itw:ParameterType> <itw:FloatValue>917</itw:FloatValue> </itw:ExportParameter> ~-~-~-~-- <itw:ExportParameter> <itw:ParameterType>ProjectCode</itw:ParameterType> <itw:StringValue>202020</itw:StringValue> </itw:ExportParameter> ~-~-~-~- </itw:Parameters> <itw:LogFormat>XML</itw:LogFormat> <itw:UseZipStream>true</itw:UseZipStream> </itw:request> </itw:Export> </soapenv:Body></soapenv:Envelope>
330 +{{code language="none" layout="LINENUMBERS"}}
331 +<soapenv:Envelope
332 + xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
333 + xmlns:itw="https://wsterraindex.terraindex.com/ITWorks.TerraIndex/">
334 + <soapenv:Header></soapenv:Header>
335 + <soapenv:Body>
336 + <itw:Export>
337 + <itw:request>
338 + <itw:AuthorisationRequest>
339 + <itw:Username>USERNAME</itw:Username>
340 + <itw:Password>PASSWORD</itw:Password>
341 + <itw:Licensenumber>LICENSE</itw:Licensenumber>
342 + <itw:ApplicationCode>APPCODE</itw:ApplicationCode>
343 + </itw:AuthorisationRequest>
344 + <itw:WebserviceVersion>1.0</itw:WebserviceVersion>
345 + <itw:LanguageCode>nld</itw:LanguageCode>
346 + <itw:UseCompression>true</itw:UseCompression>
347 + <itw:TypeOfExport>Export_FIELD_XML_v1_0_0</itw:TypeOfExport>
348 + <itw:Parameters>
349 + <itw:ExportParameter>
350 + <itw:ParameterType>FileName</itw:ParameterType>
351 + <itw:StringValue>Export</itw:StringValue>
352 + </itw:ExportParameter>
353 + <itw:ExportParameter>
354 + <itw:ParameterType>projectID</itw:ParameterType>
355 + <itw:FloatValue>917</itw:FloatValue>
356 + </itw:ExportParameter> -----
357 + <itw:ExportParameter>
358 + <itw:ParameterType>ProjectCode</itw:ParameterType>
359 + <itw:StringValue>202020</itw:StringValue>
360 + </itw:ExportParameter> ----
361 + </itw:Parameters>
362 + <itw:LogFormat>XML</itw:LogFormat>
363 + <itw:UseZipStream>true</itw:UseZipStream>
364 + </itw:request>
365 + </itw:Export>
366 + </soapenv:Body>
367 +</soapenv:Envelope>
368 +{{/code}}
303 303  
304 304  Example response:
305 305  
306 -<soap:Envelope xmlns:soap="http:~/~/schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http:~/~/www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http:~/~/www.w3.org/2001/XMLSchema"> <soap:Body> <ExportResponse xmlns="https:~/~/wsterraindex.terraindex.com/ITWorks.TerraIndex/"> <ExportResult> <ResultCode>Export_Succes</ResultCode> <TypeOfExport>Export_TI_v1_0_0</TypeOfExport> <Files> <File> <FileName>917.xml</FileName> <TypeOfFile>Field_XML_Compressed</TypeOfFile> <FileContent>H4sIAAAAAAAEAFWRuZaqQABEP4hAGnAGggm6odlREFkkA2WRRRCBxv76YeYF70yFVXUqqBvgl4KQBzcZ8Aho2iqxdhxDSPDmNGjz9Z/weMa8/aimTAUeF42KgxRRzd3YaGfdXtvECEBvWafSNwf+dOsjVXpZUzs+lw/p3gBhuXQ5S8T3MdIBlxUQEam+LOVgVo4D8w4c2E8pEgp3haewcpQx1KQ41Z8DKWv16seaDLp3GABLuIKXK5Ucq31EfSXm0172YvG87hcbayYGdB1t0CbcuueLpU5UawgHSitFr564Aet5LeegD0/tocZDTvuIuc9Ja0tDFt/m7kZnomdVJc+2SkqBGXmTdPiiPzJa2OznLkX67p2PCNM7iHU11QbIilVkMDBVd0J8gK4Ams6ycJQagnww/SaxuiZ/EdS6DZ0cf17BIhUq87CSkQvxat/2dEG1xu94BoaeT7C8XR38/C1DZbpygwfW+gk8Z+Mgm3DDhAj8r6099Rj+5YNs5F3+5R5EUPmd6+EvYvj1Dd8o9lLwAQAA</FileContent> </File> <File> <FileName>ProjectInfo.xml</FileName> <TypeOfFile>Field_XML_Compressed</TypeOfFile> <FileContent>H4sIAAAAAAAEAI1Qy5JDQAD8IAdj1/M4hJggDBnEbTxDsV7BxtdvNqm9bx+6urq7+tBEnw+qiuETCLrcTlst9Pajtb0soj7JeynztNIubHK9XZJOXoojN8dXpaxltOlOwAZzK033Edx7HWT1ZFVYNljpsT7iCVDbxb5tlmw3GhV7vgty5jqiGzWSYEvL7RCIQifzchIoMJnHz+fO17C4JAwA0hNRb247SR1ba8OunCV4ralK1rjwBhUAJ2pihopeuxqXIUecePETLhx8zT6IZX5GzafC0XHTrauISeyIM2+2g1PzEymRZrTtglKlsFYHXDKmoYTp+jw1zNDyAFZOTN9XHkuNGmU33905uipWMTsjm2ccm6+bxqk2xAjCf/z3BwS1j+qVqTjrlDGJziCIhC59CHwafeNgI8d3U4cQQ+VXSdXb+QGLuAuvrAEAAA==</FileContent> </File> </Files> </ExportResult> </ExportResponse> </soap:Body></soap:Envelope>
372 +{{code language="none"}}
373 +<soap:Envelope
374 + xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
375 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
376 + xmlns:xsd="http://www.w3.org/2001/XMLSchema">
377 + <soap:Body>
378 + <ExportResponse
379 + xmlns="https://wsterraindex.terraindex.com/ITWorks.TerraIndex/">
380 + <ExportResult>
381 + <ResultCode>Export_Succes</ResultCode>
382 + <TypeOfExport>Export_TI_v1_0_0</TypeOfExport>
383 + <Files>
384 + <File>
385 + <FileName>917.xml</FileName>
386 + <TypeOfFile>Field_XML_Compressed</TypeOfFile>
387 + <FileContent>H4sIAAAAAAAEAFWRuZaqQABEP4hAGnAGggm6odlREFkkA2WRRRCBxv76YeYF70yFVXUqqBvgl4KQBzcZ8Aho2iqxdhxDSPDmNGjz9Z/weMa8/aimTAUeF42KgxRRzd3YaGfdXtvECEBvWafSNwf+dOsjVXpZUzs+lw/p3gBhuXQ5S8T3MdIBlxUQEam+LOVgVo4D8w4c2E8pEgp3haewcpQx1KQ41Z8DKWv16seaDLp3GABLuIKXK5Ucq31EfSXm0172YvG87hcbayYGdB1t0CbcuueLpU5UawgHSitFr564Aet5LeegD0/tocZDTvuIuc9Ja0tDFt/m7kZnomdVJc+2SkqBGXmTdPiiPzJa2OznLkX67p2PCNM7iHU11QbIilVkMDBVd0J8gK4Ams6ycJQagnww/SaxuiZ/EdS6DZ0cf17BIhUq87CSkQvxat/2dEG1xu94BoaeT7C8XR38/C1DZbpygwfW+gk8Z+Mgm3DDhAj8r6099Rj+5YNs5F3+5R5EUPmd6+EvYvj1Dd8o9lLwAQAA</FileContent>
388 + </File>
389 + <File>
390 + <FileName>ProjectInfo.xml</FileName>
391 + <TypeOfFile>Field_XML_Compressed</TypeOfFile>
392 + <FileContent>H4sIAAAAAAAEAI1Qy5JDQAD8IAdj1/M4hJggDBnEbTxDsV7BxtdvNqm9bx+6urq7+tBEnw+qiuETCLrcTlst9Pajtb0soj7JeynztNIubHK9XZJOXoojN8dXpaxltOlOwAZzK033Edx7HWT1ZFVYNljpsT7iCVDbxb5tlmw3GhV7vgty5jqiGzWSYEvL7RCIQifzchIoMJnHz+fO17C4JAwA0hNRb247SR1ba8OunCV4ralK1rjwBhUAJ2pihopeuxqXIUecePETLhx8zT6IZX5GzafC0XHTrauISeyIM2+2g1PzEymRZrTtglKlsFYHXDKmoYTp+jw1zNDyAFZOTN9XHkuNGmU33905uipWMTsjm2ccm6+bxqk2xAjCf/z3BwS1j+qVqTjrlDGJziCIhC59CHwafeNgI8d3U4cQQ+VXSdXb+QGLuAuvrAEAAA==</FileContent>
393 + </File>
394 + </Files>
395 + </ExportResult>
396 + </ExportResponse>
397 + </soap:Body>
398 +</soap:Envelope>
399 +{{/code}}
307 307  
308 308  
309 309  == Zip Stream class ==
... ... @@ -310,16 +310,137 @@
310 310  
311 311  If needed, this is the Zip Stream class you can use to extract the zipstream as used above:
312 312  
313 -~/~// <summary> ~/~// Helper class for compress en decompress of file data ~/~// </summary> public static class ZipStreamHelper { #region Compress and encode ~/~// <summary> ~/~// Comprimeer een string en geeft deze terug in Base64 string. ~/~// </summary> ~/~// <param name="content">filecontent</param> ~/~// <returns>gecomprimeerde string</returns> public static string CompressToBase64String(string content) { ~/~/string to byte[] byte[] contentArray = stringToByteArray(content); ~/~/ Compress byte[] compressed = Compress(contentArray); return base64_encode(compressed); } ~/~// <summary> ~/~// Zet een string om naar een ByteArray ~/~// </summary> ~/~// <param name="content">filecontent</param> ~/~// <returns>ByteArray</returns> public static byte[] stringToByteArray(string content) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); return encoding.GetBytes(content); } ~/~// <summary> ~/~// comprimeer een ByteArray ~/~// </summary> ~/~// <param name="data">filedata als ByteArray</param> ~/~// <returns>gecomprimeerde ByteArray</returns> public static byte[] Compress(byte[] data) { using (var compressedStream = new MemoryStream()) using (var zipStream = new GZipStream(compressedStream, CompressionMode.Compress)) { zipStream.Write(data, 0, data.Length); zipStream.Close(); return compressedStream.ToArray(); } } ~/~// <summary> ~/~// Zet een ByteArray om naar een Base64 string ~/~// </summary> ~/~// <param name="data">gecomprimeerde ByteArray</param> ~/~// <returns>Base 64 string</returns> public static string base64_encode(byte[] data) { if (data == null) return string.Empty; return Convert.ToBase64String(data); } ~/~// <summary> ~/~// Zet een string om naar een Base64 string ~/~// </summary> ~/~// <param name="data">string</param> ~/~// <returns>Base 64 string</returns> public static string string_base64_encode(string data) { if (string.IsNullOrEmpty(data)) return string.Empty; ~/~/string to byte[] byte[] contentArray = stringToByteArray(data); return base64_encode(contentArray); } #endregion #region Decompress and decode ~/~/ Decode and decompress ~/~// <summary> ~/~// Decomprimeer een Base64 string naar een string ~/~// </summary> ~/~// <param name="contentBase64">GZIP Base64 string</param> ~/~// <returns>string</returns> public static string DecompressBase64StringToString(string contentBase64) { ~/~/ Decompress byte[] decoded = base64_decode(contentBase64); byte[] decompressed = Decompress(decoded); return byteArrayTostring(decompressed); } ~/~// <summary> ~/~// Zet een ByteArray om in een normale string ~/~// </summary> ~/~// <param name="data">ByteArray</param> ~/~// <returns>string</returns> public static string byteArrayTostring(byte[] data) { System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding(); return enc.GetString(data); } ~/~// <summary> ~/~// Zet een Base64 string om naar een ByteArray ~/~// </summary> ~/~// <param name="encodedData">Base64 string</param> ~/~// <returns>gecomprimeerde ByteArray</returns> public static byte[] base64_decode(string encodedData) { byte[] encodedDataAsBytes = Convert.FromBase64String(encodedData); return encodedDataAsBytes; } ~/~// <summary> ~/~// Zet een gecomprimeerde ByteArray om in een ByteArray ~/~// </summary> ~/~// <param name="data">gecomprimeerde ByteArray</param> ~/~// <returns>ByteArray (gedecomprimeerd)</returns> public static byte[] Decompress(byte[] data) { using (var compressedStream = new MemoryStream(data)) using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress)) using (var resultStream = new MemoryStream()) { var buffer = new byte[4096]; int read; while ((read = zipStream.Read(buffer, 0, buffer.Length)) > 0) { resultStream.Write(buffer, 0, read); } return resultStream.ToArray(); } } #endregion }
406 +{{code language="Csharp" layout="LINENUMBERS"}}
407 +/// <summary>
408 +/// Helper class for compress en decompress of file data
409 +/// </summary>
410 +public static class ZipStreamHelper {
411 + #region Compress and encode
412 + /// <summary>
413 + /// Comprimeer een string en geeft deze terug in Base64 string.
414 + /// </summary>
415 + /// <param name="content">filecontent</param>
416 + /// <returns>gecomprimeerde string</returns>
417 + public static string CompressToBase64String(string content) {
418 + //string to byte[]
419 + byte[] contentArray = stringToByteArray(content);
420 + // Compress
421 + byte[] compressed = Compress(contentArray);
422 + return base64_encode(compressed);
423 + }
424 +
425 + /// <summary>
426 + /// Zet een string om naar een ByteArray
427 + /// </summary>
428 + /// <param name="content">filecontent</param>
429 + /// <returns>ByteArray</returns>
430 + public static byte[] stringToByteArray(string content) {
431 + System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
432 + return encoding.GetBytes(content);
433 + }
434 +
435 + /// <summary>
436 + /// comprimeer een ByteArray
437 + /// </summary>
438 + /// <param name="data">filedata als ByteArray</param>
439 + /// <returns>gecomprimeerde ByteArray</returns>
440 + public static byte[] Compress(byte[] data) {
441 + using(var compressedStream = new MemoryStream())
442 + using(var zipStream = new GZipStream(compressedStream, CompressionMode.Compress)) {
443 + zipStream.Write(data, 0, data.Length);
444 + zipStream.Close();
445 + return compressedStream.ToArray();
446 + }
447 + }
448 +
449 + /// <summary>
450 + /// Zet een ByteArray om naar een Base64 string
451 + /// </summary>
452 + /// <param name="data">gecomprimeerde ByteArray</param>
453 + /// <returns>Base 64 string</returns>
454 + public static string base64_encode(byte[] data) {
455 + if (data == null)
456 + return string.Empty;
457 + return Convert.ToBase64String(data);
458 + }
459 +
460 + /// <summary>
461 + /// Zet een string om naar een Base64 string
462 + /// </summary>
463 + /// <param name="data">string</param>
464 + /// <returns>Base 64 string</returns>
465 + public static string string_base64_encode(string data) {
466 + if (string.IsNullOrEmpty(data))
467 + return string.Empty;
468 +
469 + //string to byte[]
470 + byte[] contentArray = stringToByteArray(data);
471 + return base64_encode(contentArray);
472 + }
473 + #endregion
474 +
475 + #region Decompress and decode
476 + // Decode and decompress
477 + /// <summary>
478 + /// Decomprimeer een Base64 string naar een string
479 + /// </summary>
480 + /// <param name="contentBase64">GZIP Base64 string</param>
481 + /// <returns>string</returns>
482 + public static string DecompressBase64StringToString(string contentBase64) {
483 + // Decompress
484 + byte[] decoded = base64_decode(contentBase64);
485 + byte[] decompressed = Decompress(decoded);
486 +
487 + return byteArrayTostring(decompressed);
488 + }
489 +
490 + /// <summary>
491 + /// Zet een ByteArray om in een normale string
492 + /// </summary>
493 + /// <param name="data">ByteArray</param>
494 + /// <returns>string</returns>
495 + public static string byteArrayTostring(byte[] data) {
496 + System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
497 + return enc.GetString(data);
498 + }
499 +
500 + /// <summary>
501 + /// Zet een Base64 string om naar een ByteArray
502 + /// </summary>
503 + /// <param name="encodedData">Base64 string</param>
504 + /// <returns>gecomprimeerde ByteArray</returns>
505 + public static byte[] base64_decode(string encodedData) {
506 + byte[] encodedDataAsBytes = Convert.FromBase64String(encodedData);
507 + return encodedDataAsBytes;
508 + }
509 +
510 + /// <summary>
511 + /// Zet een gecomprimeerde ByteArray om in een ByteArray
512 + /// </summary>
513 + /// <param name="data">gecomprimeerde ByteArray</param>
514 + /// <returns>ByteArray (gedecomprimeerd)</returns>
515 + public static byte[] Decompress(byte[] data) {
516 + using(var compressedStream = new MemoryStream(data))
517 + using(var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress))
518 + using(var resultStream = new MemoryStream()) {
519 + var buffer = new byte[4096];
520 + int read;
521 +
522 + while ((read = zipStream.Read(buffer, 0, buffer.Length)) > 0) {
523 + resultStream.Write(buffer, 0, read);
524 + }
525 +
526 + return resultStream.ToArray();
527 + }
528 + }
529 + #endregion
530 +}
531 +{{/code}}
314 314  )))
315 315  
316 316  
317 317  (% class="col-xs-12 col-sm-4" %)
318 318  (((
319 -{{box title="**Contents**"}}
320 -{{toc/}}
321 -{{/box}}
322 -
323 323  
324 324  )))
325 325  )))
TerraIndex
asd