From d307d54de33782004bc16785bf14a8787421893d Mon Sep 17 00:00:00 2001 From: Andrey Kaferi Date: Tue, 26 Jun 2018 13:56:41 +0300 Subject: [PATCH 1/2] Developed Java SDK 18.5.0 --- .gitignore | 26 + .swagger-codegen-ignore | 29 + .swagger-codegen/VERSION | 1 + .travis.yml | 32 + LICENSE | 21 + README.md | 111 +- build.gradle | 79 + build.sbt | 21 + gradle.properties | 18 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53639 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 178 + gradlew.bat | 90 + pom.xml | 263 + settings.gradle | 19 + setup.json | 5 + src/main/AndroidManifest.xml | 3 + .../aspose/asposecloudpdf/ApiCallback.java | 71 + .../com/aspose/asposecloudpdf/ApiClient.java | 1086 + .../aspose/asposecloudpdf/ApiException.java | 100 + .../aspose/asposecloudpdf/ApiResponse.java | 68 + .../aspose/asposecloudpdf/Configuration.java | 48 + .../GzipRequestInterceptor.java | 90 + .../java/com/aspose/asposecloudpdf/JSON.java | 370 + .../java/com/aspose/asposecloudpdf/Pair.java | 61 + .../asposecloudpdf/ProgressRequestBody.java | 86 + .../asposecloudpdf/ProgressResponseBody.java | 85 + .../com/aspose/asposecloudpdf/StringUtil.java | 64 + .../com/aspose/asposecloudpdf/api/PdfApi.java | 19074 ++++++++++++++++ .../asposecloudpdf/model/Annotation.java | 223 + .../model/AnnotationResponse.java | 106 + .../asposecloudpdf/model/Annotations.java | 116 + .../model/AnnotationsResponse.java | 106 + .../model/AntialiasingProcessingType.java | 82 + .../asposecloudpdf/model/AppendDocument.java | 149 + .../asposecloudpdf/model/Attachment.java | 245 + .../model/AttachmentResponse.java | 106 + .../asposecloudpdf/model/Attachments.java | 116 + .../model/AttachmentsResponse.java | 106 + .../aspose/asposecloudpdf/model/Color.java | 172 + .../asposecloudpdf/model/ColorDepth.java | 86 + .../asposecloudpdf/model/CompressionType.java | 88 + .../asposecloudpdf/model/DocFormat.java | 82 + .../model/DocRecognitionMode.java | 82 + .../aspose/asposecloudpdf/model/Document.java | 132 + .../model/DocumentPagesResponse.java | 106 + .../model/DocumentPrivilege.java | 333 + .../model/DocumentProperties.java | 117 + .../model/DocumentPropertiesResponse.java | 106 + .../model/DocumentProperty.java | 153 + .../model/DocumentPropertyResponse.java | 106 + .../model/DocumentResponse.java | 139 + .../model/DocumentTextReplaceResponse.java | 106 + .../model/EpubRecognitionMode.java | 84 + .../aspose/asposecloudpdf/model/Field.java | 218 + .../asposecloudpdf/model/FieldResponse.java | 106 + .../asposecloudpdf/model/FieldType.java | 83 + .../aspose/asposecloudpdf/model/Fields.java | 117 + .../asposecloudpdf/model/FieldsResponse.java | 106 + .../model/FontEncodingRules.java | 82 + .../asposecloudpdf/model/FontSavingModes.java | 86 + .../asposecloudpdf/model/FontStyles.java | 82 + .../model/HorizontalAlignment.java | 83 + .../model/HtmlDocumentType.java | 82 + .../model/HtmlMarkupGenerationModes.java | 82 + .../asposecloudpdf/model/HttpStatusCode.java | 126 + .../aspose/asposecloudpdf/model/Image.java | 130 + .../asposecloudpdf/model/ImageResponse.java | 106 + .../aspose/asposecloudpdf/model/Images.java | 117 + .../model/ImagesListRequest.java | 110 + .../asposecloudpdf/model/ImagesResponse.java | 106 + .../model/LettersPositioningMethods.java | 82 + .../asposecloudpdf/model/LineSpacing.java | 82 + .../com/aspose/asposecloudpdf/model/Link.java | 173 + .../asposecloudpdf/model/LinkActionType.java | 85 + .../asposecloudpdf/model/LinkAnnotation.java | 179 + .../model/LinkAnnotationResponse.java | 106 + .../asposecloudpdf/model/LinkAnnotations.java | 116 + .../model/LinkAnnotationsResponse.java | 106 + .../asposecloudpdf/model/LinkElement.java | 115 + .../model/LinkHighlightingMode.java | 84 + .../asposecloudpdf/model/MergeDocuments.java | 113 + .../asposecloudpdf/model/OptimizeOptions.java | 241 + .../com/aspose/asposecloudpdf/model/Page.java | 155 + .../model/PageTextReplaceResponse.java | 106 + .../asposecloudpdf/model/PageWordCount.java | 126 + .../aspose/asposecloudpdf/model/Pages.java | 117 + .../asposecloudpdf/model/Paragraph.java | 369 + .../model/PartsEmbeddingModes.java | 84 + .../aspose/asposecloudpdf/model/PdfAType.java | 82 + .../model/RasterImagesSavingModes.java | 84 + .../asposecloudpdf/model/Rectangle.java | 172 + .../aspose/asposecloudpdf/model/Rotation.java | 83 + .../model/SaaSposeResponse.java | 128 + .../aspose/asposecloudpdf/model/Segment.java | 126 + .../asposecloudpdf/model/ShapeType.java | 84 + .../asposecloudpdf/model/Signature.java | 380 + .../asposecloudpdf/model/SignatureType.java | 82 + .../model/SignatureVerifyResponse.java | 106 + .../asposecloudpdf/model/SplitResult.java | 114 + .../model/SplitResultDocument.java | 105 + .../model/SplitResultResponse.java | 107 + .../aspose/asposecloudpdf/model/Stamp.java | 591 + .../asposecloudpdf/model/StampType.java | 83 + .../asposecloudpdf/model/TextFormat.java | 154 + .../model/TextFormatResponse.java | 106 + .../model/TextHorizontalAlignment.java | 90 + .../aspose/asposecloudpdf/model/TextItem.java | 131 + .../model/TextItemResponse.java | 106 + .../asposecloudpdf/model/TextItems.java | 117 + .../model/TextItemsResponse.java | 106 + .../aspose/asposecloudpdf/model/TextLine.java | 138 + .../aspose/asposecloudpdf/model/TextRect.java | 150 + .../asposecloudpdf/model/TextRects.java | 114 + .../model/TextRectsResponse.java | 106 + .../asposecloudpdf/model/TextReplace.java | 198 + .../model/TextReplaceListRequest.java | 180 + .../model/TextReplaceRequest.java | 107 + .../model/TextReplaceResponse.java | 105 + .../asposecloudpdf/model/TextState.java | 197 + .../model/TiffExportOptions.java | 451 + .../model/VerticalAlignment.java | 86 + .../asposecloudpdf/model/WordCount.java | 114 + .../model/WordCountResponse.java | 107 + .../aspose/asposecloudpdf/model/WrapMode.java | 84 + .../aspose/asposecloudpdf/api/PdfApiTest.java | 3067 +++ testData/33539.jpg | Bin 0 -> 616736 bytes testData/44781.jpg | Bin 0 -> 581741 bytes testData/4pages.epub | Bin 0 -> 12995 bytes testData/4pages.pdf | Bin 0 -> 17209 bytes testData/BlankWithSignature.pdf | Bin 0 -> 28405 bytes testData/Hello world.pdf | Bin 0 -> 7434 bytes testData/HtmlExample1.html | 27 + testData/HtmlWithImage.zip | Bin 0 -> 111218 bytes testData/Koala.jpg | Bin 0 -> 780831 bytes testData/MhtExample.mht | 12752 +++++++++++ testData/PdfWithAcroForm.pdf | Bin 0 -> 26848 bytes testData/PdfWithAnnotations.pdf | Bin 0 -> 141997 bytes testData/PdfWithBookmarks.pdf | Bin 0 -> 105557 bytes testData/PdfWithEmbeddedFiles.pdf | Bin 0 -> 429370 bytes testData/PdfWithImages2.pdf | Bin 0 -> 33671 bytes testData/PdfWithLinks.pdf | Bin 0 -> 166006 bytes testData/PdfWithXfaForm.pdf | Bin 0 -> 16130 bytes testData/Penguins.emf | Bin 0 -> 378840 bytes testData/Penguins.jpg | Bin 0 -> 117444 bytes testData/Simple.svg | 12 + testData/Simple.xps | Bin 0 -> 28037 bytes testData/TexExample.tex | 305 + testData/XslfoExample.xslfo | 246 + testData/butterfly.jpg | Bin 0 -> 128983 bytes testData/marketing.pdf | Bin 0 -> 65172 bytes testData/rusdoc.pdf | Bin 0 -> 293846 bytes testData/template.pcl | Bin 0 -> 4840 bytes testData/template.xml | 1 + testData/test1234.pfx | Bin 0 -> 5596 bytes 155 files changed, 51295 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 .swagger-codegen-ignore create mode 100644 .swagger-codegen/VERSION create mode 100644 .travis.yml create mode 100644 LICENSE create mode 100644 build.gradle create mode 100644 build.sbt create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 pom.xml create mode 100644 settings.gradle create mode 100644 setup.json create mode 100644 src/main/AndroidManifest.xml create mode 100644 src/main/java/com/aspose/asposecloudpdf/ApiCallback.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/ApiClient.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/ApiException.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/ApiResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/Configuration.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/GzipRequestInterceptor.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/JSON.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/Pair.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/ProgressRequestBody.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/ProgressResponseBody.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/StringUtil.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/api/PdfApi.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Annotation.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/AnnotationResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Annotations.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/AnnotationsResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/AntialiasingProcessingType.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/AppendDocument.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Attachment.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/AttachmentResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Attachments.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/AttachmentsResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Color.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/ColorDepth.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/CompressionType.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocFormat.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocRecognitionMode.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Document.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocumentPagesResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocumentPrivilege.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocumentProperties.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocumentPropertiesResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocumentProperty.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocumentPropertyResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocumentResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/DocumentTextReplaceResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/EpubRecognitionMode.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Field.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/FieldResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/FieldType.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Fields.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/FieldsResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/FontEncodingRules.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/FontSavingModes.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/FontStyles.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/HorizontalAlignment.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/HtmlDocumentType.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/HtmlMarkupGenerationModes.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/HttpStatusCode.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Image.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/ImageResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Images.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/ImagesListRequest.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/ImagesResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/LettersPositioningMethods.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/LineSpacing.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Link.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/LinkActionType.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotation.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotationResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotations.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotationsResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/LinkElement.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/LinkHighlightingMode.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/MergeDocuments.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/OptimizeOptions.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Page.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/PageTextReplaceResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/PageWordCount.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Pages.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Paragraph.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/PartsEmbeddingModes.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/PdfAType.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/RasterImagesSavingModes.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Rectangle.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Rotation.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/SaaSposeResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Segment.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/ShapeType.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Signature.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/SignatureType.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/SignatureVerifyResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/SplitResult.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/SplitResultDocument.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/SplitResultResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/Stamp.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/StampType.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextFormat.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextFormatResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextHorizontalAlignment.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextItem.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextItemResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextItems.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextItemsResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextLine.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextRect.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextRects.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextRectsResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextReplace.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextReplaceListRequest.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextReplaceRequest.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextReplaceResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TextState.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/TiffExportOptions.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/VerticalAlignment.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/WordCount.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/WordCountResponse.java create mode 100644 src/main/java/com/aspose/asposecloudpdf/model/WrapMode.java create mode 100644 src/test/java/com/aspose/asposecloudpdf/api/PdfApiTest.java create mode 100644 testData/33539.jpg create mode 100644 testData/44781.jpg create mode 100644 testData/4pages.epub create mode 100644 testData/4pages.pdf create mode 100644 testData/BlankWithSignature.pdf create mode 100644 testData/Hello world.pdf create mode 100644 testData/HtmlExample1.html create mode 100644 testData/HtmlWithImage.zip create mode 100644 testData/Koala.jpg create mode 100644 testData/MhtExample.mht create mode 100644 testData/PdfWithAcroForm.pdf create mode 100644 testData/PdfWithAnnotations.pdf create mode 100644 testData/PdfWithBookmarks.pdf create mode 100644 testData/PdfWithEmbeddedFiles.pdf create mode 100644 testData/PdfWithImages2.pdf create mode 100644 testData/PdfWithLinks.pdf create mode 100644 testData/PdfWithXfaForm.pdf create mode 100644 testData/Penguins.emf create mode 100644 testData/Penguins.jpg create mode 100644 testData/Simple.svg create mode 100644 testData/Simple.xps create mode 100644 testData/TexExample.tex create mode 100644 testData/XslfoExample.xslfo create mode 100644 testData/butterfly.jpg create mode 100644 testData/marketing.pdf create mode 100644 testData/rusdoc.pdf create mode 100644 testData/template.pcl create mode 100644 testData/template.xml create mode 100644 testData/test1234.pfx diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..07c26b1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# exclude jar for gradle wrapper +!gradle/wrapper/*.jar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# build files +**/target +target +.gradle +build + +#IDE +.idea + +local.properties \ No newline at end of file diff --git a/.swagger-codegen-ignore b/.swagger-codegen-ignore new file mode 100644 index 0000000..df01cd2 --- /dev/null +++ b/.swagger-codegen-ignore @@ -0,0 +1,29 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md +docs/*.* +src/main/java/com/aspose/asposecloudpdf/auth/*.* +.gitignore +git_push.sh +README.md + diff --git a/.swagger-codegen/VERSION b/.swagger-codegen/VERSION new file mode 100644 index 0000000..a625450 --- /dev/null +++ b/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.3.1 \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8af5b78 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,32 @@ +# +# Copyright (c) 2018 Aspose.Pdf for Cloud +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +language: java +jdk: + - oraclejdk8 + - oraclejdk7 +before_install: + # ensure gradlew has proper permission + - chmod a+x ./gradlew +script: + # test using maven + - mvn test + # uncomment below to test using gradle + # - gradle test + # uncomment below to test using sbt + # - sbt test diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..fedba38 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018 Aspose.Pdf for Cloud + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index b513781..5203e3d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,109 @@ -# aspose-pdf-cloud-java -Java library for communicating with the Aspose.Pdf for Cloud API +# Aspose.Pdf for Cloud +[Aspose.Pdf for Cloud](https://products.aspose.cloud/pdf/cloud) is a true REST API that enables you to perform a wide range of document processing operations including creation, manipulation, conversion and rendering of Pdf documents in the cloud. + +Our Cloud SDKs are wrappers around REST API in various programming languages, allowing you to process documents in language of your choice quickly and easily, gaining all benefits of strong types and IDE highlights. This repository contains new generation SDKs for Aspose.Pdf for Cloud and examples. + +These SDKs are now fully supported. If you have any questions, see any bugs or have enhancement request, feel free to reach out to us at [Free Support Forums](https://forum.aspose.cloud/c/pdf). + + +## Requirements + +Building the API client library requires [Maven](https://maven.apache.org/) to be installed. + +## Installation + +To install the API client library to your local Maven repository, simply execute: + +```shell +mvn install +``` + +To deploy it to a remote Maven repository instead, configure the settings of the repository and execute: + +```shell +mvn deploy +``` + +Refer to the [official documentation](https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) for more information. + +### Maven users + +Add this dependency to your project's POM: + +```xml + + com.aspose + aspose-cloud-pdf + 18.5.0 + compile + +``` + +### Gradle users + +Add this dependency to your project's build file: + +```groovy +compile "com.aspose:aspose-cloud-pdf:18.5.0" +``` + +### Others + +At first generate the JAR by executing: + + mvn package + +Then manually install the following JARs: + +* target/aspose-cloud-pdf-18.5.0.jar +* target/lib/*.jar + +## Getting Started + +Please follow the [installation](#installation) instruction and execute the following Java code: + +```java + +import com.aspose.asposecloudpdf.*; +import com.aspose.asposecloudpdf.model.*; +import com.aspose.asposecloudpdf.api.PdfApi; + +import java.io.File; +import java.util.*; + +public class PdfApiExample { + + public static void main(String[] args) { + // Get App key and App SID from https://cloud.aspose.com + PdfApi apiInstance = new PdfApi("app_key", "app_sid"); + String name = "name_example"; // String | The document name. + String fieldName = "fieldName_example"; // String | The field name/ + String storage = "storage_example"; // String | The document storage. + String folder = "folder_example"; // String | The document folder. + try { + SaaSposeResponse result = apiInstance.deleteField(name, fieldName, storage, folder); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PdfApi#deleteField"); + e.printStackTrace(); + } + } +} + +``` + +## Unit Tests +Aspose PDF SDK includes a suite of unit tests within the "test" subdirectory. These Unit Tests also serves as examples of how to use the Aspose PDF SDK. + +## Licensing +All Aspose.Pdf for Cloud SDKs are licensed under [MIT License](LICENSE). + +## Resources ++ [**Website**](https://www.aspose.cloud) ++ [**Product Home**](https://products.aspose.cloud/pdf/cloud) ++ [**Documentation**](https://docs.aspose.cloud/display/pdfcloud/Home) ++ [**Free Support Forum**](https://forum.aspose.cloud/c/pdf) ++ [**Paid Support Helpdesk**](https://helpdesk.aspose.cloud/) ++ [**Blog**](https://blog.aspose.cloud/category/aspose-products/aspose-pdf-product-family/) + + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..5c5d915 --- /dev/null +++ b/build.gradle @@ -0,0 +1,79 @@ +/** + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ +apply plugin: 'idea' +apply plugin: 'eclipse' + +group = 'com.aspose' +version = '18.5.0' + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.3.+' + classpath 'com.novoda:bintray-release:0.3.4' + } +} + +repositories { + jcenter() +} + +apply plugin: 'java' +apply plugin: 'maven' +apply plugin: 'com.novoda.bintray-release' + +sourceCompatibility = JavaVersion.VERSION_1_7 +targetCompatibility = JavaVersion.VERSION_1_7 + +install { + repositories.mavenInstaller { + pom.artifactId = 'aspose-cloud-pdf' + } +} + +task execute(type:JavaExec) { + main = System.getProperty('mainClass') + classpath = sourceSets.main.runtimeClasspath +} + + + +dependencies { + compile 'io.swagger:swagger-annotations:1.5.15' + compile 'com.squareup.okhttp:okhttp:2.7.5' + compile 'com.squareup.okhttp:logging-interceptor:2.7.5' + compile 'com.google.code.gson:gson:2.8.1' + compile 'io.gsonfire:gson-fire:1.8.0' + compile 'org.threeten:threetenbp:1.3.5' + testCompile 'junit:junit:4.12' +} + +// bintray-release +// https://github.com/novoda/bintray-release/wiki/Configuration-of-the-publish-closure +publish { + groupId = 'com.aspose' + artifactId = 'aspose-cloud-pdf' + publishVersion = '18.5.0' + desc = 'Aspose.PDF for Cloud is a REST API for creating and editing PDF files. It can also be used to convert PDF files to different formats like DOC, HTML, XPS, TIFF and many more. Aspose.Pdf for Cloud gives you control: create PDFs from scratch or from HTML, XML, template, database, XPS or an image. Render PDFs to image formats such as JPEG, PNG, GIF, BMP, TIFF and many others. Aspose.Pdf for Cloud helps you manipulate elements of a PDF file like text, annotations, watermarks, signatures, bookmarks, stamps and so on. Its REST API also allows you to manage PDF pages by using features like merging, splitting, and inserting. Add images to a PDF file or convert PDF pages to images.' + licences = ['MIT'] + website = 'https://products.aspose.cloud/pdf/cloud' + repository = 'https://github.com/aspose-pdf-cloud/aspose-pdf-cloud.git' +} \ No newline at end of file diff --git a/build.sbt b/build.sbt new file mode 100644 index 0000000..7f737be --- /dev/null +++ b/build.sbt @@ -0,0 +1,21 @@ +lazy val root = (project in file(".")). + settings( + organization := "com.aspose", + name := "aspose-cloud-pdf", + version := "18.5.0", + scalaVersion := "2.11.4", + scalacOptions ++= Seq("-feature"), + javacOptions in compile ++= Seq("-Xlint:deprecation"), + publishArtifact in (Compile, packageDoc) := false, + resolvers += Resolver.mavenLocal, + libraryDependencies ++= Seq( + "io.swagger" % "swagger-annotations" % "1.5.15", + "com.squareup.okhttp" % "okhttp" % "2.7.5", + "com.squareup.okhttp" % "logging-interceptor" % "2.7.5", + "com.google.code.gson" % "gson" % "2.8.1", + "org.threeten" % "threetenbp" % "1.3.5" % "compile", + "io.gsonfire" % "gson-fire" % "1.8.0" % "compile", + "junit" % "junit" % "4.12" % "test", + "com.novocode" % "junit-interface" % "0.10" % "test" + ) + ) diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..1465129 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,18 @@ +# +# Copyright (c) 2018 Aspose.Pdf for Cloud +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..2c6137b87896c8f70315ae454e00a969ef5f6019 GIT binary patch literal 53639 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 F{{tUq7iIte literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..2c6932d --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue May 17 23:08:05 CST 2016 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..2ae440d --- /dev/null +++ b/gradlew @@ -0,0 +1,178 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +## Copyright (c) 2018 Aspose.Pdf for Cloud +## Permission is hereby granted, free of charge, to any person obtaining a copy +## of this software and associated documentation files (the "Software"), to deal +## in the Software without restriction, including without limitation the rights +## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +## copies of the Software, and to permit persons to whom the Software is +## furnished to do so, subject to the following conditions: +## The above copyright notice and this permission notice shall be included in all +## copies or substantial portions of the Software. +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +## SOFTWARE. +## +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..5f19212 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d730de6 --- /dev/null +++ b/pom.xml @@ -0,0 +1,263 @@ + + + + 4.0.0 + com.aspose + aspose-cloud-pdf + jar + aspose-cloud-pdf + 18.5.0 + https://github.com/swagger-api/swagger-codegen + Swagger Java + + scm:git:git@github.com:swagger-api/swagger-codegen.git + scm:git:git@github.com:swagger-api/swagger-codegen.git + https://github.com/swagger-api/swagger-codegen + + + + + Unlicense + http://unlicense.org + repo + + + + + + Swagger + apiteam@swagger.io + Swagger + http://swagger.io + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0-M1 + + + enforce-maven + + enforce + + + + + 2.2.0 + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.12 + + + + loggerPath + conf/log4j.properties + + + -Xms512m -Xmx1500m + methods + pertest + + + + maven-dependency-plugin + + + package + + copy-dependencies + + + ${project.build.directory}/lib + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.2 + + + + jar + test-jar + + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.10 + + + add_sources + generate-sources + + add-source + + + + + src/main/java + + + + + add_test_sources + generate-test-sources + + add-test-source + + + + + src/test/java + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.4 + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + + jar-no-fork + + + + + + + + + + sign-artifacts + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.5 + + + sign-artifacts + verify + + sign + + + + + + + + + + + + io.swagger + swagger-annotations + ${swagger-core-version} + + + com.squareup.okhttp + okhttp + ${okhttp-version} + + + com.squareup.okhttp + logging-interceptor + ${okhttp-version} + + + com.google.code.gson + gson + ${gson-version} + + + io.gsonfire + gson-fire + ${gson-fire-version} + + + org.threeten + threetenbp + ${threetenbp-version} + + + + junit + junit + ${junit-version} + test + + + + 1.7 + ${java.version} + ${java.version} + 1.8.0 + 1.5.15 + 2.7.5 + 2.8.1 + 1.3.5 + 1.0.0 + 4.12 + UTF-8 + + diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..16f897d --- /dev/null +++ b/settings.gradle @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ +rootProject.name = "aspose-cloud-pdf" \ No newline at end of file diff --git a/setup.json b/setup.json new file mode 100644 index 0000000..1e58a38 --- /dev/null +++ b/setup.json @@ -0,0 +1,5 @@ +{ + "app_key" : "", + "app_sid" : "", + "product_uri" : "https://api-dev.aspose.cloud/v1.1" +} \ No newline at end of file diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c8e6111 --- /dev/null +++ b/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + + diff --git a/src/main/java/com/aspose/asposecloudpdf/ApiCallback.java b/src/main/java/com/aspose/asposecloudpdf/ApiCallback.java new file mode 100644 index 0000000..4d5cf98 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/ApiCallback.java @@ -0,0 +1,71 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + +import java.io.IOException; + +import java.util.Map; +import java.util.List; + +/** + * Callback for asynchronous API call. + * + * @param The return type + */ +public interface ApiCallback { + /** + * This is called when the API call fails. + * + * @param e The exception causing the failure + * @param statusCode Status code of the response if available, otherwise it would be 0 + * @param responseHeaders Headers of the response if available, otherwise it would be null + */ + void onFailure(ApiException e, int statusCode, Map> responseHeaders); + + /** + * This is called when the API call succeeded. + * + * @param result The result deserialized from response + * @param statusCode Status code of the response + * @param responseHeaders Headers of the response + */ + void onSuccess(T result, int statusCode, Map> responseHeaders); + + /** + * This is called when the API upload processing. + * + * @param bytesWritten bytes Written + * @param contentLength content length of request body + * @param done write end + */ + void onUploadProgress(long bytesWritten, long contentLength, boolean done); + + /** + * This is called when the API downlond processing. + * + * @param bytesRead bytes Read + * @param contentLength content lenngth of the response + * @param done Read end + */ + void onDownloadProgress(long bytesRead, long contentLength, boolean done); +} diff --git a/src/main/java/com/aspose/asposecloudpdf/ApiClient.java b/src/main/java/com/aspose/asposecloudpdf/ApiClient.java new file mode 100644 index 0000000..ff3563a --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/ApiClient.java @@ -0,0 +1,1086 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.squareup.okhttp.*; +import com.squareup.okhttp.internal.http.HttpMethod; +import com.squareup.okhttp.logging.HttpLoggingInterceptor; +import com.squareup.okhttp.logging.HttpLoggingInterceptor.Level; +import okio.BufferedSink; +import okio.Okio; +import org.threeten.bp.LocalDate; +import org.threeten.bp.OffsetDateTime; +import org.threeten.bp.format.DateTimeFormatter; + +import javax.net.ssl.*; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.security.GeneralSecurityException; +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.text.DateFormat; +import java.util.*; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ApiClient { + + private String basePath = "https://api.aspose.cloud/v1.1"; + private boolean debugging = false; + private Map defaultHeaderMap = new HashMap(); + private String tempFolderPath = null; + + private OkHttpClient httpClient; + private JSON json; + + private HttpLoggingInterceptor loggingInterceptor; + + private String accessToken; + private String refreshToken; + private String appKey; + private String appSid; + + /* + * Constructor for ApiClient + */ + public ApiClient() { + httpClient = new OkHttpClient(); + // PDFCLOUD-419 + httpClient.setProtocols(Arrays.asList(Protocol.HTTP_1_1)); + + + json = new JSON(); + + // Set default User-Agent. + setUserAgent("aspose pdf java sdk"); + + // PDFCLOUD-418 Set default Connect Timeout + setConnectTimeout(5 * 60 * 1000); + setReadTimeout(5 * 60 * 1000); + } + + /** + * Get App Key + * + * @return App Key + */ + public String getAppKey() + { + return appKey; + } + + /** + * Set App Key + * + * @param appKey App Key + */ + public void setAppKey(String appKey) + { + this.appKey = appKey; + } + + /** + * Get App Sid + * + * @return App Sid + */ + public String getAppSid() + { + return appSid; + } + + /** + * Set App Sid + * + * @param appSid App Sid + */ + public void setAppSid(String appSid) + { + this.appSid = appSid; + } + + + /** + * Get base path + * + * @return Base path + */ + public String getBasePath() { + return basePath; + } + + /** + * Set base path + * + * @param basePath Base path of the URL (e.g https://api.aspose.cloud/v1.1 + * @return An instance of OkHttpClient + */ + public ApiClient setBasePath(String basePath) { + this.basePath = basePath; + return this; + } + + /** + * Get HTTP client + * + * @return An instance of OkHttpClient + */ + public OkHttpClient getHttpClient() { + return httpClient; + } + + /** + * Set HTTP client + * + * @param httpClient An instance of OkHttpClient + * @return Api Client + */ + public ApiClient setHttpClient(OkHttpClient httpClient) { + this.httpClient = httpClient; + return this; + } + + /** + * Get JSON + * + * @return JSON object + */ + public JSON getJSON() { + return json; + } + + /** + * Set JSON + * + * @param json JSON object + * @return Api client + */ + public ApiClient setJSON(JSON json) { + this.json = json; + return this; + } + + public ApiClient setLenientOnJson(boolean lenientOnJson) { + this.json.setLenientOnJson(lenientOnJson); + return this; + } + + /** + * Set access token for the OAuth2 authentication. + * + * @param accessToken Access token + */ + public void setAccessToken(String accessToken) + { + this.accessToken = accessToken; + } + + /** + * Set refresh token for the OAuth2 authentication. + * + * @param refreshToken Access token + */ + public void setRefreshToken(String refreshToken) + { + this.refreshToken = refreshToken; + } + + /** + * Set the User-Agent header's value (by adding to the default header map). + * + * @param userAgent HTTP request's user agent + * @return ApiClient + */ + public ApiClient setUserAgent(String userAgent) { + addDefaultHeader("User-Agent", userAgent); + return this; + } + + /** + * Add a default header. + * + * @param key The header's key + * @param value The header's value + * @return ApiClient + */ + public ApiClient addDefaultHeader(String key, String value) { + defaultHeaderMap.put(key, value); + return this; + } + + /** + * Check that whether debugging is enabled for this API client. + * + * @return True if debugging is enabled, false otherwise. + */ + public boolean isDebugging() { + return debugging; + } + + /** + * Enable/disable debugging for this API client. + * + * @param debugging To enable (true) or disable (false) debugging + * @return ApiClient + */ + public ApiClient setDebugging(boolean debugging) { + if (debugging != this.debugging) { + if (debugging) { + loggingInterceptor = new HttpLoggingInterceptor(); + loggingInterceptor.setLevel(Level.BODY); + httpClient.interceptors().add(loggingInterceptor); + } else { + httpClient.interceptors().remove(loggingInterceptor); + loggingInterceptor = null; + } + } + this.debugging = debugging; + return this; + } + + /** + * The path of temporary folder used to store downloaded files from endpoints + * with file response. The default value is null, i.e. using + * the system's default tempopary folder. + * + * @see createTempFile + * @return Temporary folder path + */ + public String getTempFolderPath() { + return tempFolderPath; + } + + /** + * Set the temporary folder path (for downloading files) + * + * @param tempFolderPath Temporary folder path + * @return ApiClient + */ + public ApiClient setTempFolderPath(String tempFolderPath) { + this.tempFolderPath = tempFolderPath; + return this; + } + + /** + * Get connection timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getConnectTimeout() { + return httpClient.getConnectTimeout(); + } + + /** + * Sets the connect timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link Integer#MAX_VALUE}. + * + * @param connectionTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setConnectTimeout(int connectionTimeout) { + httpClient.setConnectTimeout(connectionTimeout, TimeUnit.MILLISECONDS); + return this; + } + + /** + * Get read timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getReadTimeout() { + return httpClient.getReadTimeout(); + } + + /** + * Sets the read timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link Integer#MAX_VALUE}. + * + * @param readTimeout read timeout in milliseconds + * @return Api client + */ + public ApiClient setReadTimeout(int readTimeout) { + httpClient.setReadTimeout(readTimeout, TimeUnit.MILLISECONDS); + return this; + } + + /** + * Get write timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getWriteTimeout() { + return httpClient.getWriteTimeout(); + } + + /** + * Sets the write timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link Integer#MAX_VALUE}. + * + * @param writeTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setWriteTimeout(int writeTimeout) { + httpClient.setWriteTimeout(writeTimeout, TimeUnit.MILLISECONDS); + return this; + } + + /** + * Format the given parameter object into string. + * + * @param param Parameter + * @return String representation of the parameter + */ + public String parameterToString(Object param) { + if (param == null) { + return ""; + } else if (param instanceof Date || param instanceof OffsetDateTime || param instanceof LocalDate) { + //Serialize to json string and remove the " enclosing characters + String jsonStr = json.serialize(param); + return jsonStr.substring(1, jsonStr.length() - 1); + } else if (param instanceof Collection) { + StringBuilder b = new StringBuilder(); + for (Object o : (Collection)param) { + if (b.length() > 0) { + b.append(","); + } + b.append(String.valueOf(o)); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /** + * Formats the specified query parameter to a list containing a single {@code Pair} object. + * + * Note that {@code value} must not be a collection. + * + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list containing a single {@code Pair} object. + */ + public List parameterToPair(String name, Object value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value instanceof Collection) return params; + + params.add(new Pair(name, parameterToString(value))); + return params; + } + + /** + * Formats the specified collection query parameters to a list of {@code Pair} objects. + * + * Note that the values of each of the returned Pair objects are percent-encoded. + * + * @param collectionFormat The collection format of the parameter. + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list of {@code Pair} objects. + */ + public List parameterToPairs(String collectionFormat, String name, Collection value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value.isEmpty()) { + return params; + } + + // create the params based on the collection format + if ("multi".equals(collectionFormat)) { + for (Object item : value) { + params.add(new Pair(name, escapeString(parameterToString(item)))); + } + return params; + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + // escape all delimiters except commas, which are URI reserved + // characters + if ("ssv".equals(collectionFormat)) { + delimiter = escapeString(" "); + } else if ("tsv".equals(collectionFormat)) { + delimiter = escapeString("\t"); + } else if ("pipes".equals(collectionFormat)) { + delimiter = escapeString("|"); + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : value) { + sb.append(delimiter); + sb.append(escapeString(parameterToString(item))); + } + + params.add(new Pair(name, sb.substring(delimiter.length()))); + + return params; + } + + /** + * Sanitize filename by removing path. + * e.g. ../../sun.gif becomes sun.gif + * + * @param filename The filename to be sanitized + * @return The sanitized filename + */ + public String sanitizeFilename(String filename) { + return filename.replaceAll(".*[/\\\\]", ""); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * "* / *" is also default to JSON + * @param mime MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public boolean isJsonMime(String mime) { + String jsonMime = "(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"; + return mime != null && (mime.matches(jsonMime) || mime.equals("*/*")); + } + + /** + * Select the Accept header's value from the given accepts array: + * if JSON exists in the given array, use it; + * otherwise use all of them (joining into a string) + * + * @param accepts The accepts array to select from + * @return The Accept header to use. If the given array is empty, + * null will be returned (not to set the Accept header explicitly). + */ + public String selectHeaderAccept(String[] accepts) { + if (accepts.length == 0) { + return null; + } + for (String accept : accepts) { + if (isJsonMime(accept)) { + return accept; + } + } + return StringUtil.join(accepts, ","); + } + + /** + * Select the Content-Type header's value from the given array: + * if JSON exists in the given array, use it; + * otherwise use the first one of the array. + * + * @param contentTypes The Content-Type array to select from + * @return The Content-Type header to use. If the given array is empty, + * or matches "any", JSON will be used. + */ + public String selectHeaderContentType(String[] contentTypes) { + if (contentTypes.length == 0 || contentTypes[0].equals("*/*")) { + return "application/json"; + } + for (String contentType : contentTypes) { + if (isJsonMime(contentType)) { + return contentType; + } + } + return contentTypes[0]; + } + + /** + * Escape the given string to be used as URL query value. + * + * @param str String to be escaped + * @return Escaped string + */ + public String escapeString(String str) { + try { + return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + } catch (UnsupportedEncodingException e) { + return str; + } + } + + /** + * Deserialize response body to Java object, according to the return type and + * the Content-Type response header. + * + * @param Type + * @param response HTTP response + * @param returnType The type of the Java object + * @return The deserialized Java object + * @throws ApiException If fail to deserialize response body, i.e. cannot read response body + * or the Content-Type of the response is not supported. + */ + @SuppressWarnings("unchecked") + public T deserialize(Response response, Type returnType) throws ApiException { + if (response == null || returnType == null) { + return null; + } + + if ("byte[]".equals(returnType.toString())) { + // Handle binary response (byte array). + try { + return (T) response.body().bytes(); + } catch (IOException e) { + throw new ApiException(e); + } + } else if (returnType.equals(File.class)) { + // Handle file downloading. + return (T) downloadFileFromResponse(response); + } + + String respBody; + try { + if (response.body() != null) + respBody = response.body().string(); + else + respBody = null; + } catch (IOException e) { + throw new ApiException(e); + } + + if (respBody == null || "".equals(respBody)) { + return null; + } + + String contentType = response.headers().get("Content-Type"); + if (contentType == null) { + // ensuring a default content type + contentType = "application/json"; + } + if (isJsonMime(contentType)) { + return json.deserialize(respBody, returnType); + } else if (returnType.equals(String.class)) { + // Expecting string, return the raw response body. + return (T) respBody; + } else { + throw new ApiException( + "Content type \"" + contentType + "\" is not supported for type: " + returnType, + response.code(), + response.headers().toMultimap(), + respBody); + } + } + + /** + * Serialize the given Java object into request body according to the object's + * class and the request Content-Type. + * + * @param obj The Java object + * @param contentType The request Content-Type + * @return The serialized request body + * @throws ApiException If fail to serialize the given object + */ + public RequestBody serialize(Object obj, String contentType) throws ApiException { + if (obj instanceof byte[]) { + // Binary (byte array) body parameter support. + return RequestBody.create(MediaType.parse(contentType), (byte[]) obj); + } else if (obj instanceof File) { + // File body parameter support. + return RequestBody.create(MediaType.parse(contentType), (File) obj); + } else if (isJsonMime(contentType)) { + String content; + if (obj != null) { + content = json.serialize(obj); + } else { + content = null; + } + return RequestBody.create(MediaType.parse(contentType), content); + } else { + throw new ApiException("Content type \"" + contentType + "\" is not supported"); + } + } + + /** + * Download file from the given response. + * + * @param response An instance of the Response object + * @throws ApiException If fail to read file content from response and write to disk + * @return Downloaded file + */ + public File downloadFileFromResponse(Response response) throws ApiException { + try { + File file = prepareDownloadFile(response); + BufferedSink sink = Okio.buffer(Okio.sink(file)); + sink.writeAll(response.body().source()); + sink.close(); + return file; + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Prepare file for download + * + * @param response An instance of the Response object + * @throws IOException If fail to prepare file for download + * @return Prepared file for the download + */ + public File prepareDownloadFile(Response response) throws IOException { + String filename = null; + String contentDisposition = response.header("Content-Disposition"); + if (contentDisposition != null && !"".equals(contentDisposition)) { + // Get filename from the Content-Disposition header. + Pattern pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?"); + Matcher matcher = pattern.matcher(contentDisposition); + if (matcher.find()) { + filename = sanitizeFilename(matcher.group(1)); + } + } + + String prefix = null; + String suffix = null; + if (filename == null) { + prefix = "download-"; + suffix = ""; + } else { + int pos = filename.lastIndexOf("."); + if (pos == -1) { + prefix = filename + "-"; + } else { + prefix = filename.substring(0, pos) + "-"; + suffix = filename.substring(pos); + } + // File.createTempFile requires the prefix to be at least three characters long + if (prefix.length() < 3) + prefix = "download-"; + } + + if (tempFolderPath == null) + return File.createTempFile(prefix, suffix); + else + return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + } + + /** + * {@link #execute(Call, Type)} + * + * @param Type + * @param call An instance of the Call object + * @throws ApiException If fail to execute the call + * @return ApiResponse<T> + */ + public ApiResponse execute(Call call) throws ApiException { + return execute(call, null); + } + + /** + * Execute HTTP call and deserialize the HTTP response body into the given return type. + * + * @param returnType The return type used to deserialize HTTP response body + * @param The return type corresponding to (same with) returnType + * @param call Call + * @return ApiResponse object containing response status, headers and + * data, which is a Java object deserialized from response body and would be null + * when returnType is null. + * @throws ApiException If fail to execute the call + */ + public ApiResponse execute(Call call, Type returnType) throws ApiException { + try { + Response response = call.execute(); + T data = handleResponse(response, returnType); + return new ApiResponse(response.code(), response.headers().toMultimap(), data); + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * {@link #executeAsync(Call, Type, ApiCallback)} + * + * @param Type + * @param call An instance of the Call object + * @param callback ApiCallback<T> + */ + public void executeAsync(Call call, ApiCallback callback) { + executeAsync(call, null, callback); + } + + /** + * Execute HTTP call asynchronously. + * + * @see #execute(Call, Type) + * @param Type + * @param call The callback to be executed when the API call finishes + * @param returnType Return type + * @param callback ApiCallback + */ + @SuppressWarnings("unchecked") + public void executeAsync(Call call, final Type returnType, final ApiCallback callback) { + call.enqueue(new Callback() { + @Override + public void onFailure(Request request, IOException e) { + callback.onFailure(new ApiException(e), 0, null); + } + + @Override + public void onResponse(Response response) throws IOException { + T result; + try { + result = (T) handleResponse(response, returnType); + } catch (ApiException e) { + callback.onFailure(e, response.code(), response.headers().toMultimap()); + return; + } + callback.onSuccess(result, response.code(), response.headers().toMultimap()); + } + }); + } + + /** + * Handle the given response, return the deserialized object when the response is successful. + * + * @param Type + * @param response Response + * @param returnType Return type + * @throws ApiException If the response has a unsuccessful status code or + * fail to deserialize the response body + * @return Type + */ + public T handleResponse(Response response, Type returnType) throws ApiException { + if (response.isSuccessful()) { + if (returnType == null || response.code() == 204) { + // returning null if the returnType is not defined, + // or the status code is 204 (No Content) + if (response.body() != null) { + try { + response.body().close(); + } catch (IOException e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + return null; + } else { + return deserialize(response, returnType); + } + } else { + String respBody = null; + if (response.body() != null) { + try { + respBody = response.body().string(); + } catch (IOException e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + throw new ApiException(response.message(), response.code(), response.headers().toMultimap(), respBody); + } + } + + /** + * Build HTTP call with the given options. + * + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param progressRequestListener Progress request listener + * @return The HTTP call + * @throws ApiException If fail to serialize the request body object + */ + public Call buildCall(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map formParams, String[] authNames, ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Request request = buildRequest(path, method, queryParams, collectionQueryParams, body, headerParams, formParams, authNames, progressRequestListener); + + return httpClient.newCall(request); + } + + /** + * Build an HTTP request with the given options. + * + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param progressRequestListener Progress request listener + * @return The HTTP request + * @throws ApiException If fail to serialize the request body object + */ + public Request buildRequest(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map formParams, String[] authNames, ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + addOAuthAuthentication(headerParams); + final String url = buildUrl(path, queryParams, collectionQueryParams); + final Request.Builder reqBuilder = new Request.Builder().url(url); + processHeaderParams(headerParams, reqBuilder); + + String contentType = (String) headerParams.get("Content-Type"); + // ensuring a default content type + if (contentType == null) { + contentType = "application/json"; + } + + RequestBody reqBody; + if (!HttpMethod.permitsRequestBody(method)) { + reqBody = null; + } else if ("application/x-www-form-urlencoded".equals(contentType)) { + reqBody = buildRequestBodyFormEncoding(formParams); + } else if ("multipart/form-data".equals(contentType)) { + reqBody = buildRequestBodyMultipart(formParams); + } else if (body == null) { + if ("DELETE".equals(method)) { + // allow calling DELETE without sending a request body + reqBody = null; + } else { + // use an empty request body (for POST, PUT and PATCH) + reqBody = RequestBody.create(MediaType.parse(contentType), ""); + } + } else { + reqBody = serialize(body, contentType); + } + + Request request = null; + + if(progressRequestListener != null && reqBody != null) { + ProgressRequestBody progressRequestBody = new ProgressRequestBody(reqBody, progressRequestListener); + request = reqBuilder.method(method, progressRequestBody).build(); + } else { + request = reqBuilder.method(method, reqBody).build(); + } + + return request; + } + + /** + * Build full URL by concatenating base path, the given sub path and query parameters. + * + * @param path The sub path + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @return The full URL + */ + public String buildUrl(String path, List queryParams, List collectionQueryParams) { + final StringBuilder url = new StringBuilder(); + url.append(basePath).append(path); + + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; + for (Pair param : queryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + url.append(escapeString(param.getName())).append("=").append(escapeString(value)); + } + } + } + + if (collectionQueryParams != null && !collectionQueryParams.isEmpty()) { + String prefix = url.toString().contains("?") ? "&" : "?"; + for (Pair param : collectionQueryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + // collection query parameter value already escaped as part of parameterToPairs + url.append(escapeString(param.getName())).append("=").append(value); + } + } + } + + return url.toString(); + } + + /** + * Set header parameters to the request builder, including default headers. + * + * @param headerParams Header parameters in the ofrm of Map + * @param reqBuilder Reqeust.Builder + */ + public void processHeaderParams(Map headerParams, Request.Builder reqBuilder) { + for (Entry param : headerParams.entrySet()) { + reqBuilder.header(param.getKey(), parameterToString(param.getValue())); + } + for (Entry header : defaultHeaderMap.entrySet()) { + if (!headerParams.containsKey(header.getKey())) { + reqBuilder.header(header.getKey(), parameterToString(header.getValue())); + } + } + } + + /** + * Build a form-encoding request body with the given form parameters. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyFormEncoding(Map formParams) { + FormEncodingBuilder formBuilder = new FormEncodingBuilder(); + for (Entry param : formParams.entrySet()) { + formBuilder.add(param.getKey(), parameterToString(param.getValue())); + } + return formBuilder.build(); + } + + /** + * Build a multipart (file uploading) request body with the given form parameters, + * which could contain text fields and file fields. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyMultipart(Map formParams) { + MultipartBuilder mpBuilder = new MultipartBuilder().type(MultipartBuilder.FORM); + for (Entry param : formParams.entrySet()) { + if (param.getValue() instanceof File) { + File file = (File) param.getValue(); + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + param.getKey() + "\"; filename=\"" + file.getName() + "\""); + MediaType mediaType = MediaType.parse(guessContentTypeFromFile(file)); + mpBuilder.addPart(partHeaders, RequestBody.create(mediaType, file)); + } else { + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + param.getKey() + "\""); + mpBuilder.addPart(partHeaders, RequestBody.create(null, parameterToString(param.getValue()))); + } + } + return mpBuilder.build(); + } + + /** + * Guess Content-Type header from the given file (defaults to "application/octet-stream"). + * + * @param file The given file + * @return The guessed Content-Type + */ + public String guessContentTypeFromFile(File file) { + String contentType = URLConnection.guessContentTypeFromName(file.getName()); + if (contentType == null) { + return "application/octet-stream"; + } else { + return contentType; + } + } + + /** + * Request OAuth token + */ + private void requestToken() throws IOException + { + RequestBody requestBody = new FormEncodingBuilder() + .addEncoded("grant_type", "client_credentials") + .addEncoded("client_id", getAppSid()) + .addEncoded("client_secret", getAppKey()) + .build(); + + String url = basePath.replace("/v1.1", "") + "/oauth2/token"; + Request request = new Request.Builder() + .url(url) + .post(requestBody) + .addHeader("Content-Type", " application/x-www-form-urlencoded") + .build(); + + Response response = httpClient.newCall(request).execute(); + GetAccessTokenResult result = json.deserialize(response.body().string(), GetAccessTokenResult.class); + setAccessToken(result.access_token); + setRefreshToken(result.refresh_token); + } + + /** + * Refresh OAuth token + */ + private void refreshToken() throws IOException + { + RequestBody requestBody = new FormEncodingBuilder() + .addEncoded("grant_type", "refresh_token") + .addEncoded("refresh_token", this.refreshToken) + .build(); + + String url = basePath.replace("/v1.1", "") + "/oauth2/token"; + Request request = new Request.Builder() + .url(url) + .post(requestBody) + .addHeader("Content-Type", " application/x-www-form-urlencoded") + .build(); + + Response response = httpClient.newCall(request).execute(); + GetAccessTokenResult result = json.deserialize(response.body().string(), GetAccessTokenResult.class); + setAccessToken(result.access_token); + setRefreshToken(result.refresh_token); + } + + + /** + * Add OAuth2 header + * + * @param headerParams Map of request headers + */ + private void addOAuthAuthentication(Map headerParams) throws ApiException + { + try { + if (null == accessToken) { + requestToken(); + } + headerParams.put("Authorization", "Bearer " + accessToken); + } + catch (IOException ex) + { + throw new ApiException(ex); + } + } + + + /** + * GetAccessTokenResult class + */ + private class GetAccessTokenResult + { + public String access_token; + public String refresh_token; + } +} diff --git a/src/main/java/com/aspose/asposecloudpdf/ApiException.java b/src/main/java/com/aspose/asposecloudpdf/ApiException.java new file mode 100644 index 0000000..ed8bc28 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/ApiException.java @@ -0,0 +1,100 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + +import java.util.Map; +import java.util.List; + + +public class ApiException extends Exception { + private int code = 0; + private Map> responseHeaders = null; + private String responseBody = null; + + public ApiException() {} + + public ApiException(Throwable throwable) { + super(throwable); + } + + public ApiException(String message) { + super(message); + } + + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { + super(message, throwable); + this.code = code; + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + public ApiException(String message, int code, Map> responseHeaders, String responseBody) { + this(message, (Throwable) null, code, responseHeaders, responseBody); + } + + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { + this(message, throwable, code, responseHeaders, null); + } + + public ApiException(int code, Map> responseHeaders, String responseBody) { + this((String) null, (Throwable) null, code, responseHeaders, responseBody); + } + + public ApiException(int code, String message) { + super(message); + this.code = code; + } + + public ApiException(int code, String message, Map> responseHeaders, String responseBody) { + this(code, message); + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + /** + * Get the HTTP status code. + * + * @return HTTP status code + */ + public int getCode() { + return code; + } + + /** + * Get the HTTP response headers. + * + * @return A map of list of string + */ + public Map> getResponseHeaders() { + return responseHeaders; + } + + /** + * Get the HTTP response body. + * + * @return Response body in the form of string + */ + public String getResponseBody() { + return responseBody; + } +} diff --git a/src/main/java/com/aspose/asposecloudpdf/ApiResponse.java b/src/main/java/com/aspose/asposecloudpdf/ApiResponse.java new file mode 100644 index 0000000..eda417a --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/ApiResponse.java @@ -0,0 +1,68 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + +import java.util.List; +import java.util.Map; + +/** + * API response returned by API call. + * + * @param The type of data that is deserialized from response body + */ +public class ApiResponse { + final private int statusCode; + final private Map> headers; + final private T data; + + /** + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + */ + public ApiResponse(int statusCode, Map> headers) { + this(statusCode, headers, null); + } + + /** + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + * @param data The object deserialized from response bod + */ + public ApiResponse(int statusCode, Map> headers, T data) { + this.statusCode = statusCode; + this.headers = headers; + this.data = data; + } + + public int getStatusCode() { + return statusCode; + } + + public Map> getHeaders() { + return headers; + } + + public T getData() { + return data; + } +} diff --git a/src/main/java/com/aspose/asposecloudpdf/Configuration.java b/src/main/java/com/aspose/asposecloudpdf/Configuration.java new file mode 100644 index 0000000..7c3cd11 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/Configuration.java @@ -0,0 +1,48 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + + +public class Configuration { + private static ApiClient defaultApiClient = new ApiClient(); + + /** + * Get the default API client, which would be used when creating API + * instances without providing an API client. + * + * @return Default API client + */ + public static ApiClient getDefaultApiClient() { + return defaultApiClient; + } + + /** + * Set the default API client, which would be used when creating API + * instances without providing an API client. + * + * @param apiClient API client + */ + public static void setDefaultApiClient(ApiClient apiClient) { + defaultApiClient = apiClient; + } +} diff --git a/src/main/java/com/aspose/asposecloudpdf/GzipRequestInterceptor.java b/src/main/java/com/aspose/asposecloudpdf/GzipRequestInterceptor.java new file mode 100644 index 0000000..8d21e3a --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/GzipRequestInterceptor.java @@ -0,0 +1,90 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + +import com.squareup.okhttp.*; +import okio.Buffer; +import okio.BufferedSink; +import okio.GzipSink; +import okio.Okio; + +import java.io.IOException; + +/** + * Encodes request bodies using gzip. + * + * Taken from https://github.com/square/okhttp/issues/350 + */ +class GzipRequestInterceptor implements Interceptor { + @Override public Response intercept(Chain chain) throws IOException { + Request originalRequest = chain.request(); + if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) { + return chain.proceed(originalRequest); + } + + Request compressedRequest = originalRequest.newBuilder() + .header("Content-Encoding", "gzip") + .method(originalRequest.method(), forceContentLength(gzip(originalRequest.body()))) + .build(); + return chain.proceed(compressedRequest); + } + + private RequestBody forceContentLength(final RequestBody requestBody) throws IOException { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return new RequestBody() { + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() { + return buffer.size(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + sink.write(buffer.snapshot()); + } + }; + } + + private RequestBody gzip(final RequestBody body) { + return new RequestBody() { + @Override public MediaType contentType() { + return body.contentType(); + } + + @Override public long contentLength() { + return -1; // We don't know the compressed length in advance! + } + + @Override public void writeTo(BufferedSink sink) throws IOException { + BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); + body.writeTo(gzipSink); + gzipSink.close(); + } + }; + } +} \ No newline at end of file diff --git a/src/main/java/com/aspose/asposecloudpdf/JSON.java b/src/main/java/com/aspose/asposecloudpdf/JSON.java new file mode 100644 index 0000000..bc2d468 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/JSON.java @@ -0,0 +1,370 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapter; +import com.google.gson.internal.bind.util.ISO8601Utils; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.google.gson.JsonElement; +import io.gsonfire.GsonFireBuilder; +import io.gsonfire.TypeSelector; +import org.threeten.bp.LocalDate; +import org.threeten.bp.OffsetDateTime; +import org.threeten.bp.format.DateTimeFormatter; + +import com.aspose.asposecloudpdf.model.*; + +import java.io.IOException; +import java.io.StringReader; +import java.lang.reflect.Type; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.ParsePosition; +import java.util.Date; +import java.util.Map; +import java.util.HashMap; + +public class JSON { + private Gson gson; + private boolean isLenientOnJson = false; + private DateTypeAdapter dateTypeAdapter = new DateTypeAdapter(); + private SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); + private OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); + private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + + public static GsonBuilder createGson() { + GsonFireBuilder fireBuilder = new GsonFireBuilder(); + return fireBuilder.createGsonBuilder(); + } + + private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { + JsonElement element = readElement.getAsJsonObject().get(discriminatorField); + if(null == element) { + throw new IllegalArgumentException("missing discriminator field: <" + discriminatorField + ">"); + } + return element.getAsString(); + } + + private static Class getClassByDiscriminator(Map classByDiscriminatorValue, String discriminatorValue) { + Class clazz = (Class) classByDiscriminatorValue.get(discriminatorValue.toUpperCase()); + if(null == clazz) { + throw new IllegalArgumentException("cannot determine model class of name: <" + discriminatorValue + ">"); + } + return clazz; + } + + public JSON() { + gson = createGson() + .registerTypeAdapter(Date.class, dateTypeAdapter) + .registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter) + .registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter) + .registerTypeAdapter(LocalDate.class, localDateTypeAdapter) + .create(); + } + + /** + * Get Gson. + * + * @return Gson + */ + public Gson getGson() { + return gson; + } + + /** + * Set Gson. + * + * @param gson Gson + * @return JSON + */ + public JSON setGson(Gson gson) { + this.gson = gson; + return this; + } + + public JSON setLenientOnJson(boolean lenientOnJson) { + isLenientOnJson = lenientOnJson; + return this; + } + + /** + * Serialize the given Java object into JSON string. + * + * @param obj Object + * @return String representation of the JSON + */ + public String serialize(Object obj) { + return gson.toJson(obj); + } + + /** + * Deserialize the given JSON string to Java object. + * + * @param Type + * @param body The JSON string + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public T deserialize(String body, Type returnType) { + try { + if (isLenientOnJson) { + JsonReader jsonReader = new JsonReader(new StringReader(body)); + // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(body, returnType); + } + } catch (JsonParseException e) { + // Fallback processing when failed to parse JSON form response body: + // return the response body string directly for the String return type; + if (returnType.equals(String.class)) + return (T) body; + else throw (e); + } + } + + /** + * Gson TypeAdapter for JSR310 OffsetDateTime type + */ + public static class OffsetDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public OffsetDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + + public OffsetDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, OffsetDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public OffsetDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + if (date.endsWith("+0000")) { + date = date.substring(0, date.length()-5) + "Z"; + } + return OffsetDateTime.parse(date, formatter); + } + } + } + + /** + * Gson TypeAdapter for JSR310 LocalDate type + */ + public class LocalDateTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE); + } + + public LocalDateTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDate date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDate read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + return LocalDate.parse(date, formatter); + } + } + } + + public JSON setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + offsetDateTimeTypeAdapter.setFormat(dateFormat); + return this; + } + + public JSON setLocalDateFormat(DateTimeFormatter dateFormat) { + localDateTypeAdapter.setFormat(dateFormat); + return this; + } + + /** + * Gson TypeAdapter for java.sql.Date type + * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used + * (more efficient than SimpleDateFormat). + */ + public static class SqlDateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public SqlDateTypeAdapter() { + } + + public SqlDateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, java.sql.Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = date.toString(); + } + out.value(value); + } + } + + @Override + public java.sql.Date read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return new java.sql.Date(dateFormat.parse(date).getTime()); + } + return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime()); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } + } + + /** + * Gson TypeAdapter for java.util.Date type + * If the dateFormat is null, ISO8601Utils will be used. + */ + public static class DateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public DateTypeAdapter() { + } + + public DateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = ISO8601Utils.format(date, true); + } + out.value(value); + } + } + + @Override + public Date read(JsonReader in) throws IOException { + try { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return dateFormat.parse(date); + } + return ISO8601Utils.parse(date, new ParsePosition(0)); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } catch (IllegalArgumentException e) { + throw new JsonParseException(e); + } + } + } + + public JSON setDateFormat(DateFormat dateFormat) { + dateTypeAdapter.setFormat(dateFormat); + return this; + } + + public JSON setSqlDateFormat(DateFormat dateFormat) { + sqlDateTypeAdapter.setFormat(dateFormat); + return this; + } + +} diff --git a/src/main/java/com/aspose/asposecloudpdf/Pair.java b/src/main/java/com/aspose/asposecloudpdf/Pair.java new file mode 100644 index 0000000..fadad61 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/Pair.java @@ -0,0 +1,61 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + + +public class Pair { + private String name = ""; + private String value = ""; + + public Pair (String name, String value) { + setName(name); + setValue(value); + } + + private void setName(String name) { + if (!isValidString(name)) return; + + this.name = name; + } + + private void setValue(String value) { + if (!isValidString(value)) return; + + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private boolean isValidString(String arg) { + if (arg == null) return false; + if (arg.trim().isEmpty()) return false; + + return true; + } +} diff --git a/src/main/java/com/aspose/asposecloudpdf/ProgressRequestBody.java b/src/main/java/com/aspose/asposecloudpdf/ProgressRequestBody.java new file mode 100644 index 0000000..44e8992 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/ProgressRequestBody.java @@ -0,0 +1,86 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + +import com.squareup.okhttp.MediaType; +import com.squareup.okhttp.RequestBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSink; +import okio.ForwardingSink; +import okio.Okio; +import okio.Sink; + +public class ProgressRequestBody extends RequestBody { + + public interface ProgressRequestListener { + void onRequestProgress(long bytesWritten, long contentLength, boolean done); + } + + private final RequestBody requestBody; + + private final ProgressRequestListener progressListener; + + public ProgressRequestBody(RequestBody requestBody, ProgressRequestListener progressListener) { + this.requestBody = requestBody; + this.progressListener = progressListener; + } + + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() throws IOException { + return requestBody.contentLength(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink bufferedSink = Okio.buffer(sink(sink)); + requestBody.writeTo(bufferedSink); + bufferedSink.flush(); + } + + private Sink sink(Sink sink) { + return new ForwardingSink(sink) { + + long bytesWritten = 0L; + long contentLength = 0L; + + @Override + public void write(Buffer source, long byteCount) throws IOException { + super.write(source, byteCount); + if (contentLength == 0) { + contentLength = contentLength(); + } + + bytesWritten += byteCount; + progressListener.onRequestProgress(bytesWritten, contentLength, bytesWritten == contentLength); + } + }; + } +} diff --git a/src/main/java/com/aspose/asposecloudpdf/ProgressResponseBody.java b/src/main/java/com/aspose/asposecloudpdf/ProgressResponseBody.java new file mode 100644 index 0000000..6882140 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/ProgressResponseBody.java @@ -0,0 +1,85 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + +import com.squareup.okhttp.MediaType; +import com.squareup.okhttp.ResponseBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSource; +import okio.ForwardingSource; +import okio.Okio; +import okio.Source; + +public class ProgressResponseBody extends ResponseBody { + + public interface ProgressListener { + void update(long bytesRead, long contentLength, boolean done); + } + + private final ResponseBody responseBody; + private final ProgressListener progressListener; + private BufferedSource bufferedSource; + + public ProgressResponseBody(ResponseBody responseBody, ProgressListener progressListener) { + this.responseBody = responseBody; + this.progressListener = progressListener; + } + + @Override + public MediaType contentType() { + return responseBody.contentType(); + } + + @Override + public long contentLength() throws IOException { + return responseBody.contentLength(); + } + + @Override + public BufferedSource source() throws IOException { + if (bufferedSource == null) { + bufferedSource = Okio.buffer(source(responseBody.source())); + } + return bufferedSource; + } + + private Source source(Source source) { + return new ForwardingSource(source) { + long totalBytesRead = 0L; + + @Override + public long read(Buffer sink, long byteCount) throws IOException { + long bytesRead = super.read(sink, byteCount); + // read() returns the number of bytes read, or -1 if this source is exhausted. + totalBytesRead += bytesRead != -1 ? bytesRead : 0; + progressListener.update(totalBytesRead, responseBody.contentLength(), bytesRead == -1); + return bytesRead; + } + }; + } +} + + diff --git a/src/main/java/com/aspose/asposecloudpdf/StringUtil.java b/src/main/java/com/aspose/asposecloudpdf/StringUtil.java new file mode 100644 index 0000000..ad8cea0 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/StringUtil.java @@ -0,0 +1,64 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf; + + +public class StringUtil { + /** + * Check if the given array contains the given value (with case-insensitive comparison). + * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + */ + public static boolean containsIgnoreCase(String[] array, String value) { + for (String str : array) { + if (value == null && str == null) return true; + if (value != null && value.equalsIgnoreCase(str)) return true; + } + return false; + } + + /** + * Join an array of strings with the given separator. + *

+ * Note: This might be replaced by utility method from commons-lang or guava someday + * if one of those libraries is added as dependency. + *

+ * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(String[] array, String separator) { + int len = array.length; + if (len == 0) return ""; + + StringBuilder out = new StringBuilder(); + out.append(array[0]); + for (int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } +} diff --git a/src/main/java/com/aspose/asposecloudpdf/api/PdfApi.java b/src/main/java/com/aspose/asposecloudpdf/api/PdfApi.java new file mode 100644 index 0000000..d5b89c4 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/api/PdfApi.java @@ -0,0 +1,19074 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.api; + +import com.aspose.asposecloudpdf.ApiCallback; +import com.aspose.asposecloudpdf.ApiClient; +import com.aspose.asposecloudpdf.ApiException; +import com.aspose.asposecloudpdf.ApiResponse; +import com.aspose.asposecloudpdf.Configuration; +import com.aspose.asposecloudpdf.Pair; +import com.aspose.asposecloudpdf.ProgressRequestBody; +import com.aspose.asposecloudpdf.ProgressResponseBody; + +import com.google.gson.reflect.TypeToken; + +import java.io.IOException; + + +import com.aspose.asposecloudpdf.model.AnnotationResponse; +import com.aspose.asposecloudpdf.model.AnnotationsResponse; +import com.aspose.asposecloudpdf.model.AppendDocument; +import com.aspose.asposecloudpdf.model.AttachmentResponse; +import com.aspose.asposecloudpdf.model.AttachmentsResponse; +import com.aspose.asposecloudpdf.model.DocumentPagesResponse; +import com.aspose.asposecloudpdf.model.DocumentPrivilege; +import com.aspose.asposecloudpdf.model.DocumentPropertiesResponse; +import com.aspose.asposecloudpdf.model.DocumentProperty; +import com.aspose.asposecloudpdf.model.DocumentPropertyResponse; +import com.aspose.asposecloudpdf.model.DocumentResponse; +import com.aspose.asposecloudpdf.model.DocumentTextReplaceResponse; +import com.aspose.asposecloudpdf.model.Field; +import com.aspose.asposecloudpdf.model.FieldResponse; +import com.aspose.asposecloudpdf.model.Fields; +import com.aspose.asposecloudpdf.model.FieldsResponse; +import java.io.File; +import com.aspose.asposecloudpdf.model.ImageResponse; +import com.aspose.asposecloudpdf.model.ImagesListRequest; +import com.aspose.asposecloudpdf.model.ImagesResponse; +import com.aspose.asposecloudpdf.model.LinkAnnotationResponse; +import com.aspose.asposecloudpdf.model.LinkAnnotationsResponse; +import com.aspose.asposecloudpdf.model.MergeDocuments; +import com.aspose.asposecloudpdf.model.OptimizeOptions; +import com.aspose.asposecloudpdf.model.PageTextReplaceResponse; +import com.aspose.asposecloudpdf.model.Paragraph; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.aspose.asposecloudpdf.model.Signature; +import com.aspose.asposecloudpdf.model.SignatureVerifyResponse; +import com.aspose.asposecloudpdf.model.SplitResultResponse; +import com.aspose.asposecloudpdf.model.Stamp; +import com.aspose.asposecloudpdf.model.TextFormatResponse; +import com.aspose.asposecloudpdf.model.TextItemResponse; +import com.aspose.asposecloudpdf.model.TextItemsResponse; +import com.aspose.asposecloudpdf.model.TextRectsResponse; +import com.aspose.asposecloudpdf.model.TextReplaceListRequest; +import com.aspose.asposecloudpdf.model.TextReplaceRequest; +import com.aspose.asposecloudpdf.model.TextReplaceResponse; +import com.aspose.asposecloudpdf.model.TiffExportOptions; +import com.aspose.asposecloudpdf.model.WordCountResponse; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class PdfApi { + private ApiClient apiClient; + + public PdfApi(String appKey, String appSid) { + this(Configuration.getDefaultApiClient()); + apiClient.setAppKey(appKey); + apiClient.setAppSid(appSid); + } + + public PdfApi(ApiClient apiClient) { + this.apiClient = apiClient; + } + + public ApiClient getApiClient() { + return apiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * Build call for deleteField + * @param name The document name. (required) + * @param fieldName The field name/ (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call deleteFieldCall(String name, String fieldName, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/fields/{fieldName}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "fieldName" + "\\}", apiClient.escapeString(fieldName.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call deleteFieldValidateBeforeCall(String name, String fieldName, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling deleteField(Async)"); + } + + // verify the required parameter 'fieldName' is set + if (fieldName == null) { + throw new ApiException("Missing the required parameter 'fieldName' when calling deleteField(Async)"); + } + + + com.squareup.okhttp.Call call = deleteFieldCall(name, fieldName, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Delete document field by name. + * + * @param name The document name. (required) + * @param fieldName The field name/ (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse deleteField(String name, String fieldName, String storage, String folder) throws ApiException { + ApiResponse resp = deleteFieldWithHttpInfo(name, fieldName, storage, folder); + return resp.getData(); + } + + /** + * Delete document field by name. + * + * @param name The document name. (required) + * @param fieldName The field name/ (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse deleteFieldWithHttpInfo(String name, String fieldName, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = deleteFieldValidateBeforeCall(name, fieldName, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Delete document field by name. (asynchronously) + * + * @param name The document name. (required) + * @param fieldName The field name/ (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call deleteFieldAsync(String name, String fieldName, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = deleteFieldValidateBeforeCall(name, fieldName, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for deletePage + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call deletePageCall(String name, Integer pageNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call deletePageValidateBeforeCall(String name, Integer pageNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling deletePage(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling deletePage(Async)"); + } + + + com.squareup.okhttp.Call call = deletePageCall(name, pageNumber, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Delete document page by its number. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse deletePage(String name, Integer pageNumber, String storage, String folder) throws ApiException { + ApiResponse resp = deletePageWithHttpInfo(name, pageNumber, storage, folder); + return resp.getData(); + } + + /** + * Delete document page by its number. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse deletePageWithHttpInfo(String name, Integer pageNumber, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = deletePageValidateBeforeCall(name, pageNumber, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Delete document page by its number. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call deletePageAsync(String name, Integer pageNumber, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = deletePageValidateBeforeCall(name, pageNumber, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for deleteProperties + * @param name (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call deletePropertiesCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/documentproperties" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call deletePropertiesValidateBeforeCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling deleteProperties(Async)"); + } + + + com.squareup.okhttp.Call call = deletePropertiesCall(name, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Delete custom document properties. + * + * @param name (required) + * @param storage (optional) + * @param folder (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse deleteProperties(String name, String storage, String folder) throws ApiException { + ApiResponse resp = deletePropertiesWithHttpInfo(name, storage, folder); + return resp.getData(); + } + + /** + * Delete custom document properties. + * + * @param name (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse deletePropertiesWithHttpInfo(String name, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = deletePropertiesValidateBeforeCall(name, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Delete custom document properties. (asynchronously) + * + * @param name (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call deletePropertiesAsync(String name, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = deletePropertiesValidateBeforeCall(name, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for deleteProperty + * @param name (required) + * @param propertyName (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call deletePropertyCall(String name, String propertyName, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/documentproperties/{propertyName}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "propertyName" + "\\}", apiClient.escapeString(propertyName.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call deletePropertyValidateBeforeCall(String name, String propertyName, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling deleteProperty(Async)"); + } + + // verify the required parameter 'propertyName' is set + if (propertyName == null) { + throw new ApiException("Missing the required parameter 'propertyName' when calling deleteProperty(Async)"); + } + + + com.squareup.okhttp.Call call = deletePropertyCall(name, propertyName, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Delete document property. + * + * @param name (required) + * @param propertyName (required) + * @param storage (optional) + * @param folder (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse deleteProperty(String name, String propertyName, String storage, String folder) throws ApiException { + ApiResponse resp = deletePropertyWithHttpInfo(name, propertyName, storage, folder); + return resp.getData(); + } + + /** + * Delete document property. + * + * @param name (required) + * @param propertyName (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse deletePropertyWithHttpInfo(String name, String propertyName, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = deletePropertyValidateBeforeCall(name, propertyName, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Delete document property. (asynchronously) + * + * @param name (required) + * @param propertyName (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call deletePropertyAsync(String name, String propertyName, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = deletePropertyValidateBeforeCall(name, propertyName, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getDocument + * @param name The document name. (required) + * @param format The format to convert. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param outPath Path to save result (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getDocumentCall(String name, String format, String storage, String folder, String outPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (format != null) + localVarQueryParams.addAll(apiClient.parameterToPair("format", format)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getDocumentValidateBeforeCall(String name, String format, String storage, String folder, String outPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getDocument(Async)"); + } + + + com.squareup.okhttp.Call call = getDocumentCall(name, format, storage, folder, outPath, progressListener, progressRequestListener); + return call; + + } + + /** + * Read common document info or convert to some format if the format specified. + * + * @param name The document name. (required) + * @param format The format to convert. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param outPath Path to save result (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public File getDocument(String name, String format, String storage, String folder, String outPath) throws ApiException { + ApiResponse resp = getDocumentWithHttpInfo(name, format, storage, folder, outPath); + return resp.getData(); + } + + /** + * Read common document info or convert to some format if the format specified. + * + * @param name The document name. (required) + * @param format The format to convert. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param outPath Path to save result (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse getDocumentWithHttpInfo(String name, String format, String storage, String folder, String outPath) throws ApiException { + com.squareup.okhttp.Call call = getDocumentValidateBeforeCall(name, format, storage, folder, outPath, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read common document info or convert to some format if the format specified. (asynchronously) + * + * @param name The document name. (required) + * @param format The format to convert. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param outPath Path to save result (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getDocumentAsync(String name, String format, String storage, String folder, String outPath, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getDocumentValidateBeforeCall(name, format, storage, folder, outPath, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getDocumentAttachmentByIndex + * @param name The document name. (required) + * @param attachmentIndex The attachment index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getDocumentAttachmentByIndexCall(String name, Integer attachmentIndex, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/attachments/{attachmentIndex}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "attachmentIndex" + "\\}", apiClient.escapeString(attachmentIndex.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getDocumentAttachmentByIndexValidateBeforeCall(String name, Integer attachmentIndex, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getDocumentAttachmentByIndex(Async)"); + } + + // verify the required parameter 'attachmentIndex' is set + if (attachmentIndex == null) { + throw new ApiException("Missing the required parameter 'attachmentIndex' when calling getDocumentAttachmentByIndex(Async)"); + } + + + com.squareup.okhttp.Call call = getDocumentAttachmentByIndexCall(name, attachmentIndex, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document attachment info by its index. + * + * @param name The document name. (required) + * @param attachmentIndex The attachment index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return AttachmentResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public AttachmentResponse getDocumentAttachmentByIndex(String name, Integer attachmentIndex, String storage, String folder) throws ApiException { + ApiResponse resp = getDocumentAttachmentByIndexWithHttpInfo(name, attachmentIndex, storage, folder); + return resp.getData(); + } + + /** + * Read document attachment info by its index. + * + * @param name The document name. (required) + * @param attachmentIndex The attachment index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<AttachmentResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getDocumentAttachmentByIndexWithHttpInfo(String name, Integer attachmentIndex, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getDocumentAttachmentByIndexValidateBeforeCall(name, attachmentIndex, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document attachment info by its index. (asynchronously) + * + * @param name The document name. (required) + * @param attachmentIndex The attachment index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getDocumentAttachmentByIndexAsync(String name, Integer attachmentIndex, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getDocumentAttachmentByIndexValidateBeforeCall(name, attachmentIndex, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getDocumentAttachments + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getDocumentAttachmentsCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/attachments" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getDocumentAttachmentsValidateBeforeCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getDocumentAttachments(Async)"); + } + + + com.squareup.okhttp.Call call = getDocumentAttachmentsCall(name, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document attachments info. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return AttachmentsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public AttachmentsResponse getDocumentAttachments(String name, String storage, String folder) throws ApiException { + ApiResponse resp = getDocumentAttachmentsWithHttpInfo(name, storage, folder); + return resp.getData(); + } + + /** + * Read document attachments info. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<AttachmentsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getDocumentAttachmentsWithHttpInfo(String name, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getDocumentAttachmentsValidateBeforeCall(name, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document attachments info. (asynchronously) + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getDocumentAttachmentsAsync(String name, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getDocumentAttachmentsValidateBeforeCall(name, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getDocumentBookmarks + * @param name The document name. (required) + * @param bookmarkPath The bookmark path. Leave it empty if you want to get all the bookmarks in the document. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getDocumentBookmarksCall(String name, String bookmarkPath, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/bookmarks" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (bookmarkPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("bookmarkPath", bookmarkPath)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getDocumentBookmarksValidateBeforeCall(String name, String bookmarkPath, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getDocumentBookmarks(Async)"); + } + + + com.squareup.okhttp.Call call = getDocumentBookmarksCall(name, bookmarkPath, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document bookmark/bookmarks (including children). + * + * @param name The document name. (required) + * @param bookmarkPath The bookmark path. Leave it empty if you want to get all the bookmarks in the document. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getDocumentBookmarks(String name, String bookmarkPath, String storage, String folder) throws ApiException { + ApiResponse resp = getDocumentBookmarksWithHttpInfo(name, bookmarkPath, storage, folder); + return resp.getData(); + } + + /** + * Read document bookmark/bookmarks (including children). + * + * @param name The document name. (required) + * @param bookmarkPath The bookmark path. Leave it empty if you want to get all the bookmarks in the document. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getDocumentBookmarksWithHttpInfo(String name, String bookmarkPath, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getDocumentBookmarksValidateBeforeCall(name, bookmarkPath, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document bookmark/bookmarks (including children). (asynchronously) + * + * @param name The document name. (required) + * @param bookmarkPath The bookmark path. Leave it empty if you want to get all the bookmarks in the document. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getDocumentBookmarksAsync(String name, String bookmarkPath, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getDocumentBookmarksValidateBeforeCall(name, bookmarkPath, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getDocumentProperties + * @param name (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getDocumentPropertiesCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/documentproperties" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getDocumentPropertiesValidateBeforeCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getDocumentProperties(Async)"); + } + + + com.squareup.okhttp.Call call = getDocumentPropertiesCall(name, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document properties. + * + * @param name (required) + * @param storage (optional) + * @param folder (optional) + * @return DocumentPropertiesResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public DocumentPropertiesResponse getDocumentProperties(String name, String storage, String folder) throws ApiException { + ApiResponse resp = getDocumentPropertiesWithHttpInfo(name, storage, folder); + return resp.getData(); + } + + /** + * Read document properties. + * + * @param name (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<DocumentPropertiesResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getDocumentPropertiesWithHttpInfo(String name, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getDocumentPropertiesValidateBeforeCall(name, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document properties. (asynchronously) + * + * @param name (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getDocumentPropertiesAsync(String name, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getDocumentPropertiesValidateBeforeCall(name, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getDocumentProperty + * @param name (required) + * @param propertyName (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getDocumentPropertyCall(String name, String propertyName, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/documentproperties/{propertyName}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "propertyName" + "\\}", apiClient.escapeString(propertyName.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getDocumentPropertyValidateBeforeCall(String name, String propertyName, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getDocumentProperty(Async)"); + } + + // verify the required parameter 'propertyName' is set + if (propertyName == null) { + throw new ApiException("Missing the required parameter 'propertyName' when calling getDocumentProperty(Async)"); + } + + + com.squareup.okhttp.Call call = getDocumentPropertyCall(name, propertyName, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document property by name. + * + * @param name (required) + * @param propertyName (required) + * @param storage (optional) + * @param folder (optional) + * @return DocumentPropertyResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public DocumentPropertyResponse getDocumentProperty(String name, String propertyName, String storage, String folder) throws ApiException { + ApiResponse resp = getDocumentPropertyWithHttpInfo(name, propertyName, storage, folder); + return resp.getData(); + } + + /** + * Read document property by name. + * + * @param name (required) + * @param propertyName (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<DocumentPropertyResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getDocumentPropertyWithHttpInfo(String name, String propertyName, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getDocumentPropertyValidateBeforeCall(name, propertyName, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document property by name. (asynchronously) + * + * @param name (required) + * @param propertyName (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getDocumentPropertyAsync(String name, String propertyName, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getDocumentPropertyValidateBeforeCall(name, propertyName, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getDownload + * @param path Path of the file including the file name and extension e.g. /file.ext (required) + * @param versionId File's version (optional) + * @param storage User's storage name (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getDownloadCall(String path, String versionId, String storage, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/storage/file"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (path != null) + localVarQueryParams.addAll(apiClient.parameterToPair("path", path)); + if (versionId != null) + localVarQueryParams.addAll(apiClient.parameterToPair("versionId", versionId)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getDownloadValidateBeforeCall(String path, String versionId, String storage, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'path' is set + if (path == null) { + throw new ApiException("Missing the required parameter 'path' when calling getDownload(Async)"); + } + + + com.squareup.okhttp.Call call = getDownloadCall(path, versionId, storage, progressListener, progressRequestListener); + return call; + + } + + /** + * Download a specific file + * + * @param path Path of the file including the file name and extension e.g. /file.ext (required) + * @param versionId File's version (optional) + * @param storage User's storage name (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getDownload(String path, String versionId, String storage) throws ApiException { + ApiResponse resp = getDownloadWithHttpInfo(path, versionId, storage); + return resp.getData(); + } + + /** + * Download a specific file + * + * @param path Path of the file including the file name and extension e.g. /file.ext (required) + * @param versionId File's version (optional) + * @param storage User's storage name (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getDownloadWithHttpInfo(String path, String versionId, String storage) throws ApiException { + com.squareup.okhttp.Call call = getDownloadValidateBeforeCall(path, versionId, storage, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Download a specific file (asynchronously) + * + * @param path Path of the file including the file name and extension e.g. /file.ext (required) + * @param versionId File's version (optional) + * @param storage User's storage name (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getDownloadAsync(String path, String versionId, String storage, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getDownloadValidateBeforeCall(path, versionId, storage, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getDownloadDocumentAttachmentByIndex + * @param name The document name. (required) + * @param attachmentIndex The attachment index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getDownloadDocumentAttachmentByIndexCall(String name, Integer attachmentIndex, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/attachments/{attachmentIndex}/download" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "attachmentIndex" + "\\}", apiClient.escapeString(attachmentIndex.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getDownloadDocumentAttachmentByIndexValidateBeforeCall(String name, Integer attachmentIndex, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getDownloadDocumentAttachmentByIndex(Async)"); + } + + // verify the required parameter 'attachmentIndex' is set + if (attachmentIndex == null) { + throw new ApiException("Missing the required parameter 'attachmentIndex' when calling getDownloadDocumentAttachmentByIndex(Async)"); + } + + + com.squareup.okhttp.Call call = getDownloadDocumentAttachmentByIndexCall(name, attachmentIndex, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Download document attachment content by its index. + * + * @param name The document name. (required) + * @param attachmentIndex The attachment index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getDownloadDocumentAttachmentByIndex(String name, Integer attachmentIndex, String storage, String folder) throws ApiException { + ApiResponse resp = getDownloadDocumentAttachmentByIndexWithHttpInfo(name, attachmentIndex, storage, folder); + return resp.getData(); + } + + /** + * Download document attachment content by its index. + * + * @param name The document name. (required) + * @param attachmentIndex The attachment index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getDownloadDocumentAttachmentByIndexWithHttpInfo(String name, Integer attachmentIndex, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getDownloadDocumentAttachmentByIndexValidateBeforeCall(name, attachmentIndex, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Download document attachment content by its index. (asynchronously) + * + * @param name The document name. (required) + * @param attachmentIndex The attachment index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getDownloadDocumentAttachmentByIndexAsync(String name, Integer attachmentIndex, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getDownloadDocumentAttachmentByIndexValidateBeforeCall(name, attachmentIndex, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getEpubInStorageToPdf + * @param srcPath Full source filename (ex. /folder1/folder2/template.epub) (required) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getEpubInStorageToPdfCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/epub"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getEpubInStorageToPdfValidateBeforeCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling getEpubInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getEpubInStorageToPdfCall(srcPath, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert EPUB file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.epub) (required) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getEpubInStorageToPdf(String srcPath) throws ApiException { + ApiResponse resp = getEpubInStorageToPdfWithHttpInfo(srcPath); + return resp.getData(); + } + + /** + * Convert EPUB file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.epub) (required) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getEpubInStorageToPdfWithHttpInfo(String srcPath) throws ApiException { + com.squareup.okhttp.Call call = getEpubInStorageToPdfValidateBeforeCall(srcPath, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert EPUB file (located on storage) to PDF format and return resulting file in response. (asynchronously) + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.epub) (required) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getEpubInStorageToPdfAsync(String srcPath, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getEpubInStorageToPdfValidateBeforeCall(srcPath, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getField + * @param name The document name. (required) + * @param fieldName The field name/ (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getFieldCall(String name, String fieldName, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/fields/{fieldName}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "fieldName" + "\\}", apiClient.escapeString(fieldName.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getFieldValidateBeforeCall(String name, String fieldName, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getField(Async)"); + } + + // verify the required parameter 'fieldName' is set + if (fieldName == null) { + throw new ApiException("Missing the required parameter 'fieldName' when calling getField(Async)"); + } + + + com.squareup.okhttp.Call call = getFieldCall(name, fieldName, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Get document field by name. + * + * @param name The document name. (required) + * @param fieldName The field name/ (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return FieldResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public FieldResponse getField(String name, String fieldName, String storage, String folder) throws ApiException { + ApiResponse resp = getFieldWithHttpInfo(name, fieldName, storage, folder); + return resp.getData(); + } + + /** + * Get document field by name. + * + * @param name The document name. (required) + * @param fieldName The field name/ (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<FieldResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getFieldWithHttpInfo(String name, String fieldName, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getFieldValidateBeforeCall(name, fieldName, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Get document field by name. (asynchronously) + * + * @param name The document name. (required) + * @param fieldName The field name/ (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getFieldAsync(String name, String fieldName, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getFieldValidateBeforeCall(name, fieldName, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getFields + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getFieldsCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/fields" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getFieldsValidateBeforeCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getFields(Async)"); + } + + + com.squareup.okhttp.Call call = getFieldsCall(name, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Get document fields. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return FieldsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public FieldsResponse getFields(String name, String storage, String folder) throws ApiException { + ApiResponse resp = getFieldsWithHttpInfo(name, storage, folder); + return resp.getData(); + } + + /** + * Get document fields. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<FieldsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getFieldsWithHttpInfo(String name, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getFieldsValidateBeforeCall(name, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Get document fields. (asynchronously) + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getFieldsAsync(String name, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getFieldsValidateBeforeCall(name, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getFragment + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getFragmentCall(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/fragments/{fragmentNumber}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())) + .replaceAll("\\{" + "fragmentNumber" + "\\}", apiClient.escapeString(fragmentNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (withEmpty != null) + localVarQueryParams.addAll(apiClient.parameterToPair("withEmpty", withEmpty)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getFragmentValidateBeforeCall(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getFragment(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getFragment(Async)"); + } + + // verify the required parameter 'fragmentNumber' is set + if (fragmentNumber == null) { + throw new ApiException("Missing the required parameter 'fragmentNumber' when calling getFragment(Async)"); + } + + + com.squareup.okhttp.Call call = getFragmentCall(name, pageNumber, fragmentNumber, withEmpty, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read page fragment. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return TextItemsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public TextItemsResponse getFragment(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder) throws ApiException { + ApiResponse resp = getFragmentWithHttpInfo(name, pageNumber, fragmentNumber, withEmpty, storage, folder); + return resp.getData(); + } + + /** + * Read page fragment. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextItemsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse getFragmentWithHttpInfo(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getFragmentValidateBeforeCall(name, pageNumber, fragmentNumber, withEmpty, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read page fragment. (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getFragmentAsync(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getFragmentValidateBeforeCall(name, pageNumber, fragmentNumber, withEmpty, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getFragmentTextFormat + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getFragmentTextFormatCall(String name, Integer pageNumber, Integer fragmentNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/fragments/{fragmentNumber}/textFormat" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())) + .replaceAll("\\{" + "fragmentNumber" + "\\}", apiClient.escapeString(fragmentNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getFragmentTextFormatValidateBeforeCall(String name, Integer pageNumber, Integer fragmentNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getFragmentTextFormat(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getFragmentTextFormat(Async)"); + } + + // verify the required parameter 'fragmentNumber' is set + if (fragmentNumber == null) { + throw new ApiException("Missing the required parameter 'fragmentNumber' when calling getFragmentTextFormat(Async)"); + } + + + com.squareup.okhttp.Call call = getFragmentTextFormatCall(name, pageNumber, fragmentNumber, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read page fragment text format. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @return TextFormatResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public TextFormatResponse getFragmentTextFormat(String name, Integer pageNumber, Integer fragmentNumber, String storage, String folder) throws ApiException { + ApiResponse resp = getFragmentTextFormatWithHttpInfo(name, pageNumber, fragmentNumber, storage, folder); + return resp.getData(); + } + + /** + * Read page fragment text format. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextFormatResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse getFragmentTextFormatWithHttpInfo(String name, Integer pageNumber, Integer fragmentNumber, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getFragmentTextFormatValidateBeforeCall(name, pageNumber, fragmentNumber, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read page fragment text format. (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getFragmentTextFormatAsync(String name, Integer pageNumber, Integer fragmentNumber, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getFragmentTextFormatValidateBeforeCall(name, pageNumber, fragmentNumber, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getFragments + * @param name (required) + * @param pageNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getFragmentsCall(String name, Integer pageNumber, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/fragments" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (withEmpty != null) + localVarQueryParams.addAll(apiClient.parameterToPair("withEmpty", withEmpty)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getFragmentsValidateBeforeCall(String name, Integer pageNumber, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getFragments(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getFragments(Async)"); + } + + + com.squareup.okhttp.Call call = getFragmentsCall(name, pageNumber, withEmpty, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read page fragments. + * + * @param name (required) + * @param pageNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return TextItemsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public TextItemsResponse getFragments(String name, Integer pageNumber, String withEmpty, String storage, String folder) throws ApiException { + ApiResponse resp = getFragmentsWithHttpInfo(name, pageNumber, withEmpty, storage, folder); + return resp.getData(); + } + + /** + * Read page fragments. + * + * @param name (required) + * @param pageNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextItemsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse getFragmentsWithHttpInfo(String name, Integer pageNumber, String withEmpty, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getFragmentsValidateBeforeCall(name, pageNumber, withEmpty, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read page fragments. (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getFragmentsAsync(String name, Integer pageNumber, String withEmpty, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getFragmentsValidateBeforeCall(name, pageNumber, withEmpty, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getHtmlInStorageToPdf + * @param srcPath Full source filename (ex. /folder1/folder2/template.zip) (required) + * @param htmlFileName Name of HTML file in ZIP. (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getHtmlInStorageToPdfCall(String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/html"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (htmlFileName != null) + localVarQueryParams.addAll(apiClient.parameterToPair("htmlFileName", htmlFileName)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (isLandscape != null) + localVarQueryParams.addAll(apiClient.parameterToPair("isLandscape", isLandscape)); + if (marginLeft != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginLeft", marginLeft)); + if (marginBottom != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginBottom", marginBottom)); + if (marginRight != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginRight", marginRight)); + if (marginTop != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginTop", marginTop)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getHtmlInStorageToPdfValidateBeforeCall(String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling getHtmlInStorageToPdf(Async)"); + } + + // verify the required parameter 'htmlFileName' is set + if (htmlFileName == null) { + throw new ApiException("Missing the required parameter 'htmlFileName' when calling getHtmlInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getHtmlInStorageToPdfCall(srcPath, htmlFileName, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert HTML file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.zip) (required) + * @param htmlFileName Name of HTML file in ZIP. (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getHtmlInStorageToPdf(String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop) throws ApiException { + ApiResponse resp = getHtmlInStorageToPdfWithHttpInfo(srcPath, htmlFileName, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop); + return resp.getData(); + } + + /** + * Convert HTML file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.zip) (required) + * @param htmlFileName Name of HTML file in ZIP. (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getHtmlInStorageToPdfWithHttpInfo(String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop) throws ApiException { + com.squareup.okhttp.Call call = getHtmlInStorageToPdfValidateBeforeCall(srcPath, htmlFileName, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert HTML file (located on storage) to PDF format and return resulting file in response. (asynchronously) + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.zip) (required) + * @param htmlFileName Name of HTML file in ZIP. (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getHtmlInStorageToPdfAsync(String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getHtmlInStorageToPdfValidateBeforeCall(srcPath, htmlFileName, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getImage + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param imageNumber The image format. (required) + * @param format Image format to convert, if not specified the common image data is read. (optional) + * @param width The converted image width. (optional, default to 0) + * @param height The converted image height. (optional, default to 0) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getImageCall(String name, Integer pageNumber, Integer imageNumber, String format, Integer width, Integer height, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/images/{imageNumber}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())) + .replaceAll("\\{" + "imageNumber" + "\\}", apiClient.escapeString(imageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (format != null) + localVarQueryParams.addAll(apiClient.parameterToPair("format", format)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getImageValidateBeforeCall(String name, Integer pageNumber, Integer imageNumber, String format, Integer width, Integer height, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getImage(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getImage(Async)"); + } + + // verify the required parameter 'imageNumber' is set + if (imageNumber == null) { + throw new ApiException("Missing the required parameter 'imageNumber' when calling getImage(Async)"); + } + + + com.squareup.okhttp.Call call = getImageCall(name, pageNumber, imageNumber, format, width, height, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Extract document image in format specified. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param imageNumber The image format. (required) + * @param format Image format to convert, if not specified the common image data is read. (optional) + * @param width The converted image width. (optional, default to 0) + * @param height The converted image height. (optional, default to 0) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getImage(String name, Integer pageNumber, Integer imageNumber, String format, Integer width, Integer height, String storage, String folder) throws ApiException { + ApiResponse resp = getImageWithHttpInfo(name, pageNumber, imageNumber, format, width, height, storage, folder); + return resp.getData(); + } + + /** + * Extract document image in format specified. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param imageNumber The image format. (required) + * @param format Image format to convert, if not specified the common image data is read. (optional) + * @param width The converted image width. (optional, default to 0) + * @param height The converted image height. (optional, default to 0) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getImageWithHttpInfo(String name, Integer pageNumber, Integer imageNumber, String format, Integer width, Integer height, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getImageValidateBeforeCall(name, pageNumber, imageNumber, format, width, height, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Extract document image in format specified. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param imageNumber The image format. (required) + * @param format Image format to convert, if not specified the common image data is read. (optional) + * @param width The converted image width. (optional, default to 0) + * @param height The converted image height. (optional, default to 0) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getImageAsync(String name, Integer pageNumber, Integer imageNumber, String format, Integer width, Integer height, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getImageValidateBeforeCall(name, pageNumber, imageNumber, format, width, height, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getImages + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getImagesCall(String name, Integer pageNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/images" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getImagesValidateBeforeCall(String name, Integer pageNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getImages(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getImages(Async)"); + } + + + com.squareup.okhttp.Call call = getImagesCall(name, pageNumber, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document images. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ImagesResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ImagesResponse getImages(String name, Integer pageNumber, String storage, String folder) throws ApiException { + ApiResponse resp = getImagesWithHttpInfo(name, pageNumber, storage, folder); + return resp.getData(); + } + + /** + * Read document images. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<ImagesResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getImagesWithHttpInfo(String name, Integer pageNumber, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getImagesValidateBeforeCall(name, pageNumber, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document images. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getImagesAsync(String name, Integer pageNumber, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getImagesValidateBeforeCall(name, pageNumber, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getLaTeXInStorageToPdf + * @param srcPath Full source filename (ex. /folder1/folder2/template.tex) (required) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getLaTeXInStorageToPdfCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/latex"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getLaTeXInStorageToPdfValidateBeforeCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling getLaTeXInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getLaTeXInStorageToPdfCall(srcPath, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert LaTeX file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.tex) (required) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getLaTeXInStorageToPdf(String srcPath) throws ApiException { + ApiResponse resp = getLaTeXInStorageToPdfWithHttpInfo(srcPath); + return resp.getData(); + } + + /** + * Convert LaTeX file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.tex) (required) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getLaTeXInStorageToPdfWithHttpInfo(String srcPath) throws ApiException { + com.squareup.okhttp.Call call = getLaTeXInStorageToPdfValidateBeforeCall(srcPath, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert LaTeX file (located on storage) to PDF format and return resulting file in response. (asynchronously) + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.tex) (required) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getLaTeXInStorageToPdfAsync(String srcPath, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getLaTeXInStorageToPdfValidateBeforeCall(srcPath, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getMhtInStorageToPdf + * @param srcPath Full source filename (ex. /folder1/folder2/template.mht) (required) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getMhtInStorageToPdfCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/mht"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getMhtInStorageToPdfValidateBeforeCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling getMhtInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getMhtInStorageToPdfCall(srcPath, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert MHT file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.mht) (required) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getMhtInStorageToPdf(String srcPath) throws ApiException { + ApiResponse resp = getMhtInStorageToPdfWithHttpInfo(srcPath); + return resp.getData(); + } + + /** + * Convert MHT file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.mht) (required) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getMhtInStorageToPdfWithHttpInfo(String srcPath) throws ApiException { + com.squareup.okhttp.Call call = getMhtInStorageToPdfValidateBeforeCall(srcPath, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert MHT file (located on storage) to PDF format and return resulting file in response. (asynchronously) + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.mht) (required) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getMhtInStorageToPdfAsync(String srcPath, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getMhtInStorageToPdfValidateBeforeCall(srcPath, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPage + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param format The format to convert if specified. (optional) + * @param width The converted image width. (optional, default to 0) + * @param height The converted image height. (optional, default to 0) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPageCall(String name, Integer pageNumber, String format, Integer width, Integer height, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (format != null) + localVarQueryParams.addAll(apiClient.parameterToPair("format", format)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPageValidateBeforeCall(String name, Integer pageNumber, String format, Integer width, Integer height, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPage(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getPage(Async)"); + } + + + com.squareup.okhttp.Call call = getPageCall(name, pageNumber, format, width, height, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert document page to format specified. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param format The format to convert if specified. (optional) + * @param width The converted image width. (optional, default to 0) + * @param height The converted image height. (optional, default to 0) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPage(String name, Integer pageNumber, String format, Integer width, Integer height, String storage, String folder) throws ApiException { + ApiResponse resp = getPageWithHttpInfo(name, pageNumber, format, width, height, storage, folder); + return resp.getData(); + } + + /** + * Convert document page to format specified. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param format The format to convert if specified. (optional) + * @param width The converted image width. (optional, default to 0) + * @param height The converted image height. (optional, default to 0) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPageWithHttpInfo(String name, Integer pageNumber, String format, Integer width, Integer height, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPageValidateBeforeCall(name, pageNumber, format, width, height, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert document page to format specified. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param format The format to convert if specified. (optional) + * @param width The converted image width. (optional, default to 0) + * @param height The converted image height. (optional, default to 0) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPageAsync(String name, Integer pageNumber, String format, Integer width, Integer height, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPageValidateBeforeCall(name, pageNumber, format, width, height, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPageAnnotation + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param annotationNumber The annotation number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPageAnnotationCall(String name, Integer pageNumber, Integer annotationNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/annotations/{annotationNumber}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())) + .replaceAll("\\{" + "annotationNumber" + "\\}", apiClient.escapeString(annotationNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPageAnnotationValidateBeforeCall(String name, Integer pageNumber, Integer annotationNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPageAnnotation(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getPageAnnotation(Async)"); + } + + // verify the required parameter 'annotationNumber' is set + if (annotationNumber == null) { + throw new ApiException("Missing the required parameter 'annotationNumber' when calling getPageAnnotation(Async)"); + } + + + com.squareup.okhttp.Call call = getPageAnnotationCall(name, pageNumber, annotationNumber, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document page annotation by its number. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param annotationNumber The annotation number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return AnnotationResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public AnnotationResponse getPageAnnotation(String name, Integer pageNumber, Integer annotationNumber, String storage, String folder) throws ApiException { + ApiResponse resp = getPageAnnotationWithHttpInfo(name, pageNumber, annotationNumber, storage, folder); + return resp.getData(); + } + + /** + * Read document page annotation by its number. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param annotationNumber The annotation number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<AnnotationResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPageAnnotationWithHttpInfo(String name, Integer pageNumber, Integer annotationNumber, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPageAnnotationValidateBeforeCall(name, pageNumber, annotationNumber, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document page annotation by its number. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param annotationNumber The annotation number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPageAnnotationAsync(String name, Integer pageNumber, Integer annotationNumber, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPageAnnotationValidateBeforeCall(name, pageNumber, annotationNumber, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPageAnnotations + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPageAnnotationsCall(String name, Integer pageNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/annotations" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPageAnnotationsValidateBeforeCall(String name, Integer pageNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPageAnnotations(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getPageAnnotations(Async)"); + } + + + com.squareup.okhttp.Call call = getPageAnnotationsCall(name, pageNumber, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read documant page annotations. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return AnnotationsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public AnnotationsResponse getPageAnnotations(String name, Integer pageNumber, String storage, String folder) throws ApiException { + ApiResponse resp = getPageAnnotationsWithHttpInfo(name, pageNumber, storage, folder); + return resp.getData(); + } + + /** + * Read documant page annotations. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<AnnotationsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPageAnnotationsWithHttpInfo(String name, Integer pageNumber, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPageAnnotationsValidateBeforeCall(name, pageNumber, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read documant page annotations. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPageAnnotationsAsync(String name, Integer pageNumber, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPageAnnotationsValidateBeforeCall(name, pageNumber, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPageLinkAnnotationByIndex + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param linkIndex The link index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPageLinkAnnotationByIndexCall(String name, Integer pageNumber, Integer linkIndex, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/links/{linkIndex}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())) + .replaceAll("\\{" + "linkIndex" + "\\}", apiClient.escapeString(linkIndex.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPageLinkAnnotationByIndexValidateBeforeCall(String name, Integer pageNumber, Integer linkIndex, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPageLinkAnnotationByIndex(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getPageLinkAnnotationByIndex(Async)"); + } + + // verify the required parameter 'linkIndex' is set + if (linkIndex == null) { + throw new ApiException("Missing the required parameter 'linkIndex' when calling getPageLinkAnnotationByIndex(Async)"); + } + + + com.squareup.okhttp.Call call = getPageLinkAnnotationByIndexCall(name, pageNumber, linkIndex, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document page link annotation by its index. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param linkIndex The link index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return LinkAnnotationResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public LinkAnnotationResponse getPageLinkAnnotationByIndex(String name, Integer pageNumber, Integer linkIndex, String storage, String folder) throws ApiException { + ApiResponse resp = getPageLinkAnnotationByIndexWithHttpInfo(name, pageNumber, linkIndex, storage, folder); + return resp.getData(); + } + + /** + * Read document page link annotation by its index. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param linkIndex The link index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<LinkAnnotationResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPageLinkAnnotationByIndexWithHttpInfo(String name, Integer pageNumber, Integer linkIndex, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPageLinkAnnotationByIndexValidateBeforeCall(name, pageNumber, linkIndex, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document page link annotation by its index. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param linkIndex The link index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPageLinkAnnotationByIndexAsync(String name, Integer pageNumber, Integer linkIndex, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPageLinkAnnotationByIndexValidateBeforeCall(name, pageNumber, linkIndex, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPageLinkAnnotations + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPageLinkAnnotationsCall(String name, Integer pageNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/links" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPageLinkAnnotationsValidateBeforeCall(String name, Integer pageNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPageLinkAnnotations(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getPageLinkAnnotations(Async)"); + } + + + com.squareup.okhttp.Call call = getPageLinkAnnotationsCall(name, pageNumber, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document page link annotations. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return LinkAnnotationsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public LinkAnnotationsResponse getPageLinkAnnotations(String name, Integer pageNumber, String storage, String folder) throws ApiException { + ApiResponse resp = getPageLinkAnnotationsWithHttpInfo(name, pageNumber, storage, folder); + return resp.getData(); + } + + /** + * Read document page link annotations. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<LinkAnnotationsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPageLinkAnnotationsWithHttpInfo(String name, Integer pageNumber, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPageLinkAnnotationsValidateBeforeCall(name, pageNumber, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document page link annotations. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPageLinkAnnotationsAsync(String name, Integer pageNumber, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPageLinkAnnotationsValidateBeforeCall(name, pageNumber, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPageText + * @param name The document name. (required) + * @param pageNumber Number of page (starting from 1). (required) + * @param X (required) + * @param Y (required) + * @param width (required) + * @param height (required) + * @param format List of formats for search. (optional) + * @param regex Formats are specified as a regular expression. (optional) + * @param splitRects Split result fragments (default is true). (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPageTextCall(String name, Integer pageNumber, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/text" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (format != null) + localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("multi", "format", format)); + if (regex != null) + localVarQueryParams.addAll(apiClient.parameterToPair("regex", regex)); + if (X != null) + localVarQueryParams.addAll(apiClient.parameterToPair("X", X)); + if (Y != null) + localVarQueryParams.addAll(apiClient.parameterToPair("Y", Y)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("Width", width)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("Height", height)); + if (splitRects != null) + localVarQueryParams.addAll(apiClient.parameterToPair("splitRects", splitRects)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPageTextValidateBeforeCall(String name, Integer pageNumber, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPageText(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getPageText(Async)"); + } + + // verify the required parameter 'X' is set + if (X == null) { + throw new ApiException("Missing the required parameter 'X' when calling getPageText(Async)"); + } + + // verify the required parameter 'Y' is set + if (Y == null) { + throw new ApiException("Missing the required parameter 'Y' when calling getPageText(Async)"); + } + + // verify the required parameter 'width' is set + if (width == null) { + throw new ApiException("Missing the required parameter 'width' when calling getPageText(Async)"); + } + + // verify the required parameter 'height' is set + if (height == null) { + throw new ApiException("Missing the required parameter 'height' when calling getPageText(Async)"); + } + + + com.squareup.okhttp.Call call = getPageTextCall(name, pageNumber, X, Y, width, height, format, regex, splitRects, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read page text items. + * + * @param name The document name. (required) + * @param pageNumber Number of page (starting from 1). (required) + * @param X (required) + * @param Y (required) + * @param width (required) + * @param height (required) + * @param format List of formats for search. (optional) + * @param regex Formats are specified as a regular expression. (optional) + * @param splitRects Split result fragments (default is true). (optional) + * @param folder The document folder. (optional) + * @return TextRectsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public TextRectsResponse getPageText(String name, Integer pageNumber, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder) throws ApiException { + ApiResponse resp = getPageTextWithHttpInfo(name, pageNumber, X, Y, width, height, format, regex, splitRects, folder); + return resp.getData(); + } + + /** + * Read page text items. + * + * @param name The document name. (required) + * @param pageNumber Number of page (starting from 1). (required) + * @param X (required) + * @param Y (required) + * @param width (required) + * @param height (required) + * @param format List of formats for search. (optional) + * @param regex Formats are specified as a regular expression. (optional) + * @param splitRects Split result fragments (default is true). (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<TextRectsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPageTextWithHttpInfo(String name, Integer pageNumber, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPageTextValidateBeforeCall(name, pageNumber, X, Y, width, height, format, regex, splitRects, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read page text items. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber Number of page (starting from 1). (required) + * @param X (required) + * @param Y (required) + * @param width (required) + * @param height (required) + * @param format List of formats for search. (optional) + * @param regex Formats are specified as a regular expression. (optional) + * @param splitRects Split result fragments (default is true). (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPageTextAsync(String name, Integer pageNumber, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPageTextValidateBeforeCall(name, pageNumber, X, Y, width, height, format, regex, splitRects, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPageTextItems + * @param name (required) + * @param pageNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getPageTextItemsCall(String name, Integer pageNumber, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/textItems" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (withEmpty != null) + localVarQueryParams.addAll(apiClient.parameterToPair("withEmpty", withEmpty)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPageTextItemsValidateBeforeCall(String name, Integer pageNumber, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPageTextItems(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getPageTextItems(Async)"); + } + + + com.squareup.okhttp.Call call = getPageTextItemsCall(name, pageNumber, withEmpty, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read page text items. + * + * @param name (required) + * @param pageNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return TextItemsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public TextItemsResponse getPageTextItems(String name, Integer pageNumber, String withEmpty, String storage, String folder) throws ApiException { + ApiResponse resp = getPageTextItemsWithHttpInfo(name, pageNumber, withEmpty, storage, folder); + return resp.getData(); + } + + /** + * Read page text items. + * + * @param name (required) + * @param pageNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextItemsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse getPageTextItemsWithHttpInfo(String name, Integer pageNumber, String withEmpty, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPageTextItemsValidateBeforeCall(name, pageNumber, withEmpty, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read page text items. (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getPageTextItemsAsync(String name, Integer pageNumber, String withEmpty, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPageTextItemsValidateBeforeCall(name, pageNumber, withEmpty, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPages + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPagesCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPagesValidateBeforeCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPages(Async)"); + } + + + com.squareup.okhttp.Call call = getPagesCall(name, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document pages info. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return DocumentPagesResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public DocumentPagesResponse getPages(String name, String storage, String folder) throws ApiException { + ApiResponse resp = getPagesWithHttpInfo(name, storage, folder); + return resp.getData(); + } + + /** + * Read document pages info. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<DocumentPagesResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPagesWithHttpInfo(String name, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPagesValidateBeforeCall(name, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document pages info. (asynchronously) + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPagesAsync(String name, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPagesValidateBeforeCall(name, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPclInStorageToPdf + * @param srcPath Full source filename (ex. /folder1/folder2/template.pcl) (required) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPclInStorageToPdfCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/pcl"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPclInStorageToPdfValidateBeforeCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling getPclInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getPclInStorageToPdfCall(srcPath, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert PCL file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.pcl) (required) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPclInStorageToPdf(String srcPath) throws ApiException { + ApiResponse resp = getPclInStorageToPdfWithHttpInfo(srcPath); + return resp.getData(); + } + + /** + * Convert PCL file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.pcl) (required) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPclInStorageToPdfWithHttpInfo(String srcPath) throws ApiException { + com.squareup.okhttp.Call call = getPclInStorageToPdfValidateBeforeCall(srcPath, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert PCL file (located on storage) to PDF format and return resulting file in response. (asynchronously) + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.pcl) (required) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPclInStorageToPdfAsync(String srcPath, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPclInStorageToPdfValidateBeforeCall(srcPath, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToDoc + * @param name The document name. (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToDocCall(String name, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/doc" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (addReturnToLineEnd != null) + localVarQueryParams.addAll(apiClient.parameterToPair("addReturnToLineEnd", addReturnToLineEnd)); + if (format != null) + localVarQueryParams.addAll(apiClient.parameterToPair("format", format)); + if (imageResolutionX != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageResolutionX", imageResolutionX)); + if (imageResolutionY != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageResolutionY", imageResolutionY)); + if (maxDistanceBetweenTextLines != null) + localVarQueryParams.addAll(apiClient.parameterToPair("maxDistanceBetweenTextLines", maxDistanceBetweenTextLines)); + if (mode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("mode", mode)); + if (recognizeBullets != null) + localVarQueryParams.addAll(apiClient.parameterToPair("recognizeBullets", recognizeBullets)); + if (relativeHorizontalProximity != null) + localVarQueryParams.addAll(apiClient.parameterToPair("relativeHorizontalProximity", relativeHorizontalProximity)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToDocValidateBeforeCall(String name, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToDoc(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToDocCall(name, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to DOC format and returns resulting file in response content + * + * @param name The document name. (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToDoc(String name, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToDocWithHttpInfo(name, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to DOC format and returns resulting file in response content + * + * @param name The document name. (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToDocWithHttpInfo(String name, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToDocValidateBeforeCall(name, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to DOC format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToDocAsync(String name, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToDocValidateBeforeCall(name, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToEpub + * @param name The document name. (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToEpubCall(String name, String contentRecognitionMode, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/epub" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (contentRecognitionMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("contentRecognitionMode", contentRecognitionMode)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToEpubValidateBeforeCall(String name, String contentRecognitionMode, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToEpub(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToEpubCall(name, contentRecognitionMode, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to EPUB format and returns resulting file in response content + * + * @param name The document name. (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToEpub(String name, String contentRecognitionMode, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToEpubWithHttpInfo(name, contentRecognitionMode, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to EPUB format and returns resulting file in response content + * + * @param name The document name. (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToEpubWithHttpInfo(String name, String contentRecognitionMode, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToEpubValidateBeforeCall(name, contentRecognitionMode, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to EPUB format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToEpubAsync(String name, String contentRecognitionMode, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToEpubValidateBeforeCall(name, contentRecognitionMode, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToHtml + * @param name The document name. (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToHtmlCall(String name, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/html" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (additionalMarginWidthInPoints != null) + localVarQueryParams.addAll(apiClient.parameterToPair("additionalMarginWidthInPoints", additionalMarginWidthInPoints)); + if (compressSvgGraphicsIfAny != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compressSvgGraphicsIfAny", compressSvgGraphicsIfAny)); + if (convertMarkedContentToLayers != null) + localVarQueryParams.addAll(apiClient.parameterToPair("convertMarkedContentToLayers", convertMarkedContentToLayers)); + if (defaultFontName != null) + localVarQueryParams.addAll(apiClient.parameterToPair("defaultFontName", defaultFontName)); + if (documentType != null) + localVarQueryParams.addAll(apiClient.parameterToPair("documentType", documentType)); + if (fixedLayout != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fixedLayout", fixedLayout)); + if (imageResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageResolution", imageResolution)); + if (minimalLineWidth != null) + localVarQueryParams.addAll(apiClient.parameterToPair("minimalLineWidth", minimalLineWidth)); + if (preventGlyphsGrouping != null) + localVarQueryParams.addAll(apiClient.parameterToPair("preventGlyphsGrouping", preventGlyphsGrouping)); + if (splitCssIntoPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("splitCssIntoPages", splitCssIntoPages)); + if (splitIntoPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("splitIntoPages", splitIntoPages)); + if (useZOrder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("useZOrder", useZOrder)); + if (antialiasingProcessing != null) + localVarQueryParams.addAll(apiClient.parameterToPair("antialiasingProcessing", antialiasingProcessing)); + if (cssClassNamesPrefix != null) + localVarQueryParams.addAll(apiClient.parameterToPair("cssClassNamesPrefix", cssClassNamesPrefix)); + if (explicitListOfSavedPages != null) + localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("multi", "explicitListOfSavedPages", explicitListOfSavedPages)); + if (fontEncodingStrategy != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fontEncodingStrategy", fontEncodingStrategy)); + if (fontSavingMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fontSavingMode", fontSavingMode)); + if (htmlMarkupGenerationMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("htmlMarkupGenerationMode", htmlMarkupGenerationMode)); + if (lettersPositioningMethod != null) + localVarQueryParams.addAll(apiClient.parameterToPair("lettersPositioningMethod", lettersPositioningMethod)); + if (pagesFlowTypeDependsOnViewersScreenSize != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pagesFlowTypeDependsOnViewersScreenSize", pagesFlowTypeDependsOnViewersScreenSize)); + if (partsEmbeddingMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("partsEmbeddingMode", partsEmbeddingMode)); + if (rasterImagesSavingMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("rasterImagesSavingMode", rasterImagesSavingMode)); + if (removeEmptyAreasOnTopAndBottom != null) + localVarQueryParams.addAll(apiClient.parameterToPair("removeEmptyAreasOnTopAndBottom", removeEmptyAreasOnTopAndBottom)); + if (saveShadowedTextsAsTransparentTexts != null) + localVarQueryParams.addAll(apiClient.parameterToPair("saveShadowedTextsAsTransparentTexts", saveShadowedTextsAsTransparentTexts)); + if (saveTransparentTexts != null) + localVarQueryParams.addAll(apiClient.parameterToPair("saveTransparentTexts", saveTransparentTexts)); + if (specialFolderForAllImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("specialFolderForAllImages", specialFolderForAllImages)); + if (specialFolderForSvgImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("specialFolderForSvgImages", specialFolderForSvgImages)); + if (trySaveTextUnderliningAndStrikeoutingInCss != null) + localVarQueryParams.addAll(apiClient.parameterToPair("trySaveTextUnderliningAndStrikeoutingInCss", trySaveTextUnderliningAndStrikeoutingInCss)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToHtmlValidateBeforeCall(String name, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToHtml(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToHtmlCall(name, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to Html format and returns resulting file in response content + * + * @param name The document name. (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToHtml(String name, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToHtmlWithHttpInfo(name, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to Html format and returns resulting file in response content + * + * @param name The document name. (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToHtmlWithHttpInfo(String name, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToHtmlValidateBeforeCall(name, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to Html format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToHtmlAsync(String name, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToHtmlValidateBeforeCall(name, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToLaTeX + * @param name The document name. (required) + * @param pagesCount Pages count. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToLaTeXCall(String name, Integer pagesCount, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/latex" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (pagesCount != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pagesCount", pagesCount)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToLaTeXValidateBeforeCall(String name, Integer pagesCount, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToLaTeX(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToLaTeXCall(name, pagesCount, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to LaTeX format and returns resulting file in response content + * + * @param name The document name. (required) + * @param pagesCount Pages count. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToLaTeX(String name, Integer pagesCount, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToLaTeXWithHttpInfo(name, pagesCount, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to LaTeX format and returns resulting file in response content + * + * @param name The document name. (required) + * @param pagesCount Pages count. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToLaTeXWithHttpInfo(String name, Integer pagesCount, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToLaTeXValidateBeforeCall(name, pagesCount, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to LaTeX format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param pagesCount Pages count. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToLaTeXAsync(String name, Integer pagesCount, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToLaTeXValidateBeforeCall(name, pagesCount, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToMobiXml + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToMobiXmlCall(String name, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/mobixml" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToMobiXmlValidateBeforeCall(String name, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToMobiXml(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToMobiXmlCall(name, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to MOBIXML format and returns resulting file in response content + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToMobiXml(String name, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToMobiXmlWithHttpInfo(name, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to MOBIXML format and returns resulting file in response content + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToMobiXmlWithHttpInfo(String name, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToMobiXmlValidateBeforeCall(name, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to MOBIXML format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToMobiXmlAsync(String name, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToMobiXmlValidateBeforeCall(name, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToPdfA + * @param name The document name. (required) + * @param type Type of PdfA format. (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToPdfACall(String name, String type, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/pdfa" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (type != null) + localVarQueryParams.addAll(apiClient.parameterToPair("type", type)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToPdfAValidateBeforeCall(String name, String type, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToPdfA(Async)"); + } + + // verify the required parameter 'type' is set + if (type == null) { + throw new ApiException("Missing the required parameter 'type' when calling getPdfInStorageToPdfA(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToPdfACall(name, type, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to PdfA format and returns resulting file in response content + * + * @param name The document name. (required) + * @param type Type of PdfA format. (required) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToPdfA(String name, String type, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToPdfAWithHttpInfo(name, type, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to PdfA format and returns resulting file in response content + * + * @param name The document name. (required) + * @param type Type of PdfA format. (required) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToPdfAWithHttpInfo(String name, String type, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToPdfAValidateBeforeCall(name, type, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to PdfA format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param type Type of PdfA format. (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToPdfAAsync(String name, String type, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToPdfAValidateBeforeCall(name, type, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToPptx + * @param name The document name. (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToPptxCall(String name, Boolean separateImages, Boolean slidesAsImages, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/pptx" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (separateImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("separateImages", separateImages)); + if (slidesAsImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("slidesAsImages", slidesAsImages)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToPptxValidateBeforeCall(String name, Boolean separateImages, Boolean slidesAsImages, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToPptx(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToPptxCall(name, separateImages, slidesAsImages, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to PPTX format and returns resulting file in response content + * + * @param name The document name. (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToPptx(String name, Boolean separateImages, Boolean slidesAsImages, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToPptxWithHttpInfo(name, separateImages, slidesAsImages, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to PPTX format and returns resulting file in response content + * + * @param name The document name. (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToPptxWithHttpInfo(String name, Boolean separateImages, Boolean slidesAsImages, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToPptxValidateBeforeCall(name, separateImages, slidesAsImages, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to PPTX format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToPptxAsync(String name, Boolean separateImages, Boolean slidesAsImages, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToPptxValidateBeforeCall(name, separateImages, slidesAsImages, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToSvg + * @param name The document name. (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToSvgCall(String name, Boolean compressOutputToZipArchive, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/svg" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (compressOutputToZipArchive != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compressOutputToZipArchive", compressOutputToZipArchive)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToSvgValidateBeforeCall(String name, Boolean compressOutputToZipArchive, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToSvg(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToSvgCall(name, compressOutputToZipArchive, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to SVG format and returns resulting file in response content + * + * @param name The document name. (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToSvg(String name, Boolean compressOutputToZipArchive, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToSvgWithHttpInfo(name, compressOutputToZipArchive, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to SVG format and returns resulting file in response content + * + * @param name The document name. (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToSvgWithHttpInfo(String name, Boolean compressOutputToZipArchive, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToSvgValidateBeforeCall(name, compressOutputToZipArchive, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to SVG format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToSvgAsync(String name, Boolean compressOutputToZipArchive, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToSvgValidateBeforeCall(name, compressOutputToZipArchive, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToTiff + * @param name The document name. (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToTiffCall(String name, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/tiff" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (brightness != null) + localVarQueryParams.addAll(apiClient.parameterToPair("brightness", brightness)); + if (compression != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compression", compression)); + if (colorDepth != null) + localVarQueryParams.addAll(apiClient.parameterToPair("colorDepth", colorDepth)); + if (leftMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("leftMargin", leftMargin)); + if (rightMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("rightMargin", rightMargin)); + if (topMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("topMargin", topMargin)); + if (bottomMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("bottomMargin", bottomMargin)); + if (orientation != null) + localVarQueryParams.addAll(apiClient.parameterToPair("orientation", orientation)); + if (skipBlankPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("skipBlankPages", skipBlankPages)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (xResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("xResolution", xResolution)); + if (yResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("yResolution", yResolution)); + if (pageIndex != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pageIndex", pageIndex)); + if (pageCount != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pageCount", pageCount)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToTiffValidateBeforeCall(String name, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToTiff(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToTiffCall(name, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to TIFF format and returns resulting file in response content + * + * @param name The document name. (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToTiff(String name, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToTiffWithHttpInfo(name, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to TIFF format and returns resulting file in response content + * + * @param name The document name. (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToTiffWithHttpInfo(String name, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToTiffValidateBeforeCall(name, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to TIFF format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToTiffAsync(String name, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToTiffValidateBeforeCall(name, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToXls + * @param name The document name. (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToXlsCall(String name, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/xls" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (insertBlankColumnAtFirst != null) + localVarQueryParams.addAll(apiClient.parameterToPair("insertBlankColumnAtFirst", insertBlankColumnAtFirst)); + if (minimizeTheNumberOfWorksheets != null) + localVarQueryParams.addAll(apiClient.parameterToPair("minimizeTheNumberOfWorksheets", minimizeTheNumberOfWorksheets)); + if (scaleFactor != null) + localVarQueryParams.addAll(apiClient.parameterToPair("scaleFactor", scaleFactor)); + if (uniformWorksheets != null) + localVarQueryParams.addAll(apiClient.parameterToPair("uniformWorksheets", uniformWorksheets)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToXlsValidateBeforeCall(String name, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToXls(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToXlsCall(name, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to XLS format and returns resulting file in response content + * + * @param name The document name. (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToXls(String name, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToXlsWithHttpInfo(name, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to XLS format and returns resulting file in response content + * + * @param name The document name. (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToXlsWithHttpInfo(String name, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToXlsValidateBeforeCall(name, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to XLS format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToXlsAsync(String name, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToXlsValidateBeforeCall(name, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToXml + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToXmlCall(String name, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/xml" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToXmlValidateBeforeCall(String name, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToXml(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToXmlCall(name, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to XML format and returns resulting file in response content + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToXml(String name, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToXmlWithHttpInfo(name, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to XML format and returns resulting file in response content + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToXmlWithHttpInfo(String name, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToXmlValidateBeforeCall(name, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to XML format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToXmlAsync(String name, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToXmlValidateBeforeCall(name, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getPdfInStorageToXps + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToXpsCall(String name, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/xps" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getPdfInStorageToXpsValidateBeforeCall(String name, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getPdfInStorageToXps(Async)"); + } + + + com.squareup.okhttp.Call call = getPdfInStorageToXpsCall(name, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to XPS format and returns resulting file in response content + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getPdfInStorageToXps(String name, String folder) throws ApiException { + ApiResponse resp = getPdfInStorageToXpsWithHttpInfo(name, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to XPS format and returns resulting file in response content + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPdfInStorageToXpsWithHttpInfo(String name, String folder) throws ApiException { + com.squareup.okhttp.Call call = getPdfInStorageToXpsValidateBeforeCall(name, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to XPS format and returns resulting file in response content (asynchronously) + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getPdfInStorageToXpsAsync(String name, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getPdfInStorageToXpsValidateBeforeCall(name, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getSegment + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param segmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getSegmentCall(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/fragments/{fragmentNumber}/segments/{segmentNumber}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())) + .replaceAll("\\{" + "fragmentNumber" + "\\}", apiClient.escapeString(fragmentNumber.toString())) + .replaceAll("\\{" + "segmentNumber" + "\\}", apiClient.escapeString(segmentNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getSegmentValidateBeforeCall(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getSegment(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getSegment(Async)"); + } + + // verify the required parameter 'fragmentNumber' is set + if (fragmentNumber == null) { + throw new ApiException("Missing the required parameter 'fragmentNumber' when calling getSegment(Async)"); + } + + // verify the required parameter 'segmentNumber' is set + if (segmentNumber == null) { + throw new ApiException("Missing the required parameter 'segmentNumber' when calling getSegment(Async)"); + } + + + com.squareup.okhttp.Call call = getSegmentCall(name, pageNumber, fragmentNumber, segmentNumber, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read segment. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param segmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @return TextItemResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public TextItemResponse getSegment(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder) throws ApiException { + ApiResponse resp = getSegmentWithHttpInfo(name, pageNumber, fragmentNumber, segmentNumber, storage, folder); + return resp.getData(); + } + + /** + * Read segment. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param segmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextItemResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse getSegmentWithHttpInfo(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getSegmentValidateBeforeCall(name, pageNumber, fragmentNumber, segmentNumber, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read segment. (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param segmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getSegmentAsync(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getSegmentValidateBeforeCall(name, pageNumber, fragmentNumber, segmentNumber, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getSegmentTextFormat + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param segmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getSegmentTextFormatCall(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/fragments/{fragmentNumber}/segments/{segmentNumber}/textformat" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())) + .replaceAll("\\{" + "fragmentNumber" + "\\}", apiClient.escapeString(fragmentNumber.toString())) + .replaceAll("\\{" + "segmentNumber" + "\\}", apiClient.escapeString(segmentNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getSegmentTextFormatValidateBeforeCall(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getSegmentTextFormat(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getSegmentTextFormat(Async)"); + } + + // verify the required parameter 'fragmentNumber' is set + if (fragmentNumber == null) { + throw new ApiException("Missing the required parameter 'fragmentNumber' when calling getSegmentTextFormat(Async)"); + } + + // verify the required parameter 'segmentNumber' is set + if (segmentNumber == null) { + throw new ApiException("Missing the required parameter 'segmentNumber' when calling getSegmentTextFormat(Async)"); + } + + + com.squareup.okhttp.Call call = getSegmentTextFormatCall(name, pageNumber, fragmentNumber, segmentNumber, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read segment text format. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param segmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @return TextFormatResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public TextFormatResponse getSegmentTextFormat(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder) throws ApiException { + ApiResponse resp = getSegmentTextFormatWithHttpInfo(name, pageNumber, fragmentNumber, segmentNumber, storage, folder); + return resp.getData(); + } + + /** + * Read segment text format. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param segmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextFormatResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse getSegmentTextFormatWithHttpInfo(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getSegmentTextFormatValidateBeforeCall(name, pageNumber, fragmentNumber, segmentNumber, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read segment text format. (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param segmentNumber (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getSegmentTextFormatAsync(String name, Integer pageNumber, Integer fragmentNumber, Integer segmentNumber, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getSegmentTextFormatValidateBeforeCall(name, pageNumber, fragmentNumber, segmentNumber, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getSegments + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getSegmentsCall(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/fragments/{fragmentNumber}/segments" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())) + .replaceAll("\\{" + "fragmentNumber" + "\\}", apiClient.escapeString(fragmentNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (withEmpty != null) + localVarQueryParams.addAll(apiClient.parameterToPair("withEmpty", withEmpty)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getSegmentsValidateBeforeCall(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getSegments(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling getSegments(Async)"); + } + + // verify the required parameter 'fragmentNumber' is set + if (fragmentNumber == null) { + throw new ApiException("Missing the required parameter 'fragmentNumber' when calling getSegments(Async)"); + } + + + com.squareup.okhttp.Call call = getSegmentsCall(name, pageNumber, fragmentNumber, withEmpty, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read fragment segments. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return TextItemsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public TextItemsResponse getSegments(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder) throws ApiException { + ApiResponse resp = getSegmentsWithHttpInfo(name, pageNumber, fragmentNumber, withEmpty, storage, folder); + return resp.getData(); + } + + /** + * Read fragment segments. + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextItemsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse getSegmentsWithHttpInfo(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getSegmentsValidateBeforeCall(name, pageNumber, fragmentNumber, withEmpty, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read fragment segments. (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param fragmentNumber (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getSegmentsAsync(String name, Integer pageNumber, Integer fragmentNumber, String withEmpty, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getSegmentsValidateBeforeCall(name, pageNumber, fragmentNumber, withEmpty, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getSvgInStorageToPdf + * @param srcPath Full source filename (ex. /folder1/folder2/template.svg) (required) + * @param adjustPageSize Adjust page size (optional) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getSvgInStorageToPdfCall(String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/svg"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (adjustPageSize != null) + localVarQueryParams.addAll(apiClient.parameterToPair("adjustPageSize", adjustPageSize)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (isLandscape != null) + localVarQueryParams.addAll(apiClient.parameterToPair("isLandscape", isLandscape)); + if (marginLeft != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginLeft", marginLeft)); + if (marginBottom != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginBottom", marginBottom)); + if (marginRight != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginRight", marginRight)); + if (marginTop != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginTop", marginTop)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getSvgInStorageToPdfValidateBeforeCall(String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling getSvgInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getSvgInStorageToPdfCall(srcPath, adjustPageSize, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert SVG file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.svg) (required) + * @param adjustPageSize Adjust page size (optional) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getSvgInStorageToPdf(String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop) throws ApiException { + ApiResponse resp = getSvgInStorageToPdfWithHttpInfo(srcPath, adjustPageSize, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop); + return resp.getData(); + } + + /** + * Convert SVG file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.svg) (required) + * @param adjustPageSize Adjust page size (optional) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getSvgInStorageToPdfWithHttpInfo(String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop) throws ApiException { + com.squareup.okhttp.Call call = getSvgInStorageToPdfValidateBeforeCall(srcPath, adjustPageSize, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert SVG file (located on storage) to PDF format and return resulting file in response. (asynchronously) + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.svg) (required) + * @param adjustPageSize Adjust page size (optional) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getSvgInStorageToPdfAsync(String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getSvgInStorageToPdfValidateBeforeCall(srcPath, adjustPageSize, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getText + * @param name The document name. (required) + * @param X (required) + * @param Y (required) + * @param width (required) + * @param height (required) + * @param format List of formats for search. (optional) + * @param regex Formats are specified as a regular expression. (optional) + * @param splitRects Split result fragments (default is true). (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getTextCall(String name, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/text" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (format != null) + localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("multi", "format", format)); + if (regex != null) + localVarQueryParams.addAll(apiClient.parameterToPair("regex", regex)); + if (X != null) + localVarQueryParams.addAll(apiClient.parameterToPair("X", X)); + if (Y != null) + localVarQueryParams.addAll(apiClient.parameterToPair("Y", Y)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("Width", width)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("Height", height)); + if (splitRects != null) + localVarQueryParams.addAll(apiClient.parameterToPair("splitRects", splitRects)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getTextValidateBeforeCall(String name, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getText(Async)"); + } + + // verify the required parameter 'X' is set + if (X == null) { + throw new ApiException("Missing the required parameter 'X' when calling getText(Async)"); + } + + // verify the required parameter 'Y' is set + if (Y == null) { + throw new ApiException("Missing the required parameter 'Y' when calling getText(Async)"); + } + + // verify the required parameter 'width' is set + if (width == null) { + throw new ApiException("Missing the required parameter 'width' when calling getText(Async)"); + } + + // verify the required parameter 'height' is set + if (height == null) { + throw new ApiException("Missing the required parameter 'height' when calling getText(Async)"); + } + + + com.squareup.okhttp.Call call = getTextCall(name, X, Y, width, height, format, regex, splitRects, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document text. + * + * @param name The document name. (required) + * @param X (required) + * @param Y (required) + * @param width (required) + * @param height (required) + * @param format List of formats for search. (optional) + * @param regex Formats are specified as a regular expression. (optional) + * @param splitRects Split result fragments (default is true). (optional) + * @param folder The document folder. (optional) + * @return TextRectsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public TextRectsResponse getText(String name, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder) throws ApiException { + ApiResponse resp = getTextWithHttpInfo(name, X, Y, width, height, format, regex, splitRects, folder); + return resp.getData(); + } + + /** + * Read document text. + * + * @param name The document name. (required) + * @param X (required) + * @param Y (required) + * @param width (required) + * @param height (required) + * @param format List of formats for search. (optional) + * @param regex Formats are specified as a regular expression. (optional) + * @param splitRects Split result fragments (default is true). (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<TextRectsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getTextWithHttpInfo(String name, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder) throws ApiException { + com.squareup.okhttp.Call call = getTextValidateBeforeCall(name, X, Y, width, height, format, regex, splitRects, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document text. (asynchronously) + * + * @param name The document name. (required) + * @param X (required) + * @param Y (required) + * @param width (required) + * @param height (required) + * @param format List of formats for search. (optional) + * @param regex Formats are specified as a regular expression. (optional) + * @param splitRects Split result fragments (default is true). (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getTextAsync(String name, Integer X, Integer Y, Integer width, Integer height, List format, String regex, Boolean splitRects, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getTextValidateBeforeCall(name, X, Y, width, height, format, regex, splitRects, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getTextItems + * @param name (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getTextItemsCall(String name, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/textItems" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (withEmpty != null) + localVarQueryParams.addAll(apiClient.parameterToPair("withEmpty", withEmpty)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getTextItemsValidateBeforeCall(String name, String withEmpty, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getTextItems(Async)"); + } + + + com.squareup.okhttp.Call call = getTextItemsCall(name, withEmpty, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Read document text items. + * + * @param name (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return TextItemsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public TextItemsResponse getTextItems(String name, String withEmpty, String storage, String folder) throws ApiException { + ApiResponse resp = getTextItemsWithHttpInfo(name, withEmpty, storage, folder); + return resp.getData(); + } + + /** + * Read document text items. + * + * @param name (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextItemsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse getTextItemsWithHttpInfo(String name, String withEmpty, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getTextItemsValidateBeforeCall(name, withEmpty, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Read document text items. (asynchronously) + * + * @param name (required) + * @param withEmpty (optional) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call getTextItemsAsync(String name, String withEmpty, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getTextItemsValidateBeforeCall(name, withEmpty, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getVerifySignature + * @param name The document name. (required) + * @param signName Sign name. (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getVerifySignatureCall(String name, String signName, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/verifySignature" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (signName != null) + localVarQueryParams.addAll(apiClient.parameterToPair("signName", signName)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getVerifySignatureValidateBeforeCall(String name, String signName, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getVerifySignature(Async)"); + } + + // verify the required parameter 'signName' is set + if (signName == null) { + throw new ApiException("Missing the required parameter 'signName' when calling getVerifySignature(Async)"); + } + + + com.squareup.okhttp.Call call = getVerifySignatureCall(name, signName, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Verify signature document. + * + * @param name The document name. (required) + * @param signName Sign name. (required) + * @param folder The document folder. (optional) + * @return SignatureVerifyResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SignatureVerifyResponse getVerifySignature(String name, String signName, String folder) throws ApiException { + ApiResponse resp = getVerifySignatureWithHttpInfo(name, signName, folder); + return resp.getData(); + } + + /** + * Verify signature document. + * + * @param name The document name. (required) + * @param signName Sign name. (required) + * @param folder The document folder. (optional) + * @return ApiResponse<SignatureVerifyResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getVerifySignatureWithHttpInfo(String name, String signName, String folder) throws ApiException { + com.squareup.okhttp.Call call = getVerifySignatureValidateBeforeCall(name, signName, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Verify signature document. (asynchronously) + * + * @param name The document name. (required) + * @param signName Sign name. (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getVerifySignatureAsync(String name, String signName, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getVerifySignatureValidateBeforeCall(name, signName, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getWebInStorageToPdf + * @param url Source url (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getWebInStorageToPdfCall(String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/web"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (url != null) + localVarQueryParams.addAll(apiClient.parameterToPair("url", url)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (isLandscape != null) + localVarQueryParams.addAll(apiClient.parameterToPair("isLandscape", isLandscape)); + if (marginLeft != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginLeft", marginLeft)); + if (marginBottom != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginBottom", marginBottom)); + if (marginRight != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginRight", marginRight)); + if (marginTop != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginTop", marginTop)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getWebInStorageToPdfValidateBeforeCall(String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'url' is set + if (url == null) { + throw new ApiException("Missing the required parameter 'url' when calling getWebInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getWebInStorageToPdfCall(url, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert web page to PDF format and return resulting file in response. + * + * @param url Source url (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getWebInStorageToPdf(String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop) throws ApiException { + ApiResponse resp = getWebInStorageToPdfWithHttpInfo(url, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop); + return resp.getData(); + } + + /** + * Convert web page to PDF format and return resulting file in response. + * + * @param url Source url (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getWebInStorageToPdfWithHttpInfo(String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop) throws ApiException { + com.squareup.okhttp.Call call = getWebInStorageToPdfValidateBeforeCall(url, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert web page to PDF format and return resulting file in response. (asynchronously) + * + * @param url Source url (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getWebInStorageToPdfAsync(String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getWebInStorageToPdfValidateBeforeCall(url, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getWordsPerPage + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getWordsPerPageCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/wordCount" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getWordsPerPageValidateBeforeCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getWordsPerPage(Async)"); + } + + + com.squareup.okhttp.Call call = getWordsPerPageCall(name, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Get number of words per document page. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return WordCountResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public WordCountResponse getWordsPerPage(String name, String storage, String folder) throws ApiException { + ApiResponse resp = getWordsPerPageWithHttpInfo(name, storage, folder); + return resp.getData(); + } + + /** + * Get number of words per document page. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<WordCountResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getWordsPerPageWithHttpInfo(String name, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = getWordsPerPageValidateBeforeCall(name, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Get number of words per document page. (asynchronously) + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getWordsPerPageAsync(String name, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getWordsPerPageValidateBeforeCall(name, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getXfaPdfInStorageToAcroForm + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getXfaPdfInStorageToAcroFormCall(String name, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/xfatoacroform" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getXfaPdfInStorageToAcroFormValidateBeforeCall(String name, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling getXfaPdfInStorageToAcroForm(Async)"); + } + + + com.squareup.okhttp.Call call = getXfaPdfInStorageToAcroFormCall(name, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document which contatins XFA form (located on storage) to PDF with AcroForm and returns resulting file response content + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getXfaPdfInStorageToAcroForm(String name, String folder) throws ApiException { + ApiResponse resp = getXfaPdfInStorageToAcroFormWithHttpInfo(name, folder); + return resp.getData(); + } + + /** + * Converts PDF document which contatins XFA form (located on storage) to PDF with AcroForm and returns resulting file response content + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getXfaPdfInStorageToAcroFormWithHttpInfo(String name, String folder) throws ApiException { + com.squareup.okhttp.Call call = getXfaPdfInStorageToAcroFormValidateBeforeCall(name, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document which contatins XFA form (located on storage) to PDF with AcroForm and returns resulting file response content (asynchronously) + * + * @param name The document name. (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getXfaPdfInStorageToAcroFormAsync(String name, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getXfaPdfInStorageToAcroFormValidateBeforeCall(name, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getXmlInStorageToPdf + * @param srcPath Full source filename (ex. /folder1/folder2/template.xml) (required) + * @param xslFilePath Full XSL source filename (ex. /folder1/folder2/template.xsl) (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getXmlInStorageToPdfCall(String srcPath, String xslFilePath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/xml"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (xslFilePath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("xslFilePath", xslFilePath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getXmlInStorageToPdfValidateBeforeCall(String srcPath, String xslFilePath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling getXmlInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getXmlInStorageToPdfCall(srcPath, xslFilePath, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert XML file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.xml) (required) + * @param xslFilePath Full XSL source filename (ex. /folder1/folder2/template.xsl) (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getXmlInStorageToPdf(String srcPath, String xslFilePath) throws ApiException { + ApiResponse resp = getXmlInStorageToPdfWithHttpInfo(srcPath, xslFilePath); + return resp.getData(); + } + + /** + * Convert XML file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.xml) (required) + * @param xslFilePath Full XSL source filename (ex. /folder1/folder2/template.xsl) (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getXmlInStorageToPdfWithHttpInfo(String srcPath, String xslFilePath) throws ApiException { + com.squareup.okhttp.Call call = getXmlInStorageToPdfValidateBeforeCall(srcPath, xslFilePath, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert XML file (located on storage) to PDF format and return resulting file in response. (asynchronously) + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.xml) (required) + * @param xslFilePath Full XSL source filename (ex. /folder1/folder2/template.xsl) (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getXmlInStorageToPdfAsync(String srcPath, String xslFilePath, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getXmlInStorageToPdfValidateBeforeCall(srcPath, xslFilePath, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getXpsInStorageToPdf + * @param srcPath Full source filename (ex. /folder1/folder2/template.xps) (required) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getXpsInStorageToPdfCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/xps"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getXpsInStorageToPdfValidateBeforeCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling getXpsInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getXpsInStorageToPdfCall(srcPath, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert XPS file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.xps) (required) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getXpsInStorageToPdf(String srcPath) throws ApiException { + ApiResponse resp = getXpsInStorageToPdfWithHttpInfo(srcPath); + return resp.getData(); + } + + /** + * Convert XPS file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.xps) (required) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getXpsInStorageToPdfWithHttpInfo(String srcPath) throws ApiException { + com.squareup.okhttp.Call call = getXpsInStorageToPdfValidateBeforeCall(srcPath, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert XPS file (located on storage) to PDF format and return resulting file in response. (asynchronously) + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.xps) (required) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getXpsInStorageToPdfAsync(String srcPath, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getXpsInStorageToPdfValidateBeforeCall(srcPath, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for getXslFoInStorageToPdf + * @param srcPath Full source filename (ex. /folder1/folder2/template.xslfo) (required) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call getXslFoInStorageToPdfCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/create/xslfo"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call getXslFoInStorageToPdfValidateBeforeCall(String srcPath, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling getXslFoInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = getXslFoInStorageToPdfCall(srcPath, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert XslFo file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.xslfo) (required) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public File getXslFoInStorageToPdf(String srcPath) throws ApiException { + ApiResponse resp = getXslFoInStorageToPdfWithHttpInfo(srcPath); + return resp.getData(); + } + + /** + * Convert XslFo file (located on storage) to PDF format and return resulting file in response. + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.xslfo) (required) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getXslFoInStorageToPdfWithHttpInfo(String srcPath) throws ApiException { + com.squareup.okhttp.Call call = getXslFoInStorageToPdfValidateBeforeCall(srcPath, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert XslFo file (located on storage) to PDF format and return resulting file in response. (asynchronously) + * + * @param srcPath Full source filename (ex. /folder1/folder2/template.xslfo) (required) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call getXslFoInStorageToPdfAsync(String srcPath, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = getXslFoInStorageToPdfValidateBeforeCall(srcPath, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postAppendDocument + * @param name The original document name. (required) + * @param appendDocument with the append document data. (optional) + * @param appendFile Append file server path. (optional) + * @param startPage Appending start page. (optional, default to 0) + * @param endPage Appending end page. (optional, default to 0) + * @param storage The documents storage. (optional) + * @param folder The original document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postAppendDocumentCall(String name, AppendDocument appendDocument, String appendFile, Integer startPage, Integer endPage, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = appendDocument; + + // create path and map variables + String localVarPath = "/pdf/{name}/appendDocument" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (appendFile != null) + localVarQueryParams.addAll(apiClient.parameterToPair("appendFile", appendFile)); + if (startPage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("startPage", startPage)); + if (endPage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("endPage", endPage)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postAppendDocumentValidateBeforeCall(String name, AppendDocument appendDocument, String appendFile, Integer startPage, Integer endPage, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postAppendDocument(Async)"); + } + + + com.squareup.okhttp.Call call = postAppendDocumentCall(name, appendDocument, appendFile, startPage, endPage, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Append document to existing one. + * + * @param name The original document name. (required) + * @param appendDocument with the append document data. (optional) + * @param appendFile Append file server path. (optional) + * @param startPage Appending start page. (optional, default to 0) + * @param endPage Appending end page. (optional, default to 0) + * @param storage The documents storage. (optional) + * @param folder The original document folder. (optional) + * @return DocumentResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public DocumentResponse postAppendDocument(String name, AppendDocument appendDocument, String appendFile, Integer startPage, Integer endPage, String storage, String folder) throws ApiException { + ApiResponse resp = postAppendDocumentWithHttpInfo(name, appendDocument, appendFile, startPage, endPage, storage, folder); + return resp.getData(); + } + + /** + * Append document to existing one. + * + * @param name The original document name. (required) + * @param appendDocument with the append document data. (optional) + * @param appendFile Append file server path. (optional) + * @param startPage Appending start page. (optional, default to 0) + * @param endPage Appending end page. (optional, default to 0) + * @param storage The documents storage. (optional) + * @param folder The original document folder. (optional) + * @return ApiResponse<DocumentResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postAppendDocumentWithHttpInfo(String name, AppendDocument appendDocument, String appendFile, Integer startPage, Integer endPage, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postAppendDocumentValidateBeforeCall(name, appendDocument, appendFile, startPage, endPage, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Append document to existing one. (asynchronously) + * + * @param name The original document name. (required) + * @param appendDocument with the append document data. (optional) + * @param appendFile Append file server path. (optional) + * @param startPage Appending start page. (optional, default to 0) + * @param endPage Appending end page. (optional, default to 0) + * @param storage The documents storage. (optional) + * @param folder The original document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postAppendDocumentAsync(String name, AppendDocument appendDocument, String appendFile, Integer startPage, Integer endPage, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postAppendDocumentValidateBeforeCall(name, appendDocument, appendFile, startPage, endPage, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postCreateField + * @param name The document name. (required) + * @param page Document page number. (required) + * @param field with the field data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postCreateFieldCall(String name, Integer page, Field field, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = field; + + // create path and map variables + String localVarPath = "/pdf/{name}/fields" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (page != null) + localVarQueryParams.addAll(apiClient.parameterToPair("page", page)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postCreateFieldValidateBeforeCall(String name, Integer page, Field field, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postCreateField(Async)"); + } + + // verify the required parameter 'page' is set + if (page == null) { + throw new ApiException("Missing the required parameter 'page' when calling postCreateField(Async)"); + } + + + com.squareup.okhttp.Call call = postCreateFieldCall(name, page, field, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Create field. + * + * @param name The document name. (required) + * @param page Document page number. (required) + * @param field with the field data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse postCreateField(String name, Integer page, Field field, String storage, String folder) throws ApiException { + ApiResponse resp = postCreateFieldWithHttpInfo(name, page, field, storage, folder); + return resp.getData(); + } + + /** + * Create field. + * + * @param name The document name. (required) + * @param page Document page number. (required) + * @param field with the field data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postCreateFieldWithHttpInfo(String name, Integer page, Field field, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postCreateFieldValidateBeforeCall(name, page, field, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Create field. (asynchronously) + * + * @param name The document name. (required) + * @param page Document page number. (required) + * @param field with the field data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postCreateFieldAsync(String name, Integer page, Field field, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postCreateFieldValidateBeforeCall(name, page, field, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postDocumentReplaceText + * @param name (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call postDocumentReplaceTextCall(String name, TextReplaceRequest textReplace, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = textReplace; + + // create path and map variables + String localVarPath = "/pdf/{name}/replaceText" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postDocumentReplaceTextValidateBeforeCall(String name, TextReplaceRequest textReplace, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postDocumentReplaceText(Async)"); + } + + // verify the required parameter 'textReplace' is set + if (textReplace == null) { + throw new ApiException("Missing the required parameter 'textReplace' when calling postDocumentReplaceText(Async)"); + } + + + com.squareup.okhttp.Call call = postDocumentReplaceTextCall(name, textReplace, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Document's replace text method. Deprecated + * + * @param name (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @return DocumentTextReplaceResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public DocumentTextReplaceResponse postDocumentReplaceText(String name, TextReplaceRequest textReplace, String storage, String folder) throws ApiException { + ApiResponse resp = postDocumentReplaceTextWithHttpInfo(name, textReplace, storage, folder); + return resp.getData(); + } + + /** + * Document's replace text method. Deprecated + * + * @param name (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<DocumentTextReplaceResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse postDocumentReplaceTextWithHttpInfo(String name, TextReplaceRequest textReplace, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postDocumentReplaceTextValidateBeforeCall(name, textReplace, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Document's replace text method. Deprecated (asynchronously) + * + * @param name (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call postDocumentReplaceTextAsync(String name, TextReplaceRequest textReplace, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postDocumentReplaceTextValidateBeforeCall(name, textReplace, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postDocumentReplaceTextList + * @param name (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call postDocumentReplaceTextListCall(String name, TextReplaceListRequest textReplaceListRequest, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = textReplaceListRequest; + + // create path and map variables + String localVarPath = "/pdf/{name}/replaceTextList" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postDocumentReplaceTextListValidateBeforeCall(String name, TextReplaceListRequest textReplaceListRequest, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postDocumentReplaceTextList(Async)"); + } + + // verify the required parameter 'textReplaceListRequest' is set + if (textReplaceListRequest == null) { + throw new ApiException("Missing the required parameter 'textReplaceListRequest' when calling postDocumentReplaceTextList(Async)"); + } + + + com.squareup.okhttp.Call call = postDocumentReplaceTextListCall(name, textReplaceListRequest, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Document's replace text method. Deprecated + * + * @param name (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @return DocumentTextReplaceResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public DocumentTextReplaceResponse postDocumentReplaceTextList(String name, TextReplaceListRequest textReplaceListRequest, String storage, String folder) throws ApiException { + ApiResponse resp = postDocumentReplaceTextListWithHttpInfo(name, textReplaceListRequest, storage, folder); + return resp.getData(); + } + + /** + * Document's replace text method. Deprecated + * + * @param name (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<DocumentTextReplaceResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse postDocumentReplaceTextListWithHttpInfo(String name, TextReplaceListRequest textReplaceListRequest, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postDocumentReplaceTextListValidateBeforeCall(name, textReplaceListRequest, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Document's replace text method. Deprecated (asynchronously) + * + * @param name (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call postDocumentReplaceTextListAsync(String name, TextReplaceListRequest textReplaceListRequest, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postDocumentReplaceTextListValidateBeforeCall(name, textReplaceListRequest, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postDocumentTextReplace + * @param name (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postDocumentTextReplaceCall(String name, TextReplaceListRequest textReplace, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = textReplace; + + // create path and map variables + String localVarPath = "/pdf/{name}/text/replace" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postDocumentTextReplaceValidateBeforeCall(String name, TextReplaceListRequest textReplace, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postDocumentTextReplace(Async)"); + } + + // verify the required parameter 'textReplace' is set + if (textReplace == null) { + throw new ApiException("Missing the required parameter 'textReplace' when calling postDocumentTextReplace(Async)"); + } + + + com.squareup.okhttp.Call call = postDocumentTextReplaceCall(name, textReplace, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Document's replace text method. + * + * @param name (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @return TextReplaceResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public TextReplaceResponse postDocumentTextReplace(String name, TextReplaceListRequest textReplace, String storage, String folder) throws ApiException { + ApiResponse resp = postDocumentTextReplaceWithHttpInfo(name, textReplace, storage, folder); + return resp.getData(); + } + + /** + * Document's replace text method. + * + * @param name (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextReplaceResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postDocumentTextReplaceWithHttpInfo(String name, TextReplaceListRequest textReplace, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postDocumentTextReplaceValidateBeforeCall(name, textReplace, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Document's replace text method. (asynchronously) + * + * @param name (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postDocumentTextReplaceAsync(String name, TextReplaceListRequest textReplace, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postDocumentTextReplaceValidateBeforeCall(name, textReplace, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postMovePage + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param newIndex The new page position/index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postMovePageCall(String name, Integer pageNumber, Integer newIndex, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/movePage" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (newIndex != null) + localVarQueryParams.addAll(apiClient.parameterToPair("newIndex", newIndex)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postMovePageValidateBeforeCall(String name, Integer pageNumber, Integer newIndex, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postMovePage(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling postMovePage(Async)"); + } + + // verify the required parameter 'newIndex' is set + if (newIndex == null) { + throw new ApiException("Missing the required parameter 'newIndex' when calling postMovePage(Async)"); + } + + + com.squareup.okhttp.Call call = postMovePageCall(name, pageNumber, newIndex, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Move page to new position. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param newIndex The new page position/index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse postMovePage(String name, Integer pageNumber, Integer newIndex, String storage, String folder) throws ApiException { + ApiResponse resp = postMovePageWithHttpInfo(name, pageNumber, newIndex, storage, folder); + return resp.getData(); + } + + /** + * Move page to new position. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param newIndex The new page position/index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postMovePageWithHttpInfo(String name, Integer pageNumber, Integer newIndex, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postMovePageValidateBeforeCall(name, pageNumber, newIndex, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Move page to new position. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param newIndex The new page position/index. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postMovePageAsync(String name, Integer pageNumber, Integer newIndex, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postMovePageValidateBeforeCall(name, pageNumber, newIndex, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postOptimizeDocument + * @param name The document name. (required) + * @param options The optimization options. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postOptimizeDocumentCall(String name, OptimizeOptions options, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = options; + + // create path and map variables + String localVarPath = "/pdf/{name}/optimize" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postOptimizeDocumentValidateBeforeCall(String name, OptimizeOptions options, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postOptimizeDocument(Async)"); + } + + + com.squareup.okhttp.Call call = postOptimizeDocumentCall(name, options, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Optimize document. + * + * @param name The document name. (required) + * @param options The optimization options. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse postOptimizeDocument(String name, OptimizeOptions options, String storage, String folder) throws ApiException { + ApiResponse resp = postOptimizeDocumentWithHttpInfo(name, options, storage, folder); + return resp.getData(); + } + + /** + * Optimize document. + * + * @param name The document name. (required) + * @param options The optimization options. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postOptimizeDocumentWithHttpInfo(String name, OptimizeOptions options, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postOptimizeDocumentValidateBeforeCall(name, options, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Optimize document. (asynchronously) + * + * @param name The document name. (required) + * @param options The optimization options. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postOptimizeDocumentAsync(String name, OptimizeOptions options, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postOptimizeDocumentValidateBeforeCall(name, options, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postPageReplaceText + * @param name (required) + * @param pageNumber (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call postPageReplaceTextCall(String name, Integer pageNumber, TextReplaceRequest textReplace, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = textReplace; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/replaceText" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postPageReplaceTextValidateBeforeCall(String name, Integer pageNumber, TextReplaceRequest textReplace, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postPageReplaceText(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling postPageReplaceText(Async)"); + } + + // verify the required parameter 'textReplace' is set + if (textReplace == null) { + throw new ApiException("Missing the required parameter 'textReplace' when calling postPageReplaceText(Async)"); + } + + + com.squareup.okhttp.Call call = postPageReplaceTextCall(name, pageNumber, textReplace, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Page's replace text method. Deprecated + * + * @param name (required) + * @param pageNumber (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @return PageTextReplaceResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public PageTextReplaceResponse postPageReplaceText(String name, Integer pageNumber, TextReplaceRequest textReplace, String storage, String folder) throws ApiException { + ApiResponse resp = postPageReplaceTextWithHttpInfo(name, pageNumber, textReplace, storage, folder); + return resp.getData(); + } + + /** + * Page's replace text method. Deprecated + * + * @param name (required) + * @param pageNumber (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<PageTextReplaceResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse postPageReplaceTextWithHttpInfo(String name, Integer pageNumber, TextReplaceRequest textReplace, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postPageReplaceTextValidateBeforeCall(name, pageNumber, textReplace, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Page's replace text method. Deprecated (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param textReplace (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call postPageReplaceTextAsync(String name, Integer pageNumber, TextReplaceRequest textReplace, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postPageReplaceTextValidateBeforeCall(name, pageNumber, textReplace, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postPageReplaceTextList + * @param name (required) + * @param pageNumber (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call postPageReplaceTextListCall(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = textReplaceListRequest; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/replaceTextList" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postPageReplaceTextListValidateBeforeCall(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postPageReplaceTextList(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling postPageReplaceTextList(Async)"); + } + + // verify the required parameter 'textReplaceListRequest' is set + if (textReplaceListRequest == null) { + throw new ApiException("Missing the required parameter 'textReplaceListRequest' when calling postPageReplaceTextList(Async)"); + } + + + com.squareup.okhttp.Call call = postPageReplaceTextListCall(name, pageNumber, textReplaceListRequest, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Page's replace text method. Deprecated + * + * @param name (required) + * @param pageNumber (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @return PageTextReplaceResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public PageTextReplaceResponse postPageReplaceTextList(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder) throws ApiException { + ApiResponse resp = postPageReplaceTextListWithHttpInfo(name, pageNumber, textReplaceListRequest, storage, folder); + return resp.getData(); + } + + /** + * Page's replace text method. Deprecated + * + * @param name (required) + * @param pageNumber (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<PageTextReplaceResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse postPageReplaceTextListWithHttpInfo(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postPageReplaceTextListValidateBeforeCall(name, pageNumber, textReplaceListRequest, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Page's replace text method. Deprecated (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call postPageReplaceTextListAsync(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postPageReplaceTextListValidateBeforeCall(name, pageNumber, textReplaceListRequest, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postPageTextReplace + * @param name (required) + * @param pageNumber (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postPageTextReplaceCall(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = textReplaceListRequest; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/text/replace" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postPageTextReplaceValidateBeforeCall(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postPageTextReplace(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling postPageTextReplace(Async)"); + } + + // verify the required parameter 'textReplaceListRequest' is set + if (textReplaceListRequest == null) { + throw new ApiException("Missing the required parameter 'textReplaceListRequest' when calling postPageTextReplace(Async)"); + } + + + com.squareup.okhttp.Call call = postPageTextReplaceCall(name, pageNumber, textReplaceListRequest, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Page's replace text method. + * + * @param name (required) + * @param pageNumber (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @return TextReplaceResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public TextReplaceResponse postPageTextReplace(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder) throws ApiException { + ApiResponse resp = postPageTextReplaceWithHttpInfo(name, pageNumber, textReplaceListRequest, storage, folder); + return resp.getData(); + } + + /** + * Page's replace text method. + * + * @param name (required) + * @param pageNumber (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<TextReplaceResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postPageTextReplaceWithHttpInfo(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postPageTextReplaceValidateBeforeCall(name, pageNumber, textReplaceListRequest, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Page's replace text method. (asynchronously) + * + * @param name (required) + * @param pageNumber (required) + * @param textReplaceListRequest (required) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postPageTextReplaceAsync(String name, Integer pageNumber, TextReplaceListRequest textReplaceListRequest, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postPageTextReplaceValidateBeforeCall(name, pageNumber, textReplaceListRequest, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postReplaceImage + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param imageNumber The image number. (required) + * @param imageFile Path to image file if specified. Request content is used otherwise. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param image Image file. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postReplaceImageCall(String name, Integer pageNumber, Integer imageNumber, String imageFile, String storage, String folder, File image, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = image; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/images/{imageNumber}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())) + .replaceAll("\\{" + "imageNumber" + "\\}", apiClient.escapeString(imageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (imageFile != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageFile", imageFile)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postReplaceImageValidateBeforeCall(String name, Integer pageNumber, Integer imageNumber, String imageFile, String storage, String folder, File image, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postReplaceImage(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling postReplaceImage(Async)"); + } + + // verify the required parameter 'imageNumber' is set + if (imageNumber == null) { + throw new ApiException("Missing the required parameter 'imageNumber' when calling postReplaceImage(Async)"); + } + + + com.squareup.okhttp.Call call = postReplaceImageCall(name, pageNumber, imageNumber, imageFile, storage, folder, image, progressListener, progressRequestListener); + return call; + + } + + /** + * Replace document image. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param imageNumber The image number. (required) + * @param imageFile Path to image file if specified. Request content is used otherwise. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param image Image file. (optional) + * @return ImageResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ImageResponse postReplaceImage(String name, Integer pageNumber, Integer imageNumber, String imageFile, String storage, String folder, File image) throws ApiException { + ApiResponse resp = postReplaceImageWithHttpInfo(name, pageNumber, imageNumber, imageFile, storage, folder, image); + return resp.getData(); + } + + /** + * Replace document image. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param imageNumber The image number. (required) + * @param imageFile Path to image file if specified. Request content is used otherwise. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param image Image file. (optional) + * @return ApiResponse<ImageResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postReplaceImageWithHttpInfo(String name, Integer pageNumber, Integer imageNumber, String imageFile, String storage, String folder, File image) throws ApiException { + com.squareup.okhttp.Call call = postReplaceImageValidateBeforeCall(name, pageNumber, imageNumber, imageFile, storage, folder, image, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Replace document image. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param imageNumber The image number. (required) + * @param imageFile Path to image file if specified. Request content is used otherwise. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param image Image file. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postReplaceImageAsync(String name, Integer pageNumber, Integer imageNumber, String imageFile, String storage, String folder, File image, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postReplaceImageValidateBeforeCall(name, pageNumber, imageNumber, imageFile, storage, folder, image, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postSignDocument + * @param name The document name. (required) + * @param signature Signature object containing signature data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postSignDocumentCall(String name, Signature signature, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = signature; + + // create path and map variables + String localVarPath = "/pdf/{name}/sign" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postSignDocumentValidateBeforeCall(String name, Signature signature, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postSignDocument(Async)"); + } + + + com.squareup.okhttp.Call call = postSignDocumentCall(name, signature, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Sign document. + * + * @param name The document name. (required) + * @param signature Signature object containing signature data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse postSignDocument(String name, Signature signature, String storage, String folder) throws ApiException { + ApiResponse resp = postSignDocumentWithHttpInfo(name, signature, storage, folder); + return resp.getData(); + } + + /** + * Sign document. + * + * @param name The document name. (required) + * @param signature Signature object containing signature data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postSignDocumentWithHttpInfo(String name, Signature signature, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postSignDocumentValidateBeforeCall(name, signature, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Sign document. (asynchronously) + * + * @param name The document name. (required) + * @param signature Signature object containing signature data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postSignDocumentAsync(String name, Signature signature, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postSignDocumentValidateBeforeCall(name, signature, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postSignPage + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param signature Signature object containing signature data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postSignPageCall(String name, Integer pageNumber, Signature signature, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = signature; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/sign" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postSignPageValidateBeforeCall(String name, Integer pageNumber, Signature signature, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postSignPage(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling postSignPage(Async)"); + } + + + com.squareup.okhttp.Call call = postSignPageCall(name, pageNumber, signature, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Sign page. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param signature Signature object containing signature data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse postSignPage(String name, Integer pageNumber, Signature signature, String storage, String folder) throws ApiException { + ApiResponse resp = postSignPageWithHttpInfo(name, pageNumber, signature, storage, folder); + return resp.getData(); + } + + /** + * Sign page. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param signature Signature object containing signature data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postSignPageWithHttpInfo(String name, Integer pageNumber, Signature signature, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postSignPageValidateBeforeCall(name, pageNumber, signature, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Sign page. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param signature Signature object containing signature data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postSignPageAsync(String name, Integer pageNumber, Signature signature, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postSignPageValidateBeforeCall(name, pageNumber, signature, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for postSplitDocument + * @param name Document name. (required) + * @param format Resulting documents format. (optional) + * @param from Start page if defined. (optional) + * @param to End page if defined. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call postSplitDocumentCall(String name, String format, Integer from, Integer to, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/split" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (format != null) + localVarQueryParams.addAll(apiClient.parameterToPair("format", format)); + if (from != null) + localVarQueryParams.addAll(apiClient.parameterToPair("from", from)); + if (to != null) + localVarQueryParams.addAll(apiClient.parameterToPair("to", to)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call postSplitDocumentValidateBeforeCall(String name, String format, Integer from, Integer to, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling postSplitDocument(Async)"); + } + + + com.squareup.okhttp.Call call = postSplitDocumentCall(name, format, from, to, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Split document to parts. + * + * @param name Document name. (required) + * @param format Resulting documents format. (optional) + * @param from Start page if defined. (optional) + * @param to End page if defined. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SplitResultResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SplitResultResponse postSplitDocument(String name, String format, Integer from, Integer to, String storage, String folder) throws ApiException { + ApiResponse resp = postSplitDocumentWithHttpInfo(name, format, from, to, storage, folder); + return resp.getData(); + } + + /** + * Split document to parts. + * + * @param name Document name. (required) + * @param format Resulting documents format. (optional) + * @param from Start page if defined. (optional) + * @param to End page if defined. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SplitResultResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse postSplitDocumentWithHttpInfo(String name, String format, Integer from, Integer to, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = postSplitDocumentValidateBeforeCall(name, format, from, to, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Split document to parts. (asynchronously) + * + * @param name Document name. (required) + * @param format Resulting documents format. (optional) + * @param from Start page if defined. (optional) + * @param to End page if defined. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call postSplitDocumentAsync(String name, String format, Integer from, Integer to, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = postSplitDocumentValidateBeforeCall(name, format, from, to, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putAddNewPage + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putAddNewPageCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putAddNewPageValidateBeforeCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putAddNewPage(Async)"); + } + + + com.squareup.okhttp.Call call = putAddNewPageCall(name, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Add new page to end of the document. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return DocumentPagesResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public DocumentPagesResponse putAddNewPage(String name, String storage, String folder) throws ApiException { + ApiResponse resp = putAddNewPageWithHttpInfo(name, storage, folder); + return resp.getData(); + } + + /** + * Add new page to end of the document. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<DocumentPagesResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putAddNewPageWithHttpInfo(String name, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putAddNewPageValidateBeforeCall(name, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Add new page to end of the document. (asynchronously) + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putAddNewPageAsync(String name, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putAddNewPageValidateBeforeCall(name, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putAddParagraph + * @param name Name of the document to which text should be added. (required) + * @param pageNumber Number of page (starting with 1) to which text should be added. (required) + * @param paragraph Paragraph data. (optional) + * @param storage File storage to be used. (optional) + * @param folder Document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call putAddParagraphCall(String name, Integer pageNumber, Paragraph paragraph, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = paragraph; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/paragraph" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putAddParagraphValidateBeforeCall(String name, Integer pageNumber, Paragraph paragraph, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putAddParagraph(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling putAddParagraph(Async)"); + } + + + com.squareup.okhttp.Call call = putAddParagraphCall(name, pageNumber, paragraph, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Add text to PDF document page. Deprecated + * + * @param name Name of the document to which text should be added. (required) + * @param pageNumber Number of page (starting with 1) to which text should be added. (required) + * @param paragraph Paragraph data. (optional) + * @param storage File storage to be used. (optional) + * @param folder Document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public SaaSposeResponse putAddParagraph(String name, Integer pageNumber, Paragraph paragraph, String storage, String folder) throws ApiException { + ApiResponse resp = putAddParagraphWithHttpInfo(name, pageNumber, paragraph, storage, folder); + return resp.getData(); + } + + /** + * Add text to PDF document page. Deprecated + * + * @param name Name of the document to which text should be added. (required) + * @param pageNumber Number of page (starting with 1) to which text should be added. (required) + * @param paragraph Paragraph data. (optional) + * @param storage File storage to be used. (optional) + * @param folder Document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse putAddParagraphWithHttpInfo(String name, Integer pageNumber, Paragraph paragraph, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putAddParagraphValidateBeforeCall(name, pageNumber, paragraph, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Add text to PDF document page. Deprecated (asynchronously) + * + * @param name Name of the document to which text should be added. (required) + * @param pageNumber Number of page (starting with 1) to which text should be added. (required) + * @param paragraph Paragraph data. (optional) + * @param storage File storage to be used. (optional) + * @param folder Document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call putAddParagraphAsync(String name, Integer pageNumber, Paragraph paragraph, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putAddParagraphValidateBeforeCall(name, pageNumber, paragraph, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putAddText + * @param name The document name. (required) + * @param pageNumber Number of page (starting from 1). (required) + * @param paragraph Paragraph data. (optional) + * @param folder Document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putAddTextCall(String name, Integer pageNumber, Paragraph paragraph, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = paragraph; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/text" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putAddTextValidateBeforeCall(String name, Integer pageNumber, Paragraph paragraph, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putAddText(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling putAddText(Async)"); + } + + + com.squareup.okhttp.Call call = putAddTextCall(name, pageNumber, paragraph, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Add text to PDF document page. + * + * @param name The document name. (required) + * @param pageNumber Number of page (starting from 1). (required) + * @param paragraph Paragraph data. (optional) + * @param folder Document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putAddText(String name, Integer pageNumber, Paragraph paragraph, String folder) throws ApiException { + ApiResponse resp = putAddTextWithHttpInfo(name, pageNumber, paragraph, folder); + return resp.getData(); + } + + /** + * Add text to PDF document page. + * + * @param name The document name. (required) + * @param pageNumber Number of page (starting from 1). (required) + * @param paragraph Paragraph data. (optional) + * @param folder Document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putAddTextWithHttpInfo(String name, Integer pageNumber, Paragraph paragraph, String folder) throws ApiException { + com.squareup.okhttp.Call call = putAddTextValidateBeforeCall(name, pageNumber, paragraph, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Add text to PDF document page. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber Number of page (starting from 1). (required) + * @param paragraph Paragraph data. (optional) + * @param folder Document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putAddTextAsync(String name, Integer pageNumber, Paragraph paragraph, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putAddTextValidateBeforeCall(name, pageNumber, paragraph, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putConvertDocument + * @param format The format to convert. (optional) + * @param url (optional) + * @param outPath Path to save result (optional) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call putConvertDocumentCall(String format, String url, String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (format != null) + localVarQueryParams.addAll(apiClient.parameterToPair("format", format)); + if (url != null) + localVarQueryParams.addAll(apiClient.parameterToPair("url", url)); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "multipart/form-data" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putConvertDocumentValidateBeforeCall(String format, String url, String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + + com.squareup.okhttp.Call call = putConvertDocumentCall(format, url, outPath, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert document from request content to format specified. + * + * @param format The format to convert. (optional) + * @param url (optional) + * @param outPath Path to save result (optional) + * @param file A file to be converted. (optional) + * @return File + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public File putConvertDocument(String format, String url, String outPath, File file) throws ApiException { + ApiResponse resp = putConvertDocumentWithHttpInfo(format, url, outPath, file); + return resp.getData(); + } + + /** + * Convert document from request content to format specified. + * + * @param format The format to convert. (optional) + * @param url (optional) + * @param outPath Path to save result (optional) + * @param file A file to be converted. (optional) + * @return ApiResponse<File> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse putConvertDocumentWithHttpInfo(String format, String url, String outPath, File file) throws ApiException { + com.squareup.okhttp.Call call = putConvertDocumentValidateBeforeCall(format, url, outPath, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert document from request content to format specified. (asynchronously) + * + * @param format The format to convert. (optional) + * @param url (optional) + * @param outPath Path to save result (optional) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call putConvertDocumentAsync(String format, String url, String outPath, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putConvertDocumentValidateBeforeCall(format, url, outPath, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putCreate + * @param path Path where to upload including filename and extension e.g. /file.ext or /Folder 1/file.ext (required) + * @param file File to upload (required) + * @param versionId Source file's version (optional) + * @param storage User's storage name (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putCreateCall(String path, File file, String versionId, String storage, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/storage/file"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (path != null) + localVarQueryParams.addAll(apiClient.parameterToPair("path", path)); + if (versionId != null) + localVarQueryParams.addAll(apiClient.parameterToPair("versionId", versionId)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putCreateValidateBeforeCall(String path, File file, String versionId, String storage, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'path' is set + if (path == null) { + throw new ApiException("Missing the required parameter 'path' when calling putCreate(Async)"); + } + + // verify the required parameter 'file' is set + if (file == null) { + throw new ApiException("Missing the required parameter 'file' when calling putCreate(Async)"); + } + + + com.squareup.okhttp.Call call = putCreateCall(path, file, versionId, storage, progressListener, progressRequestListener); + return call; + + } + + /** + * Upload a specific file + * + * @param path Path where to upload including filename and extension e.g. /file.ext or /Folder 1/file.ext (required) + * @param file File to upload (required) + * @param versionId Source file's version (optional) + * @param storage User's storage name (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putCreate(String path, File file, String versionId, String storage) throws ApiException { + ApiResponse resp = putCreateWithHttpInfo(path, file, versionId, storage); + return resp.getData(); + } + + /** + * Upload a specific file + * + * @param path Path where to upload including filename and extension e.g. /file.ext or /Folder 1/file.ext (required) + * @param file File to upload (required) + * @param versionId Source file's version (optional) + * @param storage User's storage name (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putCreateWithHttpInfo(String path, File file, String versionId, String storage) throws ApiException { + com.squareup.okhttp.Call call = putCreateValidateBeforeCall(path, file, versionId, storage, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Upload a specific file (asynchronously) + * + * @param path Path where to upload including filename and extension e.g. /file.ext or /Folder 1/file.ext (required) + * @param file File to upload (required) + * @param versionId Source file's version (optional) + * @param storage User's storage name (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putCreateAsync(String path, File file, String versionId, String storage, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putCreateValidateBeforeCall(path, file, versionId, storage, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putCreateDocument + * @param name The new document name. (required) + * @param templateFile The template file server path if defined. (optional) + * @param dataFile The data file path (for xml template only). (optional) + * @param templateType The template type, can be xml, html, bmp, jpg, png, tiff, emf, cgm, tex. (optional) + * @param storage The document storage. (optional) + * @param folder The new document folder. (optional) + * @param url The url of web page if defined. (optional) + * @param fitSize Draw a margin around content in resulting pdf. (optional, default to false) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putCreateDocumentCall(String name, String templateFile, String dataFile, String templateType, String storage, String folder, String url, Boolean fitSize, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (templateFile != null) + localVarQueryParams.addAll(apiClient.parameterToPair("templateFile", templateFile)); + if (dataFile != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dataFile", dataFile)); + if (templateType != null) + localVarQueryParams.addAll(apiClient.parameterToPair("templateType", templateType)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + if (url != null) + localVarQueryParams.addAll(apiClient.parameterToPair("url", url)); + if (fitSize != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fitSize", fitSize)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putCreateDocumentValidateBeforeCall(String name, String templateFile, String dataFile, String templateType, String storage, String folder, String url, Boolean fitSize, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putCreateDocument(Async)"); + } + + + com.squareup.okhttp.Call call = putCreateDocumentCall(name, templateFile, dataFile, templateType, storage, folder, url, fitSize, progressListener, progressRequestListener); + return call; + + } + + /** + * Create new document. + * + * @param name The new document name. (required) + * @param templateFile The template file server path if defined. (optional) + * @param dataFile The data file path (for xml template only). (optional) + * @param templateType The template type, can be xml, html, bmp, jpg, png, tiff, emf, cgm, tex. (optional) + * @param storage The document storage. (optional) + * @param folder The new document folder. (optional) + * @param url The url of web page if defined. (optional) + * @param fitSize Draw a margin around content in resulting pdf. (optional, default to false) + * @return DocumentResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public DocumentResponse putCreateDocument(String name, String templateFile, String dataFile, String templateType, String storage, String folder, String url, Boolean fitSize) throws ApiException { + ApiResponse resp = putCreateDocumentWithHttpInfo(name, templateFile, dataFile, templateType, storage, folder, url, fitSize); + return resp.getData(); + } + + /** + * Create new document. + * + * @param name The new document name. (required) + * @param templateFile The template file server path if defined. (optional) + * @param dataFile The data file path (for xml template only). (optional) + * @param templateType The template type, can be xml, html, bmp, jpg, png, tiff, emf, cgm, tex. (optional) + * @param storage The document storage. (optional) + * @param folder The new document folder. (optional) + * @param url The url of web page if defined. (optional) + * @param fitSize Draw a margin around content in resulting pdf. (optional, default to false) + * @return ApiResponse<DocumentResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putCreateDocumentWithHttpInfo(String name, String templateFile, String dataFile, String templateType, String storage, String folder, String url, Boolean fitSize) throws ApiException { + com.squareup.okhttp.Call call = putCreateDocumentValidateBeforeCall(name, templateFile, dataFile, templateType, storage, folder, url, fitSize, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Create new document. (asynchronously) + * + * @param name The new document name. (required) + * @param templateFile The template file server path if defined. (optional) + * @param dataFile The data file path (for xml template only). (optional) + * @param templateType The template type, can be xml, html, bmp, jpg, png, tiff, emf, cgm, tex. (optional) + * @param storage The document storage. (optional) + * @param folder The new document folder. (optional) + * @param url The url of web page if defined. (optional) + * @param fitSize Draw a margin around content in resulting pdf. (optional, default to false) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putCreateDocumentAsync(String name, String templateFile, String dataFile, String templateType, String storage, String folder, String url, Boolean fitSize, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putCreateDocumentValidateBeforeCall(name, templateFile, dataFile, templateType, storage, folder, url, fitSize, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putCreateDocumentFromImages + * @param name The new document name. (required) + * @param images The images file paths set. (optional) + * @param ocr To create OCR layer for image or not. (optional, default to false) + * @param ocrLang The language which is defined for OCR engine. Default is eng. (optional, default to eng) + * @param storage The document storage. (optional) + * @param folder The new document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putCreateDocumentFromImagesCall(String name, ImagesListRequest images, Boolean ocr, String ocrLang, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = images; + + // create path and map variables + String localVarPath = "/pdf/{name}/fromimages" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (ocr != null) + localVarQueryParams.addAll(apiClient.parameterToPair("ocr", ocr)); + if (ocrLang != null) + localVarQueryParams.addAll(apiClient.parameterToPair("ocrLang", ocrLang)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putCreateDocumentFromImagesValidateBeforeCall(String name, ImagesListRequest images, Boolean ocr, String ocrLang, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putCreateDocumentFromImages(Async)"); + } + + + com.squareup.okhttp.Call call = putCreateDocumentFromImagesCall(name, images, ocr, ocrLang, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Create new document from images. + * + * @param name The new document name. (required) + * @param images The images file paths set. (optional) + * @param ocr To create OCR layer for image or not. (optional, default to false) + * @param ocrLang The language which is defined for OCR engine. Default is eng. (optional, default to eng) + * @param storage The document storage. (optional) + * @param folder The new document folder. (optional) + * @return DocumentResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public DocumentResponse putCreateDocumentFromImages(String name, ImagesListRequest images, Boolean ocr, String ocrLang, String storage, String folder) throws ApiException { + ApiResponse resp = putCreateDocumentFromImagesWithHttpInfo(name, images, ocr, ocrLang, storage, folder); + return resp.getData(); + } + + /** + * Create new document from images. + * + * @param name The new document name. (required) + * @param images The images file paths set. (optional) + * @param ocr To create OCR layer for image or not. (optional, default to false) + * @param ocrLang The language which is defined for OCR engine. Default is eng. (optional, default to eng) + * @param storage The document storage. (optional) + * @param folder The new document folder. (optional) + * @return ApiResponse<DocumentResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putCreateDocumentFromImagesWithHttpInfo(String name, ImagesListRequest images, Boolean ocr, String ocrLang, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putCreateDocumentFromImagesValidateBeforeCall(name, images, ocr, ocrLang, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Create new document from images. (asynchronously) + * + * @param name The new document name. (required) + * @param images The images file paths set. (optional) + * @param ocr To create OCR layer for image or not. (optional, default to false) + * @param ocrLang The language which is defined for OCR engine. Default is eng. (optional, default to eng) + * @param storage The document storage. (optional) + * @param folder The new document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putCreateDocumentFromImagesAsync(String name, ImagesListRequest images, Boolean ocr, String ocrLang, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putCreateDocumentFromImagesValidateBeforeCall(name, images, ocr, ocrLang, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putDocumentSaveAsTiff + * @param name The document name. (required) + * @param exportOptions with tiff export options. (optional) + * @param resultFile The resulting file. (optional) + * @param brightness The image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call putDocumentSaveAsTiffCall(String name, TiffExportOptions exportOptions, String resultFile, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = exportOptions; + + // create path and map variables + String localVarPath = "/pdf/{name}/SaveAs/tiff" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (resultFile != null) + localVarQueryParams.addAll(apiClient.parameterToPair("resultFile", resultFile)); + if (brightness != null) + localVarQueryParams.addAll(apiClient.parameterToPair("brightness", brightness)); + if (compression != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compression", compression)); + if (colorDepth != null) + localVarQueryParams.addAll(apiClient.parameterToPair("colorDepth", colorDepth)); + if (leftMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("leftMargin", leftMargin)); + if (rightMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("rightMargin", rightMargin)); + if (topMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("topMargin", topMargin)); + if (bottomMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("bottomMargin", bottomMargin)); + if (orientation != null) + localVarQueryParams.addAll(apiClient.parameterToPair("orientation", orientation)); + if (skipBlankPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("skipBlankPages", skipBlankPages)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (xResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("xResolution", xResolution)); + if (yResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("yResolution", yResolution)); + if (pageIndex != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pageIndex", pageIndex)); + if (pageCount != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pageCount", pageCount)); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @Deprecated + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putDocumentSaveAsTiffValidateBeforeCall(String name, TiffExportOptions exportOptions, String resultFile, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putDocumentSaveAsTiff(Async)"); + } + + + com.squareup.okhttp.Call call = putDocumentSaveAsTiffCall(name, exportOptions, resultFile, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Save document as Tiff image. + * + * @param name The document name. (required) + * @param exportOptions with tiff export options. (optional) + * @param resultFile The resulting file. (optional) + * @param brightness The image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public SaaSposeResponse putDocumentSaveAsTiff(String name, TiffExportOptions exportOptions, String resultFile, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String storage, String folder) throws ApiException { + ApiResponse resp = putDocumentSaveAsTiffWithHttpInfo(name, exportOptions, resultFile, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, storage, folder); + return resp.getData(); + } + + /** + * Save document as Tiff image. + * + * @param name The document name. (required) + * @param exportOptions with tiff export options. (optional) + * @param resultFile The resulting file. (optional) + * @param brightness The image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @deprecated + */ + @Deprecated + public ApiResponse putDocumentSaveAsTiffWithHttpInfo(String name, TiffExportOptions exportOptions, String resultFile, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putDocumentSaveAsTiffValidateBeforeCall(name, exportOptions, resultFile, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Save document as Tiff image. (asynchronously) + * + * @param name The document name. (required) + * @param exportOptions with tiff export options. (optional) + * @param resultFile The resulting file. (optional) + * @param brightness The image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @deprecated + */ + @Deprecated + public com.squareup.okhttp.Call putDocumentSaveAsTiffAsync(String name, TiffExportOptions exportOptions, String resultFile, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putDocumentSaveAsTiffValidateBeforeCall(name, exportOptions, resultFile, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putEpubInStorageToPdf + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.epub) (required) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putEpubInStorageToPdfCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/epub" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putEpubInStorageToPdfValidateBeforeCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putEpubInStorageToPdf(Async)"); + } + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling putEpubInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putEpubInStorageToPdfCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert EPUB file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.epub) (required) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putEpubInStorageToPdf(String name, String srcPath, String dstFolder) throws ApiException { + ApiResponse resp = putEpubInStorageToPdfWithHttpInfo(name, srcPath, dstFolder); + return resp.getData(); + } + + /** + * Convert EPUB file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.epub) (required) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putEpubInStorageToPdfWithHttpInfo(String name, String srcPath, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putEpubInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert EPUB file (located on storage) to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.epub) (required) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putEpubInStorageToPdfAsync(String name, String srcPath, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putEpubInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putFieldsFlatten + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putFieldsFlattenCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/fields/flatten" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putFieldsFlattenValidateBeforeCall(String name, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putFieldsFlatten(Async)"); + } + + + com.squareup.okhttp.Call call = putFieldsFlattenCall(name, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Flatten form fields in document. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putFieldsFlatten(String name, String storage, String folder) throws ApiException { + ApiResponse resp = putFieldsFlattenWithHttpInfo(name, storage, folder); + return resp.getData(); + } + + /** + * Flatten form fields in document. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putFieldsFlattenWithHttpInfo(String name, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putFieldsFlattenValidateBeforeCall(name, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Flatten form fields in document. (asynchronously) + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putFieldsFlattenAsync(String name, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putFieldsFlattenValidateBeforeCall(name, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putHtmlInStorageToPdf + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.zip) (required) + * @param htmlFileName Name of HTML file in ZIP. (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putHtmlInStorageToPdfCall(String name, String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/html" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (htmlFileName != null) + localVarQueryParams.addAll(apiClient.parameterToPair("htmlFileName", htmlFileName)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (isLandscape != null) + localVarQueryParams.addAll(apiClient.parameterToPair("isLandscape", isLandscape)); + if (marginLeft != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginLeft", marginLeft)); + if (marginBottom != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginBottom", marginBottom)); + if (marginRight != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginRight", marginRight)); + if (marginTop != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginTop", marginTop)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putHtmlInStorageToPdfValidateBeforeCall(String name, String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putHtmlInStorageToPdf(Async)"); + } + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling putHtmlInStorageToPdf(Async)"); + } + + // verify the required parameter 'htmlFileName' is set + if (htmlFileName == null) { + throw new ApiException("Missing the required parameter 'htmlFileName' when calling putHtmlInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putHtmlInStorageToPdfCall(name, srcPath, htmlFileName, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert HTML file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.zip) (required) + * @param htmlFileName Name of HTML file in ZIP. (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putHtmlInStorageToPdf(String name, String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder) throws ApiException { + ApiResponse resp = putHtmlInStorageToPdfWithHttpInfo(name, srcPath, htmlFileName, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder); + return resp.getData(); + } + + /** + * Convert HTML file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.zip) (required) + * @param htmlFileName Name of HTML file in ZIP. (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putHtmlInStorageToPdfWithHttpInfo(String name, String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putHtmlInStorageToPdfValidateBeforeCall(name, srcPath, htmlFileName, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert HTML file (located on storage) to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.zip) (required) + * @param htmlFileName Name of HTML file in ZIP. (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putHtmlInStorageToPdfAsync(String name, String srcPath, String htmlFileName, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putHtmlInStorageToPdfValidateBeforeCall(name, srcPath, htmlFileName, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putLaTeXInStorageToPdf + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.tex) (required) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putLaTeXInStorageToPdfCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/latex" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putLaTeXInStorageToPdfValidateBeforeCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putLaTeXInStorageToPdf(Async)"); + } + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling putLaTeXInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putLaTeXInStorageToPdfCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert LaTeX file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.tex) (required) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putLaTeXInStorageToPdf(String name, String srcPath, String dstFolder) throws ApiException { + ApiResponse resp = putLaTeXInStorageToPdfWithHttpInfo(name, srcPath, dstFolder); + return resp.getData(); + } + + /** + * Convert LaTeX file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.tex) (required) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putLaTeXInStorageToPdfWithHttpInfo(String name, String srcPath, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putLaTeXInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert LaTeX file (located on storage) to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.tex) (required) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putLaTeXInStorageToPdfAsync(String name, String srcPath, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putLaTeXInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putMergeDocuments + * @param name Resulting documen name. (required) + * @param mergeDocuments with a list of documents. (optional) + * @param storage Resulting document storage. (optional) + * @param folder Resulting document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putMergeDocumentsCall(String name, MergeDocuments mergeDocuments, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = mergeDocuments; + + // create path and map variables + String localVarPath = "/pdf/{name}/merge" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putMergeDocumentsValidateBeforeCall(String name, MergeDocuments mergeDocuments, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putMergeDocuments(Async)"); + } + + + com.squareup.okhttp.Call call = putMergeDocumentsCall(name, mergeDocuments, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Merge a list of documents. + * + * @param name Resulting documen name. (required) + * @param mergeDocuments with a list of documents. (optional) + * @param storage Resulting document storage. (optional) + * @param folder Resulting document folder. (optional) + * @return DocumentResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public DocumentResponse putMergeDocuments(String name, MergeDocuments mergeDocuments, String storage, String folder) throws ApiException { + ApiResponse resp = putMergeDocumentsWithHttpInfo(name, mergeDocuments, storage, folder); + return resp.getData(); + } + + /** + * Merge a list of documents. + * + * @param name Resulting documen name. (required) + * @param mergeDocuments with a list of documents. (optional) + * @param storage Resulting document storage. (optional) + * @param folder Resulting document folder. (optional) + * @return ApiResponse<DocumentResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putMergeDocumentsWithHttpInfo(String name, MergeDocuments mergeDocuments, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putMergeDocumentsValidateBeforeCall(name, mergeDocuments, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Merge a list of documents. (asynchronously) + * + * @param name Resulting documen name. (required) + * @param mergeDocuments with a list of documents. (optional) + * @param storage Resulting document storage. (optional) + * @param folder Resulting document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putMergeDocumentsAsync(String name, MergeDocuments mergeDocuments, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putMergeDocumentsValidateBeforeCall(name, mergeDocuments, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putMhtInStorageToPdf + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.mht) (required) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putMhtInStorageToPdfCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/mht" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putMhtInStorageToPdfValidateBeforeCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putMhtInStorageToPdf(Async)"); + } + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling putMhtInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putMhtInStorageToPdfCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert MHT file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.mht) (required) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putMhtInStorageToPdf(String name, String srcPath, String dstFolder) throws ApiException { + ApiResponse resp = putMhtInStorageToPdfWithHttpInfo(name, srcPath, dstFolder); + return resp.getData(); + } + + /** + * Convert MHT file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.mht) (required) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putMhtInStorageToPdfWithHttpInfo(String name, String srcPath, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putMhtInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert MHT file (located on storage) to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.mht) (required) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putMhtInStorageToPdfAsync(String name, String srcPath, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putMhtInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPageAddStamp + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param stamp with data. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPageAddStampCall(String name, Integer pageNumber, Stamp stamp, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = stamp; + + // create path and map variables + String localVarPath = "/pdf/{name}/pages/{pageNumber}/stamp" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "pageNumber" + "\\}", apiClient.escapeString(pageNumber.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPageAddStampValidateBeforeCall(String name, Integer pageNumber, Stamp stamp, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPageAddStamp(Async)"); + } + + // verify the required parameter 'pageNumber' is set + if (pageNumber == null) { + throw new ApiException("Missing the required parameter 'pageNumber' when calling putPageAddStamp(Async)"); + } + + // verify the required parameter 'stamp' is set + if (stamp == null) { + throw new ApiException("Missing the required parameter 'stamp' when calling putPageAddStamp(Async)"); + } + + + com.squareup.okhttp.Call call = putPageAddStampCall(name, pageNumber, stamp, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Add page stamp. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param stamp with data. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPageAddStamp(String name, Integer pageNumber, Stamp stamp, String storage, String folder) throws ApiException { + ApiResponse resp = putPageAddStampWithHttpInfo(name, pageNumber, stamp, storage, folder); + return resp.getData(); + } + + /** + * Add page stamp. + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param stamp with data. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPageAddStampWithHttpInfo(String name, Integer pageNumber, Stamp stamp, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPageAddStampValidateBeforeCall(name, pageNumber, stamp, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Add page stamp. (asynchronously) + * + * @param name The document name. (required) + * @param pageNumber The page number. (required) + * @param stamp with data. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPageAddStampAsync(String name, Integer pageNumber, Stamp stamp, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPageAddStampValidateBeforeCall(name, pageNumber, stamp, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPclInStorageToPdf + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.pcl) (required) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPclInStorageToPdfCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/pcl" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPclInStorageToPdfValidateBeforeCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPclInStorageToPdf(Async)"); + } + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling putPclInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putPclInStorageToPdfCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert PCL file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.pcl) (required) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPclInStorageToPdf(String name, String srcPath, String dstFolder) throws ApiException { + ApiResponse resp = putPclInStorageToPdfWithHttpInfo(name, srcPath, dstFolder); + return resp.getData(); + } + + /** + * Convert PCL file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.pcl) (required) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPclInStorageToPdfWithHttpInfo(String name, String srcPath, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putPclInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert PCL file (located on storage) to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.pcl) (required) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPclInStorageToPdfAsync(String name, String srcPath, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPclInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToDoc + * @param outPath Full resulting filename (ex. /folder1/folder2/result.doc) (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToDocCall(String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/doc"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (addReturnToLineEnd != null) + localVarQueryParams.addAll(apiClient.parameterToPair("addReturnToLineEnd", addReturnToLineEnd)); + if (format != null) + localVarQueryParams.addAll(apiClient.parameterToPair("format", format)); + if (imageResolutionX != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageResolutionX", imageResolutionX)); + if (imageResolutionY != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageResolutionY", imageResolutionY)); + if (maxDistanceBetweenTextLines != null) + localVarQueryParams.addAll(apiClient.parameterToPair("maxDistanceBetweenTextLines", maxDistanceBetweenTextLines)); + if (mode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("mode", mode)); + if (recognizeBullets != null) + localVarQueryParams.addAll(apiClient.parameterToPair("recognizeBullets", recognizeBullets)); + if (relativeHorizontalProximity != null) + localVarQueryParams.addAll(apiClient.parameterToPair("relativeHorizontalProximity", relativeHorizontalProximity)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToDocValidateBeforeCall(String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToDoc(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToDocCall(outPath, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to DOC format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.doc) (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToDoc(String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToDocWithHttpInfo(outPath, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to DOC format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.doc) (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToDocWithHttpInfo(String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToDocValidateBeforeCall(outPath, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to DOC format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.doc) (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToDocAsync(String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToDocValidateBeforeCall(outPath, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToEpub + * @param outPath Full resulting filename (ex. /folder1/folder2/result.epub) (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToEpubCall(String outPath, String contentRecognitionMode, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/epub"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (contentRecognitionMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("contentRecognitionMode", contentRecognitionMode)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToEpubValidateBeforeCall(String outPath, String contentRecognitionMode, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToEpub(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToEpubCall(outPath, contentRecognitionMode, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to EPUB format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.epub) (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToEpub(String outPath, String contentRecognitionMode, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToEpubWithHttpInfo(outPath, contentRecognitionMode, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to EPUB format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.epub) (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToEpubWithHttpInfo(String outPath, String contentRecognitionMode, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToEpubValidateBeforeCall(outPath, contentRecognitionMode, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to EPUB format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.epub) (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToEpubAsync(String outPath, String contentRecognitionMode, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToEpubValidateBeforeCall(outPath, contentRecognitionMode, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToHtml + * @param outPath Full resulting filename (ex. /folder1/folder2/result.html) (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToHtmlCall(String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/html"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (additionalMarginWidthInPoints != null) + localVarQueryParams.addAll(apiClient.parameterToPair("additionalMarginWidthInPoints", additionalMarginWidthInPoints)); + if (compressSvgGraphicsIfAny != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compressSvgGraphicsIfAny", compressSvgGraphicsIfAny)); + if (convertMarkedContentToLayers != null) + localVarQueryParams.addAll(apiClient.parameterToPair("convertMarkedContentToLayers", convertMarkedContentToLayers)); + if (defaultFontName != null) + localVarQueryParams.addAll(apiClient.parameterToPair("defaultFontName", defaultFontName)); + if (documentType != null) + localVarQueryParams.addAll(apiClient.parameterToPair("documentType", documentType)); + if (fixedLayout != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fixedLayout", fixedLayout)); + if (imageResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageResolution", imageResolution)); + if (minimalLineWidth != null) + localVarQueryParams.addAll(apiClient.parameterToPair("minimalLineWidth", minimalLineWidth)); + if (preventGlyphsGrouping != null) + localVarQueryParams.addAll(apiClient.parameterToPair("preventGlyphsGrouping", preventGlyphsGrouping)); + if (splitCssIntoPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("splitCssIntoPages", splitCssIntoPages)); + if (splitIntoPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("splitIntoPages", splitIntoPages)); + if (useZOrder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("useZOrder", useZOrder)); + if (antialiasingProcessing != null) + localVarQueryParams.addAll(apiClient.parameterToPair("antialiasingProcessing", antialiasingProcessing)); + if (cssClassNamesPrefix != null) + localVarQueryParams.addAll(apiClient.parameterToPair("cssClassNamesPrefix", cssClassNamesPrefix)); + if (explicitListOfSavedPages != null) + localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("multi", "explicitListOfSavedPages", explicitListOfSavedPages)); + if (fontEncodingStrategy != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fontEncodingStrategy", fontEncodingStrategy)); + if (fontSavingMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fontSavingMode", fontSavingMode)); + if (htmlMarkupGenerationMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("htmlMarkupGenerationMode", htmlMarkupGenerationMode)); + if (lettersPositioningMethod != null) + localVarQueryParams.addAll(apiClient.parameterToPair("lettersPositioningMethod", lettersPositioningMethod)); + if (pagesFlowTypeDependsOnViewersScreenSize != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pagesFlowTypeDependsOnViewersScreenSize", pagesFlowTypeDependsOnViewersScreenSize)); + if (partsEmbeddingMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("partsEmbeddingMode", partsEmbeddingMode)); + if (rasterImagesSavingMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("rasterImagesSavingMode", rasterImagesSavingMode)); + if (removeEmptyAreasOnTopAndBottom != null) + localVarQueryParams.addAll(apiClient.parameterToPair("removeEmptyAreasOnTopAndBottom", removeEmptyAreasOnTopAndBottom)); + if (saveShadowedTextsAsTransparentTexts != null) + localVarQueryParams.addAll(apiClient.parameterToPair("saveShadowedTextsAsTransparentTexts", saveShadowedTextsAsTransparentTexts)); + if (saveTransparentTexts != null) + localVarQueryParams.addAll(apiClient.parameterToPair("saveTransparentTexts", saveTransparentTexts)); + if (specialFolderForAllImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("specialFolderForAllImages", specialFolderForAllImages)); + if (specialFolderForSvgImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("specialFolderForSvgImages", specialFolderForSvgImages)); + if (trySaveTextUnderliningAndStrikeoutingInCss != null) + localVarQueryParams.addAll(apiClient.parameterToPair("trySaveTextUnderliningAndStrikeoutingInCss", trySaveTextUnderliningAndStrikeoutingInCss)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToHtmlValidateBeforeCall(String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToHtml(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToHtmlCall(outPath, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to Html format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.html) (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToHtml(String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToHtmlWithHttpInfo(outPath, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to Html format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.html) (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToHtmlWithHttpInfo(String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToHtmlValidateBeforeCall(outPath, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to Html format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.html) (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToHtmlAsync(String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToHtmlValidateBeforeCall(outPath, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToLaTeX + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tex) (required) + * @param pagesCount Pages count. (optional) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToLaTeXCall(String outPath, Integer pagesCount, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/latex"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (pagesCount != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pagesCount", pagesCount)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToLaTeXValidateBeforeCall(String outPath, Integer pagesCount, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToLaTeX(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToLaTeXCall(outPath, pagesCount, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to LaTeX format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tex) (required) + * @param pagesCount Pages count. (optional) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToLaTeX(String outPath, Integer pagesCount, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToLaTeXWithHttpInfo(outPath, pagesCount, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to LaTeX format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tex) (required) + * @param pagesCount Pages count. (optional) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToLaTeXWithHttpInfo(String outPath, Integer pagesCount, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToLaTeXValidateBeforeCall(outPath, pagesCount, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to LaTeX format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tex) (required) + * @param pagesCount Pages count. (optional) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToLaTeXAsync(String outPath, Integer pagesCount, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToLaTeXValidateBeforeCall(outPath, pagesCount, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToMobiXml + * @param outPath Full resulting filename (ex. /folder1/folder2/result.mobixml) (required) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToMobiXmlCall(String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/mobixml"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToMobiXmlValidateBeforeCall(String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToMobiXml(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToMobiXmlCall(outPath, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to MOBIXML format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.mobixml) (required) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToMobiXml(String outPath, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToMobiXmlWithHttpInfo(outPath, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to MOBIXML format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.mobixml) (required) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToMobiXmlWithHttpInfo(String outPath, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToMobiXmlValidateBeforeCall(outPath, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to MOBIXML format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.mobixml) (required) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToMobiXmlAsync(String outPath, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToMobiXmlValidateBeforeCall(outPath, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToPdfA + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param type Type of PdfA format. (required) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToPdfACall(String outPath, String type, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/pdfa"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (type != null) + localVarQueryParams.addAll(apiClient.parameterToPair("type", type)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToPdfAValidateBeforeCall(String outPath, String type, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToPdfA(Async)"); + } + + // verify the required parameter 'type' is set + if (type == null) { + throw new ApiException("Missing the required parameter 'type' when calling putPdfInRequestToPdfA(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToPdfACall(outPath, type, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to PdfA format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param type Type of PdfA format. (required) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToPdfA(String outPath, String type, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToPdfAWithHttpInfo(outPath, type, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to PdfA format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param type Type of PdfA format. (required) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToPdfAWithHttpInfo(String outPath, String type, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToPdfAValidateBeforeCall(outPath, type, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to PdfA format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param type Type of PdfA format. (required) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToPdfAAsync(String outPath, String type, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToPdfAValidateBeforeCall(outPath, type, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToPptx + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pptx) (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToPptxCall(String outPath, Boolean separateImages, Boolean slidesAsImages, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/pptx"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (separateImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("separateImages", separateImages)); + if (slidesAsImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("slidesAsImages", slidesAsImages)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToPptxValidateBeforeCall(String outPath, Boolean separateImages, Boolean slidesAsImages, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToPptx(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToPptxCall(outPath, separateImages, slidesAsImages, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to PPTX format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pptx) (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToPptx(String outPath, Boolean separateImages, Boolean slidesAsImages, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToPptxWithHttpInfo(outPath, separateImages, slidesAsImages, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to PPTX format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pptx) (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToPptxWithHttpInfo(String outPath, Boolean separateImages, Boolean slidesAsImages, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToPptxValidateBeforeCall(outPath, separateImages, slidesAsImages, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to PPTX format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pptx) (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToPptxAsync(String outPath, Boolean separateImages, Boolean slidesAsImages, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToPptxValidateBeforeCall(outPath, separateImages, slidesAsImages, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToSvg + * @param outPath Full resulting filename (ex. /folder1/folder2/result.svg) (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToSvgCall(String outPath, Boolean compressOutputToZipArchive, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/svg"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (compressOutputToZipArchive != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compressOutputToZipArchive", compressOutputToZipArchive)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToSvgValidateBeforeCall(String outPath, Boolean compressOutputToZipArchive, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToSvg(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToSvgCall(outPath, compressOutputToZipArchive, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to SVG format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.svg) (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToSvg(String outPath, Boolean compressOutputToZipArchive, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToSvgWithHttpInfo(outPath, compressOutputToZipArchive, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to SVG format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.svg) (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToSvgWithHttpInfo(String outPath, Boolean compressOutputToZipArchive, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToSvgValidateBeforeCall(outPath, compressOutputToZipArchive, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to SVG format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.svg) (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToSvgAsync(String outPath, Boolean compressOutputToZipArchive, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToSvgValidateBeforeCall(outPath, compressOutputToZipArchive, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToTiff + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tiff) (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToTiffCall(String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/tiff"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (brightness != null) + localVarQueryParams.addAll(apiClient.parameterToPair("brightness", brightness)); + if (compression != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compression", compression)); + if (colorDepth != null) + localVarQueryParams.addAll(apiClient.parameterToPair("colorDepth", colorDepth)); + if (leftMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("leftMargin", leftMargin)); + if (rightMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("rightMargin", rightMargin)); + if (topMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("topMargin", topMargin)); + if (bottomMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("bottomMargin", bottomMargin)); + if (orientation != null) + localVarQueryParams.addAll(apiClient.parameterToPair("orientation", orientation)); + if (skipBlankPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("skipBlankPages", skipBlankPages)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (xResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("xResolution", xResolution)); + if (yResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("yResolution", yResolution)); + if (pageIndex != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pageIndex", pageIndex)); + if (pageCount != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pageCount", pageCount)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToTiffValidateBeforeCall(String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToTiff(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToTiffCall(outPath, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to TIFF format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tiff) (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToTiff(String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToTiffWithHttpInfo(outPath, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to TIFF format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tiff) (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToTiffWithHttpInfo(String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToTiffValidateBeforeCall(outPath, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to TIFF format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tiff) (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToTiffAsync(String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToTiffValidateBeforeCall(outPath, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToXls + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xls) (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToXlsCall(String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/xls"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (insertBlankColumnAtFirst != null) + localVarQueryParams.addAll(apiClient.parameterToPair("insertBlankColumnAtFirst", insertBlankColumnAtFirst)); + if (minimizeTheNumberOfWorksheets != null) + localVarQueryParams.addAll(apiClient.parameterToPair("minimizeTheNumberOfWorksheets", minimizeTheNumberOfWorksheets)); + if (scaleFactor != null) + localVarQueryParams.addAll(apiClient.parameterToPair("scaleFactor", scaleFactor)); + if (uniformWorksheets != null) + localVarQueryParams.addAll(apiClient.parameterToPair("uniformWorksheets", uniformWorksheets)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToXlsValidateBeforeCall(String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToXls(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToXlsCall(outPath, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to XLS format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xls) (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToXls(String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToXlsWithHttpInfo(outPath, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to XLS format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xls) (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToXlsWithHttpInfo(String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToXlsValidateBeforeCall(outPath, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to XLS format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xls) (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToXlsAsync(String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToXlsValidateBeforeCall(outPath, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToXml + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xml) (required) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToXmlCall(String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/xml"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToXmlValidateBeforeCall(String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToXml(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToXmlCall(outPath, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to XML format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xml) (required) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToXml(String outPath, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToXmlWithHttpInfo(outPath, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to XML format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xml) (required) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToXmlWithHttpInfo(String outPath, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToXmlValidateBeforeCall(outPath, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to XML format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xml) (required) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToXmlAsync(String outPath, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToXmlValidateBeforeCall(outPath, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInRequestToXps + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xps) (required) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToXpsCall(String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/xps"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInRequestToXpsValidateBeforeCall(String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInRequestToXps(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInRequestToXpsCall(outPath, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (in request content) to XPS format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xps) (required) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInRequestToXps(String outPath, File file) throws ApiException { + ApiResponse resp = putPdfInRequestToXpsWithHttpInfo(outPath, file); + return resp.getData(); + } + + /** + * Converts PDF document (in request content) to XPS format and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xps) (required) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInRequestToXpsWithHttpInfo(String outPath, File file) throws ApiException { + com.squareup.okhttp.Call call = putPdfInRequestToXpsValidateBeforeCall(outPath, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (in request content) to XPS format and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xps) (required) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInRequestToXpsAsync(String outPath, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInRequestToXpsValidateBeforeCall(outPath, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToDoc + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.doc) (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToDocCall(String name, String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/doc" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (addReturnToLineEnd != null) + localVarQueryParams.addAll(apiClient.parameterToPair("addReturnToLineEnd", addReturnToLineEnd)); + if (format != null) + localVarQueryParams.addAll(apiClient.parameterToPair("format", format)); + if (imageResolutionX != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageResolutionX", imageResolutionX)); + if (imageResolutionY != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageResolutionY", imageResolutionY)); + if (maxDistanceBetweenTextLines != null) + localVarQueryParams.addAll(apiClient.parameterToPair("maxDistanceBetweenTextLines", maxDistanceBetweenTextLines)); + if (mode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("mode", mode)); + if (recognizeBullets != null) + localVarQueryParams.addAll(apiClient.parameterToPair("recognizeBullets", recognizeBullets)); + if (relativeHorizontalProximity != null) + localVarQueryParams.addAll(apiClient.parameterToPair("relativeHorizontalProximity", relativeHorizontalProximity)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToDocValidateBeforeCall(String name, String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToDoc(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToDoc(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToDocCall(name, outPath, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to DOC format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.doc) (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToDoc(String name, String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToDocWithHttpInfo(name, outPath, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to DOC format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.doc) (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToDocWithHttpInfo(String name, String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToDocValidateBeforeCall(name, outPath, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to DOC format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.doc) (required) + * @param addReturnToLineEnd Add return to line end. (optional) + * @param format Allows to specify .doc or .docx file format. (optional) + * @param imageResolutionX Image resolution X. (optional) + * @param imageResolutionY Image resolution Y. (optional) + * @param maxDistanceBetweenTextLines Max distance between text lines. (optional) + * @param mode Allows to control how a PDF document is converted into a word processing document. (optional) + * @param recognizeBullets Recognize bullets. (optional) + * @param relativeHorizontalProximity Relative horizontal proximity. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToDocAsync(String name, String outPath, Boolean addReturnToLineEnd, String format, Integer imageResolutionX, Integer imageResolutionY, Integer maxDistanceBetweenTextLines, String mode, Boolean recognizeBullets, Double relativeHorizontalProximity, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToDocValidateBeforeCall(name, outPath, addReturnToLineEnd, format, imageResolutionX, imageResolutionY, maxDistanceBetweenTextLines, mode, recognizeBullets, relativeHorizontalProximity, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToEpub + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.epub) (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToEpubCall(String name, String outPath, String contentRecognitionMode, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/epub" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (contentRecognitionMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("contentRecognitionMode", contentRecognitionMode)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToEpubValidateBeforeCall(String name, String outPath, String contentRecognitionMode, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToEpub(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToEpub(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToEpubCall(name, outPath, contentRecognitionMode, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to EPUB format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.epub) (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToEpub(String name, String outPath, String contentRecognitionMode, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToEpubWithHttpInfo(name, outPath, contentRecognitionMode, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to EPUB format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.epub) (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToEpubWithHttpInfo(String name, String outPath, String contentRecognitionMode, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToEpubValidateBeforeCall(name, outPath, contentRecognitionMode, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to EPUB format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.epub) (required) + * @param contentRecognitionMode Рroperty tunes conversion for this or that desirable method of recognition of content. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToEpubAsync(String name, String outPath, String contentRecognitionMode, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToEpubValidateBeforeCall(name, outPath, contentRecognitionMode, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToHtml + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.html) (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToHtmlCall(String name, String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/html" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (additionalMarginWidthInPoints != null) + localVarQueryParams.addAll(apiClient.parameterToPair("additionalMarginWidthInPoints", additionalMarginWidthInPoints)); + if (compressSvgGraphicsIfAny != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compressSvgGraphicsIfAny", compressSvgGraphicsIfAny)); + if (convertMarkedContentToLayers != null) + localVarQueryParams.addAll(apiClient.parameterToPair("convertMarkedContentToLayers", convertMarkedContentToLayers)); + if (defaultFontName != null) + localVarQueryParams.addAll(apiClient.parameterToPair("defaultFontName", defaultFontName)); + if (documentType != null) + localVarQueryParams.addAll(apiClient.parameterToPair("documentType", documentType)); + if (fixedLayout != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fixedLayout", fixedLayout)); + if (imageResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("imageResolution", imageResolution)); + if (minimalLineWidth != null) + localVarQueryParams.addAll(apiClient.parameterToPair("minimalLineWidth", minimalLineWidth)); + if (preventGlyphsGrouping != null) + localVarQueryParams.addAll(apiClient.parameterToPair("preventGlyphsGrouping", preventGlyphsGrouping)); + if (splitCssIntoPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("splitCssIntoPages", splitCssIntoPages)); + if (splitIntoPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("splitIntoPages", splitIntoPages)); + if (useZOrder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("useZOrder", useZOrder)); + if (antialiasingProcessing != null) + localVarQueryParams.addAll(apiClient.parameterToPair("antialiasingProcessing", antialiasingProcessing)); + if (cssClassNamesPrefix != null) + localVarQueryParams.addAll(apiClient.parameterToPair("cssClassNamesPrefix", cssClassNamesPrefix)); + if (explicitListOfSavedPages != null) + localVarCollectionQueryParams.addAll(apiClient.parameterToPairs("multi", "explicitListOfSavedPages", explicitListOfSavedPages)); + if (fontEncodingStrategy != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fontEncodingStrategy", fontEncodingStrategy)); + if (fontSavingMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("fontSavingMode", fontSavingMode)); + if (htmlMarkupGenerationMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("htmlMarkupGenerationMode", htmlMarkupGenerationMode)); + if (lettersPositioningMethod != null) + localVarQueryParams.addAll(apiClient.parameterToPair("lettersPositioningMethod", lettersPositioningMethod)); + if (pagesFlowTypeDependsOnViewersScreenSize != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pagesFlowTypeDependsOnViewersScreenSize", pagesFlowTypeDependsOnViewersScreenSize)); + if (partsEmbeddingMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("partsEmbeddingMode", partsEmbeddingMode)); + if (rasterImagesSavingMode != null) + localVarQueryParams.addAll(apiClient.parameterToPair("rasterImagesSavingMode", rasterImagesSavingMode)); + if (removeEmptyAreasOnTopAndBottom != null) + localVarQueryParams.addAll(apiClient.parameterToPair("removeEmptyAreasOnTopAndBottom", removeEmptyAreasOnTopAndBottom)); + if (saveShadowedTextsAsTransparentTexts != null) + localVarQueryParams.addAll(apiClient.parameterToPair("saveShadowedTextsAsTransparentTexts", saveShadowedTextsAsTransparentTexts)); + if (saveTransparentTexts != null) + localVarQueryParams.addAll(apiClient.parameterToPair("saveTransparentTexts", saveTransparentTexts)); + if (specialFolderForAllImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("specialFolderForAllImages", specialFolderForAllImages)); + if (specialFolderForSvgImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("specialFolderForSvgImages", specialFolderForSvgImages)); + if (trySaveTextUnderliningAndStrikeoutingInCss != null) + localVarQueryParams.addAll(apiClient.parameterToPair("trySaveTextUnderliningAndStrikeoutingInCss", trySaveTextUnderliningAndStrikeoutingInCss)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToHtmlValidateBeforeCall(String name, String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToHtml(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToHtml(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToHtmlCall(name, outPath, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to Html format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.html) (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToHtml(String name, String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToHtmlWithHttpInfo(name, outPath, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to Html format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.html) (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToHtmlWithHttpInfo(String name, String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToHtmlValidateBeforeCall(name, outPath, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to Html format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.html) (required) + * @param additionalMarginWidthInPoints Defines width of margin that will be forcibly left around that output HTML-areas. (optional) + * @param compressSvgGraphicsIfAny The flag that indicates whether found SVG graphics(if any) will be compressed(zipped) into SVGZ format during saving. (optional) + * @param convertMarkedContentToLayers If attribute ConvertMarkedContentToLayers set to true then an all elements inside a PDF marked content (layer) will be put into an HTML div with \"data-pdflayer\" attribute specifying a layer name. This layer name will be extracted from optional properties of PDF marked content. If this attribute is false (by default) then no any layers will be created from PDF marked content. (optional) + * @param defaultFontName Specifies the name of an installed font which is used to substitute any document font that is not embedded and not installed in the system. If null then default substitution font is used. (optional) + * @param documentType Result document type. (optional) + * @param fixedLayout The value indicating whether that HTML is created as fixed layout. (optional) + * @param imageResolution Resolution for image rendering. (optional) + * @param minimalLineWidth This attribute sets minimal width of graphic path line. If thickness of line is less than 1px Adobe Acrobat rounds it to this value. So this attribute can be used to emulate this behavior for HTML browsers. (optional) + * @param preventGlyphsGrouping This attribute switch on the mode when text glyphs will not be grouped into words and strings This mode allows to keep maximum precision during positioning of glyphs on the page and it can be used for conversion documents with music notes or glyphs that should be placed separately each other. This parameter will be applied to document only when the value of FixedLayout attribute is true. (optional) + * @param splitCssIntoPages When multipage-mode selected(i.e 'SplitIntoPages' is 'true'), then this attribute defines whether should be created separate CSS-file for each result HTML page. (optional) + * @param splitIntoPages The flag that indicates whether each page of source document will be converted into it's own target HTML document, i.e whether result HTML will be splitted into several HTML-pages. (optional) + * @param useZOrder If attribute UseZORder set to true, graphics and text are added to resultant HTML document accordingly Z-order in original PDF document. If this attribute is false all graphics is put as single layer which may cause some unnecessary effects for overlapped objects. (optional) + * @param antialiasingProcessing The parameter defines required antialiasing measures during conversion of compound background images from PDF to HTML. (optional) + * @param cssClassNamesPrefix When PDFtoHTML converter generates result CSSs, CSS class names (something like \".stl_01 {}\" ... \".stl_NN {}) are generated and used in result CSS. This property allows forcibly set class name prefix. (optional) + * @param explicitListOfSavedPages With this property You can explicitely define what pages of document should be converted. Pages in this list must have 1-based numbers. I.e. valid numbers of pages must be taken from range (1...[NumberOfPagesInConvertedDocument]) Order of appearing of pages in this list does not affect their order in result HTML page(s) - in result pages allways will go in order in which they are present in source PDF. (optional) + * @param fontEncodingStrategy Defines encoding special rule to tune PDF decoding for current document. (optional) + * @param fontSavingMode Defines font saving mode that will be used during saving of PDF to desirable format. (optional) + * @param htmlMarkupGenerationMode Sometimes specific reqirments to generation of HTML markup are present. This parameter defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. (optional) + * @param lettersPositioningMethod The mode of positioning of letters in words in result HTML. (optional) + * @param pagesFlowTypeDependsOnViewersScreenSize If attribute 'SplitOnPages=false', than whole HTML representing all input PDF pages will be put into one big result HTML file. This flag defines whether result HTML will be generated in such way that flow of areas that represent PDF pages in result HTML will depend on screen resolution of viewer. (optional) + * @param partsEmbeddingMode It defines whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities. (optional) + * @param rasterImagesSavingMode Converted PDF can contain raster images This parameter defines how they should be handled during conversion of PDF to HTML. (optional) + * @param removeEmptyAreasOnTopAndBottom Defines whether in created HTML will be removed top and bottom empty area without any content (if any). (optional) + * @param saveShadowedTextsAsTransparentTexts Pdf can contain texts that are shadowed by another elements (f.e. by images) but can be selected to clipboard in Acrobat Reader (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML to mimic behaviour of Acrobat Reader (othervise such texts are usually saved as hidden, not available for copying to clipboard). (optional) + * @param saveTransparentTexts Pdf can contain transparent texts that can be selected to clipboard (usually it happen when document contains images and OCRed texts extracted from it). This settings tells to converter whether we need save such texts as transparent selectable texts in result HTML. (optional) + * @param specialFolderForAllImages The path to directory to which must be saved any images if they are encountered during saving of document as HTML. If parameter is empty or null then image files(if any) wil be saved together with other files linked to HTML It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param specialFolderForSvgImages The path to directory to which must be saved only SVG-images if they are encountered during saving of document as HTML. If parameter is empty or null then SVG files(if any) wil be saved together with other image-files (near to output file) or in special folder for images (if it specified in SpecialImagesFolderIfAny option). It does not affect anything if CustomImageSavingStrategy property was successfully used to process relevant image file. (optional) + * @param trySaveTextUnderliningAndStrikeoutingInCss PDF itself does not contain underlining markers for texts. It emulated with line situated under text. This option allows converter try guess that this or that line is a text's underlining and put this info into CSS instead of drawing of underlining graphically. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToHtmlAsync(String name, String outPath, Integer additionalMarginWidthInPoints, Boolean compressSvgGraphicsIfAny, Boolean convertMarkedContentToLayers, String defaultFontName, String documentType, Boolean fixedLayout, Integer imageResolution, Integer minimalLineWidth, Boolean preventGlyphsGrouping, Boolean splitCssIntoPages, Boolean splitIntoPages, Boolean useZOrder, String antialiasingProcessing, String cssClassNamesPrefix, List explicitListOfSavedPages, String fontEncodingStrategy, String fontSavingMode, String htmlMarkupGenerationMode, String lettersPositioningMethod, Boolean pagesFlowTypeDependsOnViewersScreenSize, String partsEmbeddingMode, String rasterImagesSavingMode, Boolean removeEmptyAreasOnTopAndBottom, Boolean saveShadowedTextsAsTransparentTexts, Boolean saveTransparentTexts, String specialFolderForAllImages, String specialFolderForSvgImages, Boolean trySaveTextUnderliningAndStrikeoutingInCss, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToHtmlValidateBeforeCall(name, outPath, additionalMarginWidthInPoints, compressSvgGraphicsIfAny, convertMarkedContentToLayers, defaultFontName, documentType, fixedLayout, imageResolution, minimalLineWidth, preventGlyphsGrouping, splitCssIntoPages, splitIntoPages, useZOrder, antialiasingProcessing, cssClassNamesPrefix, explicitListOfSavedPages, fontEncodingStrategy, fontSavingMode, htmlMarkupGenerationMode, lettersPositioningMethod, pagesFlowTypeDependsOnViewersScreenSize, partsEmbeddingMode, rasterImagesSavingMode, removeEmptyAreasOnTopAndBottom, saveShadowedTextsAsTransparentTexts, saveTransparentTexts, specialFolderForAllImages, specialFolderForSvgImages, trySaveTextUnderliningAndStrikeoutingInCss, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToLaTeX + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tex) (required) + * @param pagesCount Pages count. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToLaTeXCall(String name, String outPath, Integer pagesCount, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/latex" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (pagesCount != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pagesCount", pagesCount)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToLaTeXValidateBeforeCall(String name, String outPath, Integer pagesCount, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToLaTeX(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToLaTeX(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToLaTeXCall(name, outPath, pagesCount, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to LaTeX format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tex) (required) + * @param pagesCount Pages count. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToLaTeX(String name, String outPath, Integer pagesCount, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToLaTeXWithHttpInfo(name, outPath, pagesCount, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to LaTeX format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tex) (required) + * @param pagesCount Pages count. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToLaTeXWithHttpInfo(String name, String outPath, Integer pagesCount, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToLaTeXValidateBeforeCall(name, outPath, pagesCount, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to LaTeX format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tex) (required) + * @param pagesCount Pages count. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToLaTeXAsync(String name, String outPath, Integer pagesCount, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToLaTeXValidateBeforeCall(name, outPath, pagesCount, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToMobiXml + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.mobixml) (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToMobiXmlCall(String name, String outPath, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/mobixml" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToMobiXmlValidateBeforeCall(String name, String outPath, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToMobiXml(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToMobiXml(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToMobiXmlCall(name, outPath, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to MOBIXML format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.mobixml) (required) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToMobiXml(String name, String outPath, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToMobiXmlWithHttpInfo(name, outPath, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to MOBIXML format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.mobixml) (required) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToMobiXmlWithHttpInfo(String name, String outPath, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToMobiXmlValidateBeforeCall(name, outPath, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to MOBIXML format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.mobixml) (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToMobiXmlAsync(String name, String outPath, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToMobiXmlValidateBeforeCall(name, outPath, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToPdfA + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param type Type of PdfA format. (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToPdfACall(String name, String outPath, String type, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/pdfa" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (type != null) + localVarQueryParams.addAll(apiClient.parameterToPair("type", type)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToPdfAValidateBeforeCall(String name, String outPath, String type, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToPdfA(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToPdfA(Async)"); + } + + // verify the required parameter 'type' is set + if (type == null) { + throw new ApiException("Missing the required parameter 'type' when calling putPdfInStorageToPdfA(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToPdfACall(name, outPath, type, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to PdfA format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param type Type of PdfA format. (required) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToPdfA(String name, String outPath, String type, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToPdfAWithHttpInfo(name, outPath, type, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to PdfA format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param type Type of PdfA format. (required) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToPdfAWithHttpInfo(String name, String outPath, String type, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToPdfAValidateBeforeCall(name, outPath, type, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to PdfA format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param type Type of PdfA format. (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToPdfAAsync(String name, String outPath, String type, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToPdfAValidateBeforeCall(name, outPath, type, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToPptx + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pptx) (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToPptxCall(String name, String outPath, Boolean separateImages, Boolean slidesAsImages, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/pptx" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (separateImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("separateImages", separateImages)); + if (slidesAsImages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("slidesAsImages", slidesAsImages)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToPptxValidateBeforeCall(String name, String outPath, Boolean separateImages, Boolean slidesAsImages, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToPptx(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToPptx(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToPptxCall(name, outPath, separateImages, slidesAsImages, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to PPTX format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pptx) (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToPptx(String name, String outPath, Boolean separateImages, Boolean slidesAsImages, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToPptxWithHttpInfo(name, outPath, separateImages, slidesAsImages, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to PPTX format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pptx) (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToPptxWithHttpInfo(String name, String outPath, Boolean separateImages, Boolean slidesAsImages, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToPptxValidateBeforeCall(name, outPath, separateImages, slidesAsImages, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to PPTX format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pptx) (required) + * @param separateImages Separate images. (optional) + * @param slidesAsImages Slides as images. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToPptxAsync(String name, String outPath, Boolean separateImages, Boolean slidesAsImages, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToPptxValidateBeforeCall(name, outPath, separateImages, slidesAsImages, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToSvg + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.svg) (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToSvgCall(String name, String outPath, Boolean compressOutputToZipArchive, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/svg" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (compressOutputToZipArchive != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compressOutputToZipArchive", compressOutputToZipArchive)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToSvgValidateBeforeCall(String name, String outPath, Boolean compressOutputToZipArchive, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToSvg(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToSvg(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToSvgCall(name, outPath, compressOutputToZipArchive, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to SVG format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.svg) (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToSvg(String name, String outPath, Boolean compressOutputToZipArchive, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToSvgWithHttpInfo(name, outPath, compressOutputToZipArchive, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to SVG format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.svg) (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToSvgWithHttpInfo(String name, String outPath, Boolean compressOutputToZipArchive, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToSvgValidateBeforeCall(name, outPath, compressOutputToZipArchive, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to SVG format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.svg) (required) + * @param compressOutputToZipArchive Specifies whether output will be created as one zip-archive. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToSvgAsync(String name, String outPath, Boolean compressOutputToZipArchive, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToSvgValidateBeforeCall(name, outPath, compressOutputToZipArchive, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToTiff + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tiff) (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToTiffCall(String name, String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/tiff" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (brightness != null) + localVarQueryParams.addAll(apiClient.parameterToPair("brightness", brightness)); + if (compression != null) + localVarQueryParams.addAll(apiClient.parameterToPair("compression", compression)); + if (colorDepth != null) + localVarQueryParams.addAll(apiClient.parameterToPair("colorDepth", colorDepth)); + if (leftMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("leftMargin", leftMargin)); + if (rightMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("rightMargin", rightMargin)); + if (topMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("topMargin", topMargin)); + if (bottomMargin != null) + localVarQueryParams.addAll(apiClient.parameterToPair("bottomMargin", bottomMargin)); + if (orientation != null) + localVarQueryParams.addAll(apiClient.parameterToPair("orientation", orientation)); + if (skipBlankPages != null) + localVarQueryParams.addAll(apiClient.parameterToPair("skipBlankPages", skipBlankPages)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (xResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("xResolution", xResolution)); + if (yResolution != null) + localVarQueryParams.addAll(apiClient.parameterToPair("yResolution", yResolution)); + if (pageIndex != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pageIndex", pageIndex)); + if (pageCount != null) + localVarQueryParams.addAll(apiClient.parameterToPair("pageCount", pageCount)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToTiffValidateBeforeCall(String name, String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToTiff(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToTiff(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToTiffCall(name, outPath, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to TIFF format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tiff) (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToTiff(String name, String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToTiffWithHttpInfo(name, outPath, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to TIFF format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tiff) (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToTiffWithHttpInfo(String name, String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToTiffValidateBeforeCall(name, outPath, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to TIFF format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.tiff) (required) + * @param brightness Image brightness. (optional) + * @param compression Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. (optional) + * @param colorDepth Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. (optional) + * @param leftMargin Left image margin. (optional) + * @param rightMargin Right image margin. (optional) + * @param topMargin Top image margin. (optional) + * @param bottomMargin Bottom image margin. (optional) + * @param orientation Image orientation. Possible values are: None, Landscape, Portait. (optional) + * @param skipBlankPages Skip blank pages flag. (optional) + * @param width Image width. (optional) + * @param height Image height. (optional) + * @param xResolution Horizontal resolution. (optional) + * @param yResolution Vertical resolution. (optional) + * @param pageIndex Start page to export. (optional) + * @param pageCount Number of pages to export. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToTiffAsync(String name, String outPath, Double brightness, String compression, String colorDepth, Integer leftMargin, Integer rightMargin, Integer topMargin, Integer bottomMargin, String orientation, Boolean skipBlankPages, Integer width, Integer height, Integer xResolution, Integer yResolution, Integer pageIndex, Integer pageCount, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToTiffValidateBeforeCall(name, outPath, brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xResolution, yResolution, pageIndex, pageCount, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToXls + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xls) (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToXlsCall(String name, String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/xls" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (insertBlankColumnAtFirst != null) + localVarQueryParams.addAll(apiClient.parameterToPair("insertBlankColumnAtFirst", insertBlankColumnAtFirst)); + if (minimizeTheNumberOfWorksheets != null) + localVarQueryParams.addAll(apiClient.parameterToPair("minimizeTheNumberOfWorksheets", minimizeTheNumberOfWorksheets)); + if (scaleFactor != null) + localVarQueryParams.addAll(apiClient.parameterToPair("scaleFactor", scaleFactor)); + if (uniformWorksheets != null) + localVarQueryParams.addAll(apiClient.parameterToPair("uniformWorksheets", uniformWorksheets)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToXlsValidateBeforeCall(String name, String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToXls(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToXls(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToXlsCall(name, outPath, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to XLS format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xls) (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToXls(String name, String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToXlsWithHttpInfo(name, outPath, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to XLS format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xls) (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToXlsWithHttpInfo(String name, String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToXlsValidateBeforeCall(name, outPath, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to XLS format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xls) (required) + * @param insertBlankColumnAtFirst Insert blank column at first (optional) + * @param minimizeTheNumberOfWorksheets Minimize the number of worksheets (optional) + * @param scaleFactor Scale factor (optional) + * @param uniformWorksheets Uniform worksheets (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToXlsAsync(String name, String outPath, Boolean insertBlankColumnAtFirst, Boolean minimizeTheNumberOfWorksheets, Double scaleFactor, Boolean uniformWorksheets, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToXlsValidateBeforeCall(name, outPath, insertBlankColumnAtFirst, minimizeTheNumberOfWorksheets, scaleFactor, uniformWorksheets, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToXml + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xml) (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToXmlCall(String name, String outPath, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/xml" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToXmlValidateBeforeCall(String name, String outPath, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToXml(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToXml(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToXmlCall(name, outPath, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to XML format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xml) (required) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToXml(String name, String outPath, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToXmlWithHttpInfo(name, outPath, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to XML format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xml) (required) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToXmlWithHttpInfo(String name, String outPath, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToXmlValidateBeforeCall(name, outPath, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to XML format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xml) (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToXmlAsync(String name, String outPath, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToXmlValidateBeforeCall(name, outPath, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPdfInStorageToXps + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xps) (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToXpsCall(String name, String outPath, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/xps" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPdfInStorageToXpsValidateBeforeCall(String name, String outPath, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPdfInStorageToXps(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putPdfInStorageToXps(Async)"); + } + + + com.squareup.okhttp.Call call = putPdfInStorageToXpsCall(name, outPath, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document (located on storage) to XPS format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xps) (required) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPdfInStorageToXps(String name, String outPath, String folder) throws ApiException { + ApiResponse resp = putPdfInStorageToXpsWithHttpInfo(name, outPath, folder); + return resp.getData(); + } + + /** + * Converts PDF document (located on storage) to XPS format and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xps) (required) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPdfInStorageToXpsWithHttpInfo(String name, String outPath, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPdfInStorageToXpsValidateBeforeCall(name, outPath, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document (located on storage) to XPS format and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.xps) (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPdfInStorageToXpsAsync(String name, String outPath, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPdfInStorageToXpsValidateBeforeCall(name, outPath, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putPrivileges + * @param name The document name. (required) + * @param privileges Document privileges. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putPrivilegesCall(String name, DocumentPrivilege privileges, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = privileges; + + // create path and map variables + String localVarPath = "/pdf/{name}/privileges" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putPrivilegesValidateBeforeCall(String name, DocumentPrivilege privileges, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putPrivileges(Async)"); + } + + + com.squareup.okhttp.Call call = putPrivilegesCall(name, privileges, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Update privilege document. + * + * @param name The document name. (required) + * @param privileges Document privileges. (optional) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putPrivileges(String name, DocumentPrivilege privileges, String folder) throws ApiException { + ApiResponse resp = putPrivilegesWithHttpInfo(name, privileges, folder); + return resp.getData(); + } + + /** + * Update privilege document. + * + * @param name The document name. (required) + * @param privileges Document privileges. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putPrivilegesWithHttpInfo(String name, DocumentPrivilege privileges, String folder) throws ApiException { + com.squareup.okhttp.Call call = putPrivilegesValidateBeforeCall(name, privileges, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Update privilege document. (asynchronously) + * + * @param name The document name. (required) + * @param privileges Document privileges. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putPrivilegesAsync(String name, DocumentPrivilege privileges, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putPrivilegesValidateBeforeCall(name, privileges, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putSearchableDocument + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param lang language for OCR engine. Possible values: eng, ara, bel, ben, bul, ces, dan, deu, ell, fin, fra, heb, hin, ind, isl, ita, jpn, kor, nld, nor, pol, por, ron, rus, spa, swe, tha, tur, ukr, vie, chi_sim, chi_tra or thier combination e.g. eng,rus (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putSearchableDocumentCall(String name, String storage, String folder, String lang, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/ocr" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + if (lang != null) + localVarQueryParams.addAll(apiClient.parameterToPair("lang", lang)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putSearchableDocumentValidateBeforeCall(String name, String storage, String folder, String lang, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putSearchableDocument(Async)"); + } + + + com.squareup.okhttp.Call call = putSearchableDocumentCall(name, storage, folder, lang, progressListener, progressRequestListener); + return call; + + } + + /** + * Create searchable PDF document. Generate OCR layer for images in input PDF document. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param lang language for OCR engine. Possible values: eng, ara, bel, ben, bul, ces, dan, deu, ell, fin, fra, heb, hin, ind, isl, ita, jpn, kor, nld, nor, pol, por, ron, rus, spa, swe, tha, tur, ukr, vie, chi_sim, chi_tra or thier combination e.g. eng,rus (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putSearchableDocument(String name, String storage, String folder, String lang) throws ApiException { + ApiResponse resp = putSearchableDocumentWithHttpInfo(name, storage, folder, lang); + return resp.getData(); + } + + /** + * Create searchable PDF document. Generate OCR layer for images in input PDF document. + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param lang language for OCR engine. Possible values: eng, ara, bel, ben, bul, ces, dan, deu, ell, fin, fra, heb, hin, ind, isl, ita, jpn, kor, nld, nor, pol, por, ron, rus, spa, swe, tha, tur, ukr, vie, chi_sim, chi_tra or thier combination e.g. eng,rus (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putSearchableDocumentWithHttpInfo(String name, String storage, String folder, String lang) throws ApiException { + com.squareup.okhttp.Call call = putSearchableDocumentValidateBeforeCall(name, storage, folder, lang, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Create searchable PDF document. Generate OCR layer for images in input PDF document. (asynchronously) + * + * @param name The document name. (required) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param lang language for OCR engine. Possible values: eng, ara, bel, ben, bul, ces, dan, deu, ell, fin, fra, heb, hin, ind, isl, ita, jpn, kor, nld, nor, pol, por, ron, rus, spa, swe, tha, tur, ukr, vie, chi_sim, chi_tra or thier combination e.g. eng,rus (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putSearchableDocumentAsync(String name, String storage, String folder, String lang, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putSearchableDocumentValidateBeforeCall(name, storage, folder, lang, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putSetProperty + * @param name (required) + * @param propertyName (required) + * @param property (optional) + * @param storage (optional) + * @param folder (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putSetPropertyCall(String name, String propertyName, DocumentProperty property, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = property; + + // create path and map variables + String localVarPath = "/pdf/{name}/documentproperties/{propertyName}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "propertyName" + "\\}", apiClient.escapeString(propertyName.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putSetPropertyValidateBeforeCall(String name, String propertyName, DocumentProperty property, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putSetProperty(Async)"); + } + + // verify the required parameter 'propertyName' is set + if (propertyName == null) { + throw new ApiException("Missing the required parameter 'propertyName' when calling putSetProperty(Async)"); + } + + + com.squareup.okhttp.Call call = putSetPropertyCall(name, propertyName, property, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Add/update document property. + * + * @param name (required) + * @param propertyName (required) + * @param property (optional) + * @param storage (optional) + * @param folder (optional) + * @return DocumentPropertyResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public DocumentPropertyResponse putSetProperty(String name, String propertyName, DocumentProperty property, String storage, String folder) throws ApiException { + ApiResponse resp = putSetPropertyWithHttpInfo(name, propertyName, property, storage, folder); + return resp.getData(); + } + + /** + * Add/update document property. + * + * @param name (required) + * @param propertyName (required) + * @param property (optional) + * @param storage (optional) + * @param folder (optional) + * @return ApiResponse<DocumentPropertyResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putSetPropertyWithHttpInfo(String name, String propertyName, DocumentProperty property, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putSetPropertyValidateBeforeCall(name, propertyName, property, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Add/update document property. (asynchronously) + * + * @param name (required) + * @param propertyName (required) + * @param property (optional) + * @param storage (optional) + * @param folder (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putSetPropertyAsync(String name, String propertyName, DocumentProperty property, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putSetPropertyValidateBeforeCall(name, propertyName, property, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putSvgInStorageToPdf + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.svg) (required) + * @param adjustPageSize Adjust page size (optional) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putSvgInStorageToPdfCall(String name, String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/svg" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (adjustPageSize != null) + localVarQueryParams.addAll(apiClient.parameterToPair("adjustPageSize", adjustPageSize)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (isLandscape != null) + localVarQueryParams.addAll(apiClient.parameterToPair("isLandscape", isLandscape)); + if (marginLeft != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginLeft", marginLeft)); + if (marginBottom != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginBottom", marginBottom)); + if (marginRight != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginRight", marginRight)); + if (marginTop != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginTop", marginTop)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putSvgInStorageToPdfValidateBeforeCall(String name, String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putSvgInStorageToPdf(Async)"); + } + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling putSvgInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putSvgInStorageToPdfCall(name, srcPath, adjustPageSize, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert SVG file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.svg) (required) + * @param adjustPageSize Adjust page size (optional) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putSvgInStorageToPdf(String name, String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder) throws ApiException { + ApiResponse resp = putSvgInStorageToPdfWithHttpInfo(name, srcPath, adjustPageSize, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder); + return resp.getData(); + } + + /** + * Convert SVG file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.svg) (required) + * @param adjustPageSize Adjust page size (optional) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putSvgInStorageToPdfWithHttpInfo(String name, String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putSvgInStorageToPdfValidateBeforeCall(name, srcPath, adjustPageSize, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert SVG file (located on storage) to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.svg) (required) + * @param adjustPageSize Adjust page size (optional) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putSvgInStorageToPdfAsync(String name, String srcPath, Boolean adjustPageSize, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putSvgInStorageToPdfValidateBeforeCall(name, srcPath, adjustPageSize, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putUpdateField + * @param name The document name. (required) + * @param fieldName The name of a field to be updated. (required) + * @param field with the field data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putUpdateFieldCall(String name, String fieldName, Field field, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = field; + + // create path and map variables + String localVarPath = "/pdf/{name}/fields/{fieldName}" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())) + .replaceAll("\\{" + "fieldName" + "\\}", apiClient.escapeString(fieldName.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putUpdateFieldValidateBeforeCall(String name, String fieldName, Field field, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putUpdateField(Async)"); + } + + // verify the required parameter 'fieldName' is set + if (fieldName == null) { + throw new ApiException("Missing the required parameter 'fieldName' when calling putUpdateField(Async)"); + } + + + com.squareup.okhttp.Call call = putUpdateFieldCall(name, fieldName, field, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Update field. + * + * @param name The document name. (required) + * @param fieldName The name of a field to be updated. (required) + * @param field with the field data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return FieldResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public FieldResponse putUpdateField(String name, String fieldName, Field field, String storage, String folder) throws ApiException { + ApiResponse resp = putUpdateFieldWithHttpInfo(name, fieldName, field, storage, folder); + return resp.getData(); + } + + /** + * Update field. + * + * @param name The document name. (required) + * @param fieldName The name of a field to be updated. (required) + * @param field with the field data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<FieldResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putUpdateFieldWithHttpInfo(String name, String fieldName, Field field, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putUpdateFieldValidateBeforeCall(name, fieldName, field, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Update field. (asynchronously) + * + * @param name The document name. (required) + * @param fieldName The name of a field to be updated. (required) + * @param field with the field data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putUpdateFieldAsync(String name, String fieldName, Field field, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putUpdateFieldValidateBeforeCall(name, fieldName, field, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putUpdateFields + * @param name The document name. (required) + * @param fields with the fields data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putUpdateFieldsCall(String name, Fields fields, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = fields; + + // create path and map variables + String localVarPath = "/pdf/{name}/fields" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (storage != null) + localVarQueryParams.addAll(apiClient.parameterToPair("storage", storage)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putUpdateFieldsValidateBeforeCall(String name, Fields fields, String storage, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putUpdateFields(Async)"); + } + + + com.squareup.okhttp.Call call = putUpdateFieldsCall(name, fields, storage, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Update fields. + * + * @param name The document name. (required) + * @param fields with the fields data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return FieldsResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public FieldsResponse putUpdateFields(String name, Fields fields, String storage, String folder) throws ApiException { + ApiResponse resp = putUpdateFieldsWithHttpInfo(name, fields, storage, folder); + return resp.getData(); + } + + /** + * Update fields. + * + * @param name The document name. (required) + * @param fields with the fields data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @return ApiResponse<FieldsResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putUpdateFieldsWithHttpInfo(String name, Fields fields, String storage, String folder) throws ApiException { + com.squareup.okhttp.Call call = putUpdateFieldsValidateBeforeCall(name, fields, storage, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Update fields. (asynchronously) + * + * @param name The document name. (required) + * @param fields with the fields data. (optional) + * @param storage The document storage. (optional) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putUpdateFieldsAsync(String name, Fields fields, String storage, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putUpdateFieldsValidateBeforeCall(name, fields, storage, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putWebInStorageToPdf + * @param name The document name. (required) + * @param url Source url (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putWebInStorageToPdfCall(String name, String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/web" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (url != null) + localVarQueryParams.addAll(apiClient.parameterToPair("url", url)); + if (height != null) + localVarQueryParams.addAll(apiClient.parameterToPair("height", height)); + if (width != null) + localVarQueryParams.addAll(apiClient.parameterToPair("width", width)); + if (isLandscape != null) + localVarQueryParams.addAll(apiClient.parameterToPair("isLandscape", isLandscape)); + if (marginLeft != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginLeft", marginLeft)); + if (marginBottom != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginBottom", marginBottom)); + if (marginRight != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginRight", marginRight)); + if (marginTop != null) + localVarQueryParams.addAll(apiClient.parameterToPair("marginTop", marginTop)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putWebInStorageToPdfValidateBeforeCall(String name, String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putWebInStorageToPdf(Async)"); + } + + // verify the required parameter 'url' is set + if (url == null) { + throw new ApiException("Missing the required parameter 'url' when calling putWebInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putWebInStorageToPdfCall(name, url, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert web page to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param url Source url (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putWebInStorageToPdf(String name, String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder) throws ApiException { + ApiResponse resp = putWebInStorageToPdfWithHttpInfo(name, url, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder); + return resp.getData(); + } + + /** + * Convert web page to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param url Source url (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putWebInStorageToPdfWithHttpInfo(String name, String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putWebInStorageToPdfValidateBeforeCall(name, url, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert web page to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param url Source url (required) + * @param height Page height (optional) + * @param width Page width (optional) + * @param isLandscape Is page landscaped (optional) + * @param marginLeft Page margin left (optional) + * @param marginBottom Page margin bottom (optional) + * @param marginRight Page margin right (optional) + * @param marginTop Page margin top (optional) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putWebInStorageToPdfAsync(String name, String url, Double height, Double width, Boolean isLandscape, Double marginLeft, Double marginBottom, Double marginRight, Double marginTop, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putWebInStorageToPdfValidateBeforeCall(name, url, height, width, isLandscape, marginLeft, marginBottom, marginRight, marginTop, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putXfaPdfInRequestToAcroForm + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param file A file to be converted. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putXfaPdfInRequestToAcroFormCall(String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = file; + + // create path and map variables + String localVarPath = "/pdf/convert/xfatoacroform"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putXfaPdfInRequestToAcroFormValidateBeforeCall(String outPath, File file, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putXfaPdfInRequestToAcroForm(Async)"); + } + + + com.squareup.okhttp.Call call = putXfaPdfInRequestToAcroFormCall(outPath, file, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document which contatins XFA form (in request content) to PDF with AcroForm and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param file A file to be converted. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putXfaPdfInRequestToAcroForm(String outPath, File file) throws ApiException { + ApiResponse resp = putXfaPdfInRequestToAcroFormWithHttpInfo(outPath, file); + return resp.getData(); + } + + /** + * Converts PDF document which contatins XFA form (in request content) to PDF with AcroForm and uploads resulting file to storage. + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param file A file to be converted. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putXfaPdfInRequestToAcroFormWithHttpInfo(String outPath, File file) throws ApiException { + com.squareup.okhttp.Call call = putXfaPdfInRequestToAcroFormValidateBeforeCall(outPath, file, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document which contatins XFA form (in request content) to PDF with AcroForm and uploads resulting file to storage. (asynchronously) + * + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param file A file to be converted. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putXfaPdfInRequestToAcroFormAsync(String outPath, File file, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putXfaPdfInRequestToAcroFormValidateBeforeCall(outPath, file, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putXfaPdfInStorageToAcroForm + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param folder The document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putXfaPdfInStorageToAcroFormCall(String name, String outPath, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/convert/xfatoacroform" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (outPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("outPath", outPath)); + if (folder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("folder", folder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putXfaPdfInStorageToAcroFormValidateBeforeCall(String name, String outPath, String folder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putXfaPdfInStorageToAcroForm(Async)"); + } + + // verify the required parameter 'outPath' is set + if (outPath == null) { + throw new ApiException("Missing the required parameter 'outPath' when calling putXfaPdfInStorageToAcroForm(Async)"); + } + + + com.squareup.okhttp.Call call = putXfaPdfInStorageToAcroFormCall(name, outPath, folder, progressListener, progressRequestListener); + return call; + + } + + /** + * Converts PDF document which contatins XFA form (located on storage) to PDF with AcroForm and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param folder The document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putXfaPdfInStorageToAcroForm(String name, String outPath, String folder) throws ApiException { + ApiResponse resp = putXfaPdfInStorageToAcroFormWithHttpInfo(name, outPath, folder); + return resp.getData(); + } + + /** + * Converts PDF document which contatins XFA form (located on storage) to PDF with AcroForm and uploads resulting file to storage + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param folder The document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putXfaPdfInStorageToAcroFormWithHttpInfo(String name, String outPath, String folder) throws ApiException { + com.squareup.okhttp.Call call = putXfaPdfInStorageToAcroFormValidateBeforeCall(name, outPath, folder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Converts PDF document which contatins XFA form (located on storage) to PDF with AcroForm and uploads resulting file to storage (asynchronously) + * + * @param name The document name. (required) + * @param outPath Full resulting filename (ex. /folder1/folder2/result.pdf) (required) + * @param folder The document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putXfaPdfInStorageToAcroFormAsync(String name, String outPath, String folder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putXfaPdfInStorageToAcroFormValidateBeforeCall(name, outPath, folder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putXmlInStorageToPdf + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xml) (required) + * @param xslFilePath Full XSL source filename (ex. /folder1/folder2/template.xsl) (optional) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putXmlInStorageToPdfCall(String name, String srcPath, String xslFilePath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/xml" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (xslFilePath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("xslFilePath", xslFilePath)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putXmlInStorageToPdfValidateBeforeCall(String name, String srcPath, String xslFilePath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putXmlInStorageToPdf(Async)"); + } + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling putXmlInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putXmlInStorageToPdfCall(name, srcPath, xslFilePath, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert XML file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xml) (required) + * @param xslFilePath Full XSL source filename (ex. /folder1/folder2/template.xsl) (optional) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putXmlInStorageToPdf(String name, String srcPath, String xslFilePath, String dstFolder) throws ApiException { + ApiResponse resp = putXmlInStorageToPdfWithHttpInfo(name, srcPath, xslFilePath, dstFolder); + return resp.getData(); + } + + /** + * Convert XML file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xml) (required) + * @param xslFilePath Full XSL source filename (ex. /folder1/folder2/template.xsl) (optional) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putXmlInStorageToPdfWithHttpInfo(String name, String srcPath, String xslFilePath, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putXmlInStorageToPdfValidateBeforeCall(name, srcPath, xslFilePath, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert XML file (located on storage) to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xml) (required) + * @param xslFilePath Full XSL source filename (ex. /folder1/folder2/template.xsl) (optional) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putXmlInStorageToPdfAsync(String name, String srcPath, String xslFilePath, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putXmlInStorageToPdfValidateBeforeCall(name, srcPath, xslFilePath, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putXpsInStorageToPdf + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xps) (required) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putXpsInStorageToPdfCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/xps" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putXpsInStorageToPdfValidateBeforeCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putXpsInStorageToPdf(Async)"); + } + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling putXpsInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putXpsInStorageToPdfCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert XPS file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xps) (required) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putXpsInStorageToPdf(String name, String srcPath, String dstFolder) throws ApiException { + ApiResponse resp = putXpsInStorageToPdfWithHttpInfo(name, srcPath, dstFolder); + return resp.getData(); + } + + /** + * Convert XPS file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xps) (required) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putXpsInStorageToPdfWithHttpInfo(String name, String srcPath, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putXpsInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert XPS file (located on storage) to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xps) (required) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putXpsInStorageToPdfAsync(String name, String srcPath, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putXpsInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } + /** + * Build call for putXslFoInStorageToPdf + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xpsfo) (required) + * @param dstFolder The destination document folder. (optional) + * @param progressListener Progress listener + * @param progressRequestListener Progress request listener + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + */ + public com.squareup.okhttp.Call putXslFoInStorageToPdfCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/pdf/{name}/create/xslfo" + .replaceAll("\\{" + "name" + "\\}", apiClient.escapeString(name.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + if (srcPath != null) + localVarQueryParams.addAll(apiClient.parameterToPair("srcPath", srcPath)); + if (dstFolder != null) + localVarQueryParams.addAll(apiClient.parameterToPair("dstFolder", dstFolder)); + + Map localVarHeaderParams = new HashMap(); + + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) localVarHeaderParams.put("Accept", localVarAccept); + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new com.squareup.okhttp.Interceptor() { + @Override + public com.squareup.okhttp.Response intercept(com.squareup.okhttp.Interceptor.Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] localVarAuthNames = new String[] { }; + return apiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } + + @SuppressWarnings("rawtypes") + private com.squareup.okhttp.Call putXslFoInStorageToPdfValidateBeforeCall(String name, String srcPath, String dstFolder, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + + // verify the required parameter 'name' is set + if (name == null) { + throw new ApiException("Missing the required parameter 'name' when calling putXslFoInStorageToPdf(Async)"); + } + + // verify the required parameter 'srcPath' is set + if (srcPath == null) { + throw new ApiException("Missing the required parameter 'srcPath' when calling putXslFoInStorageToPdf(Async)"); + } + + + com.squareup.okhttp.Call call = putXslFoInStorageToPdfCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + return call; + + } + + /** + * Convert XslFo file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xpsfo) (required) + * @param dstFolder The destination document folder. (optional) + * @return SaaSposeResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public SaaSposeResponse putXslFoInStorageToPdf(String name, String srcPath, String dstFolder) throws ApiException { + ApiResponse resp = putXslFoInStorageToPdfWithHttpInfo(name, srcPath, dstFolder); + return resp.getData(); + } + + /** + * Convert XslFo file (located on storage) to PDF format and upload resulting file to storage. + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xpsfo) (required) + * @param dstFolder The destination document folder. (optional) + * @return ApiResponse<SaaSposeResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse putXslFoInStorageToPdfWithHttpInfo(String name, String srcPath, String dstFolder) throws ApiException { + com.squareup.okhttp.Call call = putXslFoInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, null, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return apiClient.execute(call, localVarReturnType); + } + + /** + * Convert XslFo file (located on storage) to PDF format and upload resulting file to storage. (asynchronously) + * + * @param name The document name. (required) + * @param srcPath Full source filename (ex. /folder1/folder2/template.xpsfo) (required) + * @param dstFolder The destination document folder. (optional) + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public com.squareup.okhttp.Call putXslFoInStorageToPdfAsync(String name, String srcPath, String dstFolder, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + com.squareup.okhttp.Call call = putXslFoInStorageToPdfValidateBeforeCall(name, srcPath, dstFolder, progressListener, progressRequestListener); + Type localVarReturnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, localVarReturnType, callback); + return call; + } +} diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Annotation.java b/src/main/java/com/aspose/asposecloudpdf/model/Annotation.java new file mode 100644 index 0000000..c93d71b --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Annotation.java @@ -0,0 +1,223 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Color; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.List; + +/** + * Provides annotation. + */ +@ApiModel(description = "Provides annotation.") + +public class Annotation extends LinkElement { + @SerializedName("Color") + private Color color = null; + + @SerializedName("Contents") + private String contents = null; + + @SerializedName("CreationDate") + private String creationDate = null; + + @SerializedName("Subject") + private String subject = null; + + @SerializedName("Title") + private String title = null; + + @SerializedName("Modified") + private String modified = null; + + public Annotation color(Color color) { + this.color = color; + return this; + } + + /** + * Get the annotation color. + * @return color + **/ + @ApiModelProperty(value = "Get the annotation color.") + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + + public Annotation contents(String contents) { + this.contents = contents; + return this; + } + + /** + * Get the annotation content. + * @return contents + **/ + @ApiModelProperty(value = "Get the annotation content.") + public String getContents() { + return contents; + } + + public void setContents(String contents) { + this.contents = contents; + } + + public Annotation creationDate(String creationDate) { + this.creationDate = creationDate; + return this; + } + + /** + * The date and time when the annotation was created. + * @return creationDate + **/ + @ApiModelProperty(value = "The date and time when the annotation was created.") + public String getCreationDate() { + return creationDate; + } + + public void setCreationDate(String creationDate) { + this.creationDate = creationDate; + } + + public Annotation subject(String subject) { + this.subject = subject; + return this; + } + + /** + * Get the annotation subject. + * @return subject + **/ + @ApiModelProperty(value = "Get the annotation subject.") + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public Annotation title(String title) { + this.title = title; + return this; + } + + /** + * Get the annotation title. + * @return title + **/ + @ApiModelProperty(value = "Get the annotation title.") + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Annotation modified(String modified) { + this.modified = modified; + return this; + } + + /** + * The date and time when the annotation was last modified. + * @return modified + **/ + @ApiModelProperty(value = "The date and time when the annotation was last modified.") + public String getModified() { + return modified; + } + + public void setModified(String modified) { + this.modified = modified; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Annotation annotation = (Annotation) o; + return Objects.equals(this.color, annotation.color) && + Objects.equals(this.contents, annotation.contents) && + Objects.equals(this.creationDate, annotation.creationDate) && + Objects.equals(this.subject, annotation.subject) && + Objects.equals(this.title, annotation.title) && + Objects.equals(this.modified, annotation.modified) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(color, contents, creationDate, subject, title, modified, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Annotation {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" color: ").append(toIndentedString(color)).append("\n"); + sb.append(" contents: ").append(toIndentedString(contents)).append("\n"); + sb.append(" creationDate: ").append(toIndentedString(creationDate)).append("\n"); + sb.append(" subject: ").append(toIndentedString(subject)).append("\n"); + sb.append(" title: ").append(toIndentedString(title)).append("\n"); + sb.append(" modified: ").append(toIndentedString(modified)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/AnnotationResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/AnnotationResponse.java new file mode 100644 index 0000000..e4fa618 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/AnnotationResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Annotation; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * AnnotationResponse + */ + +public class AnnotationResponse extends SaaSposeResponse { + @SerializedName("Annotation") + private Annotation annotation = null; + + public AnnotationResponse annotation(Annotation annotation) { + this.annotation = annotation; + return this; + } + + /** + * Get annotation + * @return annotation + **/ + @ApiModelProperty(value = "") + public Annotation getAnnotation() { + return annotation; + } + + public void setAnnotation(Annotation annotation) { + this.annotation = annotation; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AnnotationResponse annotationResponse = (AnnotationResponse) o; + return Objects.equals(this.annotation, annotationResponse.annotation) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(annotation, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AnnotationResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" annotation: ").append(toIndentedString(annotation)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Annotations.java b/src/main/java/com/aspose/asposecloudpdf/model/Annotations.java new file mode 100644 index 0000000..7c6717d --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Annotations.java @@ -0,0 +1,116 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * List of annotations. + */ +@ApiModel(description = "List of annotations.") + +public class Annotations extends LinkElement { + @SerializedName("List") + private List list = null; + + public Annotations list(List list) { + this.list = list; + return this; + } + + public Annotations addListItem(LinkElement listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Annotations annotations = (Annotations) o; + return Objects.equals(this.list, annotations.list) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(list, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Annotations {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/AnnotationsResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/AnnotationsResponse.java new file mode 100644 index 0000000..57a82f6 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/AnnotationsResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Annotations; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * AnnotationsResponse + */ + +public class AnnotationsResponse extends SaaSposeResponse { + @SerializedName("Annotations") + private Annotations annotations = null; + + public AnnotationsResponse annotations(Annotations annotations) { + this.annotations = annotations; + return this; + } + + /** + * Get annotations + * @return annotations + **/ + @ApiModelProperty(value = "") + public Annotations getAnnotations() { + return annotations; + } + + public void setAnnotations(Annotations annotations) { + this.annotations = annotations; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AnnotationsResponse annotationsResponse = (AnnotationsResponse) o; + return Objects.equals(this.annotations, annotationsResponse.annotations) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(annotations, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AnnotationsResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" annotations: ").append(toIndentedString(annotations)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/AntialiasingProcessingType.java b/src/main/java/com/aspose/asposecloudpdf/model/AntialiasingProcessingType.java new file mode 100644 index 0000000..1dbbdb0 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/AntialiasingProcessingType.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * This enum describes possible antialiasing measures during conversion + */ +@JsonAdapter(AntialiasingProcessingType.Adapter.class) +public enum AntialiasingProcessingType { + + NOADDITIONALPROCESSING("NoAdditionalProcessing"), + + TRYCORRECTRESULTHTML("TryCorrectResultHtml"); + + private String value; + + AntialiasingProcessingType(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static AntialiasingProcessingType fromValue(String text) { + for (AntialiasingProcessingType b : AntialiasingProcessingType.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final AntialiasingProcessingType enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public AntialiasingProcessingType read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return AntialiasingProcessingType.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/AppendDocument.java b/src/main/java/com/aspose/asposecloudpdf/model/AppendDocument.java new file mode 100644 index 0000000..50b32ca --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/AppendDocument.java @@ -0,0 +1,149 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Class for appendDocument service request building. + */ +@ApiModel(description = "Class for appendDocument service request building.") + +public class AppendDocument { + @SerializedName("Document") + private String document = null; + + @SerializedName("StartPage") + private Integer startPage = null; + + @SerializedName("EndPage") + private Integer endPage = null; + + public AppendDocument document(String document) { + this.document = document; + return this; + } + + /** + * Document to append (server path). + * @return document + **/ + @ApiModelProperty(value = "Document to append (server path).") + public String getDocument() { + return document; + } + + public void setDocument(String document) { + this.document = document; + } + + public AppendDocument startPage(Integer startPage) { + this.startPage = startPage; + return this; + } + + /** + * Appending start page. + * @return startPage + **/ + @ApiModelProperty(required = true, value = "Appending start page.") + public Integer getStartPage() { + return startPage; + } + + public void setStartPage(Integer startPage) { + this.startPage = startPage; + } + + public AppendDocument endPage(Integer endPage) { + this.endPage = endPage; + return this; + } + + /** + * Appending end page. + * @return endPage + **/ + @ApiModelProperty(required = true, value = "Appending end page.") + public Integer getEndPage() { + return endPage; + } + + public void setEndPage(Integer endPage) { + this.endPage = endPage; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AppendDocument appendDocument = (AppendDocument) o; + return Objects.equals(this.document, appendDocument.document) && + Objects.equals(this.startPage, appendDocument.startPage) && + Objects.equals(this.endPage, appendDocument.endPage); + } + + @Override + public int hashCode() { + return Objects.hash(document, startPage, endPage); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AppendDocument {\n"); + + sb.append(" document: ").append(toIndentedString(document)).append("\n"); + sb.append(" startPage: ").append(toIndentedString(startPage)).append("\n"); + sb.append(" endPage: ").append(toIndentedString(endPage)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Attachment.java b/src/main/java/com/aspose/asposecloudpdf/model/Attachment.java new file mode 100644 index 0000000..73f8294 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Attachment.java @@ -0,0 +1,245 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.List; + +/** + * Provides link to attachment. + */ +@ApiModel(description = "Provides link to attachment.") + +public class Attachment extends LinkElement { + @SerializedName("Description") + private String description = null; + + @SerializedName("MimeType") + private String mimeType = null; + + @SerializedName("Name") + private String name = null; + + @SerializedName("CreationDate") + private String creationDate = null; + + @SerializedName("ModificationDate") + private String modificationDate = null; + + @SerializedName("Size") + private Integer size = null; + + @SerializedName("CheckSum") + private String checkSum = null; + + public Attachment description(String description) { + this.description = description; + return this; + } + + /** + * Gets text associated with the attachment. + * @return description + **/ + @ApiModelProperty(value = "Gets text associated with the attachment. ") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Attachment mimeType(String mimeType) { + this.mimeType = mimeType; + return this; + } + + /** + * Gets subtype of the attachment file. + * @return mimeType + **/ + @ApiModelProperty(value = "Gets subtype of the attachment file.") + public String getMimeType() { + return mimeType; + } + + public void setMimeType(String mimeType) { + this.mimeType = mimeType; + } + + public Attachment name(String name) { + this.name = name; + return this; + } + + /** + * Gets the name of the attachment. + * @return name + **/ + @ApiModelProperty(value = "Gets the name of the attachment. ") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Attachment creationDate(String creationDate) { + this.creationDate = creationDate; + return this; + } + + /** + * The date and time when the embedded file was created. + * @return creationDate + **/ + @ApiModelProperty(value = "The date and time when the embedded file was created.") + public String getCreationDate() { + return creationDate; + } + + public void setCreationDate(String creationDate) { + this.creationDate = creationDate; + } + + public Attachment modificationDate(String modificationDate) { + this.modificationDate = modificationDate; + return this; + } + + /** + * The date and time when the embedded file was last modified. + * @return modificationDate + **/ + @ApiModelProperty(value = "The date and time when the embedded file was last modified.") + public String getModificationDate() { + return modificationDate; + } + + public void setModificationDate(String modificationDate) { + this.modificationDate = modificationDate; + } + + public Attachment size(Integer size) { + this.size = size; + return this; + } + + /** + * The size of the uncompressed embedded file, in bytes. + * @return size + **/ + @ApiModelProperty(value = "The size of the uncompressed embedded file, in bytes.") + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public Attachment checkSum(String checkSum) { + this.checkSum = checkSum; + return this; + } + + /** + * A 16-byte string that is the checksum of the bytes of the uncompressed embedded file. The checksum is calculated by applying the standard MD5 message-digest algorithm to the bytes of the embedded file stream. + * @return checkSum + **/ + @ApiModelProperty(value = "A 16-byte string that is the checksum of the bytes of the uncompressed embedded file. The checksum is calculated by applying the standard MD5 message-digest algorithm to the bytes of the embedded file stream.") + public String getCheckSum() { + return checkSum; + } + + public void setCheckSum(String checkSum) { + this.checkSum = checkSum; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Attachment attachment = (Attachment) o; + return Objects.equals(this.description, attachment.description) && + Objects.equals(this.mimeType, attachment.mimeType) && + Objects.equals(this.name, attachment.name) && + Objects.equals(this.creationDate, attachment.creationDate) && + Objects.equals(this.modificationDate, attachment.modificationDate) && + Objects.equals(this.size, attachment.size) && + Objects.equals(this.checkSum, attachment.checkSum) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(description, mimeType, name, creationDate, modificationDate, size, checkSum, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Attachment {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" mimeType: ").append(toIndentedString(mimeType)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" creationDate: ").append(toIndentedString(creationDate)).append("\n"); + sb.append(" modificationDate: ").append(toIndentedString(modificationDate)).append("\n"); + sb.append(" size: ").append(toIndentedString(size)).append("\n"); + sb.append(" checkSum: ").append(toIndentedString(checkSum)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/AttachmentResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/AttachmentResponse.java new file mode 100644 index 0000000..2b279d2 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/AttachmentResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Attachment; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * AttachmentResponse + */ + +public class AttachmentResponse extends SaaSposeResponse { + @SerializedName("Attachment") + private Attachment attachment = null; + + public AttachmentResponse attachment(Attachment attachment) { + this.attachment = attachment; + return this; + } + + /** + * Get attachment + * @return attachment + **/ + @ApiModelProperty(value = "") + public Attachment getAttachment() { + return attachment; + } + + public void setAttachment(Attachment attachment) { + this.attachment = attachment; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AttachmentResponse attachmentResponse = (AttachmentResponse) o; + return Objects.equals(this.attachment, attachmentResponse.attachment) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(attachment, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AttachmentResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" attachment: ").append(toIndentedString(attachment)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Attachments.java b/src/main/java/com/aspose/asposecloudpdf/model/Attachments.java new file mode 100644 index 0000000..478fa3f --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Attachments.java @@ -0,0 +1,116 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * List of attachment. + */ +@ApiModel(description = "List of attachment.") + +public class Attachments extends LinkElement { + @SerializedName("List") + private List list = null; + + public Attachments list(List list) { + this.list = list; + return this; + } + + public Attachments addListItem(LinkElement listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Attachments attachments = (Attachments) o; + return Objects.equals(this.list, attachments.list) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(list, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Attachments {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/AttachmentsResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/AttachmentsResponse.java new file mode 100644 index 0000000..e73922c --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/AttachmentsResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Attachments; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * AttachmentsResponse + */ + +public class AttachmentsResponse extends SaaSposeResponse { + @SerializedName("Attachments") + private Attachments attachments = null; + + public AttachmentsResponse attachments(Attachments attachments) { + this.attachments = attachments; + return this; + } + + /** + * Get attachments + * @return attachments + **/ + @ApiModelProperty(value = "") + public Attachments getAttachments() { + return attachments; + } + + public void setAttachments(Attachments attachments) { + this.attachments = attachments; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AttachmentsResponse attachmentsResponse = (AttachmentsResponse) o; + return Objects.equals(this.attachments, attachmentsResponse.attachments) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(attachments, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AttachmentsResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" attachments: ").append(toIndentedString(attachments)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Color.java b/src/main/java/com/aspose/asposecloudpdf/model/Color.java new file mode 100644 index 0000000..c393954 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Color.java @@ -0,0 +1,172 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Represents color DTO. + */ +@ApiModel(description = "Represents color DTO.") + +public class Color { + @SerializedName("A") + private Integer A = null; + + @SerializedName("R") + private Integer R = null; + + @SerializedName("G") + private Integer G = null; + + @SerializedName("B") + private Integer B = null; + + public Color A(Integer A) { + this.A = A; + return this; + } + + /** + * Get A + * @return A + **/ + @ApiModelProperty(required = true, value = "") + public Integer getA() { + return A; + } + + public void setA(Integer A) { + this.A = A; + } + + public Color R(Integer R) { + this.R = R; + return this; + } + + /** + * Get R + * @return R + **/ + @ApiModelProperty(required = true, value = "") + public Integer getR() { + return R; + } + + public void setR(Integer R) { + this.R = R; + } + + public Color G(Integer G) { + this.G = G; + return this; + } + + /** + * Get G + * @return G + **/ + @ApiModelProperty(required = true, value = "") + public Integer getG() { + return G; + } + + public void setG(Integer G) { + this.G = G; + } + + public Color B(Integer B) { + this.B = B; + return this; + } + + /** + * Get B + * @return B + **/ + @ApiModelProperty(required = true, value = "") + public Integer getB() { + return B; + } + + public void setB(Integer B) { + this.B = B; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Color color = (Color) o; + return Objects.equals(this.A, color.A) && + Objects.equals(this.R, color.R) && + Objects.equals(this.G, color.G) && + Objects.equals(this.B, color.B); + } + + @Override + public int hashCode() { + return Objects.hash(A, R, G, B); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Color {\n"); + + sb.append(" A: ").append(toIndentedString(A)).append("\n"); + sb.append(" R: ").append(toIndentedString(R)).append("\n"); + sb.append(" G: ").append(toIndentedString(G)).append("\n"); + sb.append(" B: ").append(toIndentedString(B)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/ColorDepth.java b/src/main/java/com/aspose/asposecloudpdf/model/ColorDepth.java new file mode 100644 index 0000000..cb541e3 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/ColorDepth.java @@ -0,0 +1,86 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Used to specify the parameter value passed to a Tiff image device. + */ +@JsonAdapter(ColorDepth.Adapter.class) +public enum ColorDepth { + + DEFAULT("Default"), + + FORMAT8BPP("Format8bpp"), + + FORMAT4BPP("Format4bpp"), + + FORMAT1BPP("Format1bpp"); + + private String value; + + ColorDepth(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static ColorDepth fromValue(String text) { + for (ColorDepth b : ColorDepth.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final ColorDepth enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public ColorDepth read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return ColorDepth.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/CompressionType.java b/src/main/java/com/aspose/asposecloudpdf/model/CompressionType.java new file mode 100644 index 0000000..ed27b63 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/CompressionType.java @@ -0,0 +1,88 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Used to specify the parameter value passed to a Tiff image device. + */ +@JsonAdapter(CompressionType.Adapter.class) +public enum CompressionType { + + LZW("LZW"), + + CCITT4("CCITT4"), + + CCITT3("CCITT3"), + + RLE("RLE"), + + NONE("None"); + + private String value; + + CompressionType(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static CompressionType fromValue(String text) { + for (CompressionType b : CompressionType.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final CompressionType enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public CompressionType read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return CompressionType.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocFormat.java b/src/main/java/com/aspose/asposecloudpdf/model/DocFormat.java new file mode 100644 index 0000000..bf66510 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocFormat.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Allows to specify .doc or .docx file format. + */ +@JsonAdapter(DocFormat.Adapter.class) +public enum DocFormat { + + DOC("Doc"), + + DOCX("DocX"); + + private String value; + + DocFormat(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static DocFormat fromValue(String text) { + for (DocFormat b : DocFormat.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final DocFormat enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public DocFormat read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return DocFormat.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocRecognitionMode.java b/src/main/java/com/aspose/asposecloudpdf/model/DocRecognitionMode.java new file mode 100644 index 0000000..38ab351 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocRecognitionMode.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Allows to control how a PDF document is converted into a word processing document. + */ +@JsonAdapter(DocRecognitionMode.Adapter.class) +public enum DocRecognitionMode { + + TEXTBOX("Textbox"), + + FLOW("Flow"); + + private String value; + + DocRecognitionMode(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static DocRecognitionMode fromValue(String text) { + for (DocRecognitionMode b : DocRecognitionMode.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final DocRecognitionMode enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public DocRecognitionMode read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return DocRecognitionMode.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Document.java b/src/main/java/com/aspose/asposecloudpdf/model/Document.java new file mode 100644 index 0000000..9a1e049 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Document.java @@ -0,0 +1,132 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.DocumentProperties; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.aspose.asposecloudpdf.model.Pages; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.List; + +/** + * Represents document DTO. + */ +@ApiModel(description = "Represents document DTO.") + +public class Document extends LinkElement { + @SerializedName("DocumentProperties") + private DocumentProperties documentProperties = null; + + @SerializedName("Pages") + private Pages pages = null; + + public Document documentProperties(DocumentProperties documentProperties) { + this.documentProperties = documentProperties; + return this; + } + + /** + * Document properties. + * @return documentProperties + **/ + @ApiModelProperty(value = "Document properties.") + public DocumentProperties getDocumentProperties() { + return documentProperties; + } + + public void setDocumentProperties(DocumentProperties documentProperties) { + this.documentProperties = documentProperties; + } + + public Document pages(Pages pages) { + this.pages = pages; + return this; + } + + /** + * Document pages. + * @return pages + **/ + @ApiModelProperty(value = "Document pages.") + public Pages getPages() { + return pages; + } + + public void setPages(Pages pages) { + this.pages = pages; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Document document = (Document) o; + return Objects.equals(this.documentProperties, document.documentProperties) && + Objects.equals(this.pages, document.pages) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(documentProperties, pages, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Document {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" documentProperties: ").append(toIndentedString(documentProperties)).append("\n"); + sb.append(" pages: ").append(toIndentedString(pages)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocumentPagesResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/DocumentPagesResponse.java new file mode 100644 index 0000000..6c5b5a9 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocumentPagesResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.Pages; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * DocumentPagesResponse + */ + +public class DocumentPagesResponse extends SaaSposeResponse { + @SerializedName("Pages") + private Pages pages = null; + + public DocumentPagesResponse pages(Pages pages) { + this.pages = pages; + return this; + } + + /** + * Get pages + * @return pages + **/ + @ApiModelProperty(value = "") + public Pages getPages() { + return pages; + } + + public void setPages(Pages pages) { + this.pages = pages; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DocumentPagesResponse documentPagesResponse = (DocumentPagesResponse) o; + return Objects.equals(this.pages, documentPagesResponse.pages) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(pages, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DocumentPagesResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" pages: ").append(toIndentedString(pages)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocumentPrivilege.java b/src/main/java/com/aspose/asposecloudpdf/model/DocumentPrivilege.java new file mode 100644 index 0000000..241a7b0 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocumentPrivilege.java @@ -0,0 +1,333 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Represents the privileges for accessing Pdf file./>. + */ +@ApiModel(description = "Represents the privileges for accessing Pdf file./>.") + +public class DocumentPrivilege { + @SerializedName("AllowPrint") + private Boolean allowPrint = null; + + @SerializedName("AllowDegradedPrinting") + private Boolean allowDegradedPrinting = null; + + @SerializedName("AllowModifyContents") + private Boolean allowModifyContents = null; + + @SerializedName("AllowCopy") + private Boolean allowCopy = null; + + @SerializedName("AllowModifyAnnotations") + private Boolean allowModifyAnnotations = null; + + @SerializedName("AllowFillIn") + private Boolean allowFillIn = null; + + @SerializedName("AllowScreenReaders") + private Boolean allowScreenReaders = null; + + @SerializedName("AllowAssembly") + private Boolean allowAssembly = null; + + @SerializedName("PrintAllowLevel") + private Integer printAllowLevel = null; + + @SerializedName("ChangeAllowLevel") + private Integer changeAllowLevel = null; + + @SerializedName("CopyAllowLevel") + private Integer copyAllowLevel = null; + + public DocumentPrivilege allowPrint(Boolean allowPrint) { + this.allowPrint = allowPrint; + return this; + } + + /** + * Sets the permission which allow print or not. true is allow and false or not set is forbidden. + * @return allowPrint + **/ + @ApiModelProperty(value = "Sets the permission which allow print or not. true is allow and false or not set is forbidden.") + public Boolean isAllowPrint() { + return allowPrint; + } + + public void setAllowPrint(Boolean allowPrint) { + this.allowPrint = allowPrint; + } + + public DocumentPrivilege allowDegradedPrinting(Boolean allowDegradedPrinting) { + this.allowDegradedPrinting = allowDegradedPrinting; + return this; + } + + /** + * Sets the permission which allow degraded printing or not. true is allow and false or not set is forbidden. + * @return allowDegradedPrinting + **/ + @ApiModelProperty(value = "Sets the permission which allow degraded printing or not. true is allow and false or not set is forbidden.") + public Boolean isAllowDegradedPrinting() { + return allowDegradedPrinting; + } + + public void setAllowDegradedPrinting(Boolean allowDegradedPrinting) { + this.allowDegradedPrinting = allowDegradedPrinting; + } + + public DocumentPrivilege allowModifyContents(Boolean allowModifyContents) { + this.allowModifyContents = allowModifyContents; + return this; + } + + /** + * Sets the permission which allow modify contents or not. true is allow and false or not set is forbidden. + * @return allowModifyContents + **/ + @ApiModelProperty(value = "Sets the permission which allow modify contents or not. true is allow and false or not set is forbidden.") + public Boolean isAllowModifyContents() { + return allowModifyContents; + } + + public void setAllowModifyContents(Boolean allowModifyContents) { + this.allowModifyContents = allowModifyContents; + } + + public DocumentPrivilege allowCopy(Boolean allowCopy) { + this.allowCopy = allowCopy; + return this; + } + + /** + * Sets the permission which allow copy or not. true is allow and false or not set is forbidden. + * @return allowCopy + **/ + @ApiModelProperty(value = "Sets the permission which allow copy or not. true is allow and false or not set is forbidden.") + public Boolean isAllowCopy() { + return allowCopy; + } + + public void setAllowCopy(Boolean allowCopy) { + this.allowCopy = allowCopy; + } + + public DocumentPrivilege allowModifyAnnotations(Boolean allowModifyAnnotations) { + this.allowModifyAnnotations = allowModifyAnnotations; + return this; + } + + /** + * Sets the permission which allow modify annotations or not. true is allow and false or not set is forbidden. + * @return allowModifyAnnotations + **/ + @ApiModelProperty(value = "Sets the permission which allow modify annotations or not. true is allow and false or not set is forbidden.") + public Boolean isAllowModifyAnnotations() { + return allowModifyAnnotations; + } + + public void setAllowModifyAnnotations(Boolean allowModifyAnnotations) { + this.allowModifyAnnotations = allowModifyAnnotations; + } + + public DocumentPrivilege allowFillIn(Boolean allowFillIn) { + this.allowFillIn = allowFillIn; + return this; + } + + /** + * Sets the permission which allow fill in forms or not. true is allow and false or not set is forbidden. + * @return allowFillIn + **/ + @ApiModelProperty(value = "Sets the permission which allow fill in forms or not. true is allow and false or not set is forbidden.") + public Boolean isAllowFillIn() { + return allowFillIn; + } + + public void setAllowFillIn(Boolean allowFillIn) { + this.allowFillIn = allowFillIn; + } + + public DocumentPrivilege allowScreenReaders(Boolean allowScreenReaders) { + this.allowScreenReaders = allowScreenReaders; + return this; + } + + /** + * Sets the permission which allow screen readers or not. true is allow and false or not set is forbidden. + * @return allowScreenReaders + **/ + @ApiModelProperty(value = "Sets the permission which allow screen readers or not. true is allow and false or not set is forbidden.") + public Boolean isAllowScreenReaders() { + return allowScreenReaders; + } + + public void setAllowScreenReaders(Boolean allowScreenReaders) { + this.allowScreenReaders = allowScreenReaders; + } + + public DocumentPrivilege allowAssembly(Boolean allowAssembly) { + this.allowAssembly = allowAssembly; + return this; + } + + /** + * Sets the permission which allow assembly or not. true is allow and false or not set is forbidden. + * @return allowAssembly + **/ + @ApiModelProperty(value = "Sets the permission which allow assembly or not. true is allow and false or not set is forbidden.") + public Boolean isAllowAssembly() { + return allowAssembly; + } + + public void setAllowAssembly(Boolean allowAssembly) { + this.allowAssembly = allowAssembly; + } + + public DocumentPrivilege printAllowLevel(Integer printAllowLevel) { + this.printAllowLevel = printAllowLevel; + return this; + } + + /** + * Sets the print level of document's privilege. Just as the Adobe Professional's Printing Allowed settings. 0: None. 1: Low Resolution (150 dpi). 2: High Resolution. + * @return printAllowLevel + **/ + @ApiModelProperty(value = "Sets the print level of document's privilege. Just as the Adobe Professional's Printing Allowed settings. 0: None. 1: Low Resolution (150 dpi). 2: High Resolution.") + public Integer getPrintAllowLevel() { + return printAllowLevel; + } + + public void setPrintAllowLevel(Integer printAllowLevel) { + this.printAllowLevel = printAllowLevel; + } + + public DocumentPrivilege changeAllowLevel(Integer changeAllowLevel) { + this.changeAllowLevel = changeAllowLevel; + return this; + } + + /** + * Sets the change level of document's privilege. Just as the Adobe Professional's Changes Allowed settings. 0: None. 1: Inserting, Deleting and Rotating pages. 2: Filling in form fields and signing existing signature fields. 3: Commenting, filling in form fields, and signing existing signature fields. 4: Any except extracting pages. + * @return changeAllowLevel + **/ + @ApiModelProperty(value = "Sets the change level of document's privilege. Just as the Adobe Professional's Changes Allowed settings. 0: None. 1: Inserting, Deleting and Rotating pages. 2: Filling in form fields and signing existing signature fields. 3: Commenting, filling in form fields, and signing existing signature fields. 4: Any except extracting pages.") + public Integer getChangeAllowLevel() { + return changeAllowLevel; + } + + public void setChangeAllowLevel(Integer changeAllowLevel) { + this.changeAllowLevel = changeAllowLevel; + } + + public DocumentPrivilege copyAllowLevel(Integer copyAllowLevel) { + this.copyAllowLevel = copyAllowLevel; + return this; + } + + /** + * Sets the copy level of document's privilege. Just as the Adobe Professional's permission settings. 0: None. 1: Enable text access for screen reader devices for the visually impaired. 2: Enable copying of text, images and other content. + * @return copyAllowLevel + **/ + @ApiModelProperty(value = "Sets the copy level of document's privilege. Just as the Adobe Professional's permission settings. 0: None. 1: Enable text access for screen reader devices for the visually impaired. 2: Enable copying of text, images and other content.") + public Integer getCopyAllowLevel() { + return copyAllowLevel; + } + + public void setCopyAllowLevel(Integer copyAllowLevel) { + this.copyAllowLevel = copyAllowLevel; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DocumentPrivilege documentPrivilege = (DocumentPrivilege) o; + return Objects.equals(this.allowPrint, documentPrivilege.allowPrint) && + Objects.equals(this.allowDegradedPrinting, documentPrivilege.allowDegradedPrinting) && + Objects.equals(this.allowModifyContents, documentPrivilege.allowModifyContents) && + Objects.equals(this.allowCopy, documentPrivilege.allowCopy) && + Objects.equals(this.allowModifyAnnotations, documentPrivilege.allowModifyAnnotations) && + Objects.equals(this.allowFillIn, documentPrivilege.allowFillIn) && + Objects.equals(this.allowScreenReaders, documentPrivilege.allowScreenReaders) && + Objects.equals(this.allowAssembly, documentPrivilege.allowAssembly) && + Objects.equals(this.printAllowLevel, documentPrivilege.printAllowLevel) && + Objects.equals(this.changeAllowLevel, documentPrivilege.changeAllowLevel) && + Objects.equals(this.copyAllowLevel, documentPrivilege.copyAllowLevel); + } + + @Override + public int hashCode() { + return Objects.hash(allowPrint, allowDegradedPrinting, allowModifyContents, allowCopy, allowModifyAnnotations, allowFillIn, allowScreenReaders, allowAssembly, printAllowLevel, changeAllowLevel, copyAllowLevel); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DocumentPrivilege {\n"); + + sb.append(" allowPrint: ").append(toIndentedString(allowPrint)).append("\n"); + sb.append(" allowDegradedPrinting: ").append(toIndentedString(allowDegradedPrinting)).append("\n"); + sb.append(" allowModifyContents: ").append(toIndentedString(allowModifyContents)).append("\n"); + sb.append(" allowCopy: ").append(toIndentedString(allowCopy)).append("\n"); + sb.append(" allowModifyAnnotations: ").append(toIndentedString(allowModifyAnnotations)).append("\n"); + sb.append(" allowFillIn: ").append(toIndentedString(allowFillIn)).append("\n"); + sb.append(" allowScreenReaders: ").append(toIndentedString(allowScreenReaders)).append("\n"); + sb.append(" allowAssembly: ").append(toIndentedString(allowAssembly)).append("\n"); + sb.append(" printAllowLevel: ").append(toIndentedString(printAllowLevel)).append("\n"); + sb.append(" changeAllowLevel: ").append(toIndentedString(changeAllowLevel)).append("\n"); + sb.append(" copyAllowLevel: ").append(toIndentedString(copyAllowLevel)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocumentProperties.java b/src/main/java/com/aspose/asposecloudpdf/model/DocumentProperties.java new file mode 100644 index 0000000..690e0c8 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocumentProperties.java @@ -0,0 +1,117 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.DocumentProperty; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Pdf document properties. + */ +@ApiModel(description = "Pdf document properties.") + +public class DocumentProperties extends LinkElement { + @SerializedName("List") + private List list = null; + + public DocumentProperties list(List list) { + this.list = list; + return this; + } + + public DocumentProperties addListItem(DocumentProperty listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DocumentProperties documentProperties = (DocumentProperties) o; + return Objects.equals(this.list, documentProperties.list) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(list, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DocumentProperties {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocumentPropertiesResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/DocumentPropertiesResponse.java new file mode 100644 index 0000000..65b879b --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocumentPropertiesResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.DocumentProperties; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * DocumentPropertiesResponse + */ + +public class DocumentPropertiesResponse extends SaaSposeResponse { + @SerializedName("DocumentProperties") + private DocumentProperties documentProperties = null; + + public DocumentPropertiesResponse documentProperties(DocumentProperties documentProperties) { + this.documentProperties = documentProperties; + return this; + } + + /** + * Get documentProperties + * @return documentProperties + **/ + @ApiModelProperty(value = "") + public DocumentProperties getDocumentProperties() { + return documentProperties; + } + + public void setDocumentProperties(DocumentProperties documentProperties) { + this.documentProperties = documentProperties; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DocumentPropertiesResponse documentPropertiesResponse = (DocumentPropertiesResponse) o; + return Objects.equals(this.documentProperties, documentPropertiesResponse.documentProperties) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(documentProperties, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DocumentPropertiesResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" documentProperties: ").append(toIndentedString(documentProperties)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocumentProperty.java b/src/main/java/com/aspose/asposecloudpdf/model/DocumentProperty.java new file mode 100644 index 0000000..879e474 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocumentProperty.java @@ -0,0 +1,153 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.List; + +/** + * Pdf document property. + */ +@ApiModel(description = "Pdf document property.") + +public class DocumentProperty extends LinkElement { + @SerializedName("Name") + private String name = null; + + @SerializedName("Value") + private String value = null; + + @SerializedName("BuiltIn") + private Boolean builtIn = null; + + public DocumentProperty name(String name) { + this.name = name; + return this; + } + + /** + * Get name + * @return name + **/ + @ApiModelProperty(value = "") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public DocumentProperty value(String value) { + this.value = value; + return this; + } + + /** + * Get value + * @return value + **/ + @ApiModelProperty(value = "") + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public DocumentProperty builtIn(Boolean builtIn) { + this.builtIn = builtIn; + return this; + } + + /** + * Get builtIn + * @return builtIn + **/ + @ApiModelProperty(value = "") + public Boolean isBuiltIn() { + return builtIn; + } + + public void setBuiltIn(Boolean builtIn) { + this.builtIn = builtIn; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DocumentProperty documentProperty = (DocumentProperty) o; + return Objects.equals(this.name, documentProperty.name) && + Objects.equals(this.value, documentProperty.value) && + Objects.equals(this.builtIn, documentProperty.builtIn) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(name, value, builtIn, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DocumentProperty {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" value: ").append(toIndentedString(value)).append("\n"); + sb.append(" builtIn: ").append(toIndentedString(builtIn)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocumentPropertyResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/DocumentPropertyResponse.java new file mode 100644 index 0000000..9e4ad11 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocumentPropertyResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.DocumentProperty; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * DocumentPropertyResponse + */ + +public class DocumentPropertyResponse extends SaaSposeResponse { + @SerializedName("DocumentProperty") + private DocumentProperty documentProperty = null; + + public DocumentPropertyResponse documentProperty(DocumentProperty documentProperty) { + this.documentProperty = documentProperty; + return this; + } + + /** + * Get documentProperty + * @return documentProperty + **/ + @ApiModelProperty(value = "") + public DocumentProperty getDocumentProperty() { + return documentProperty; + } + + public void setDocumentProperty(DocumentProperty documentProperty) { + this.documentProperty = documentProperty; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DocumentPropertyResponse documentPropertyResponse = (DocumentPropertyResponse) o; + return Objects.equals(this.documentProperty, documentPropertyResponse.documentProperty) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(documentProperty, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DocumentPropertyResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" documentProperty: ").append(toIndentedString(documentProperty)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocumentResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/DocumentResponse.java new file mode 100644 index 0000000..b6a6301 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocumentResponse.java @@ -0,0 +1,139 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Document; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * DocumentResponse + */ + +public class DocumentResponse extends SaaSposeResponse { + @SerializedName("Document") + private Document document = null; + + @SerializedName("Messages") + private List messages = null; + + public DocumentResponse document(Document document) { + this.document = document; + return this; + } + + /** + * Get document + * @return document + **/ + @ApiModelProperty(value = "") + public Document getDocument() { + return document; + } + + public void setDocument(Document document) { + this.document = document; + } + + public DocumentResponse messages(List messages) { + this.messages = messages; + return this; + } + + public DocumentResponse addMessagesItem(String messagesItem) { + if (this.messages == null) { + this.messages = new ArrayList(); + } + this.messages.add(messagesItem); + return this; + } + + /** + * Get messages + * @return messages + **/ + @ApiModelProperty(value = "") + public List getMessages() { + return messages; + } + + public void setMessages(List messages) { + this.messages = messages; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DocumentResponse documentResponse = (DocumentResponse) o; + return Objects.equals(this.document, documentResponse.document) && + Objects.equals(this.messages, documentResponse.messages) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(document, messages, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DocumentResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" document: ").append(toIndentedString(document)).append("\n"); + sb.append(" messages: ").append(toIndentedString(messages)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/DocumentTextReplaceResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/DocumentTextReplaceResponse.java new file mode 100644 index 0000000..ac31cf1 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/DocumentTextReplaceResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Document; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.TextReplaceResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * DocumentTextReplaceResponse + */ + +public class DocumentTextReplaceResponse extends TextReplaceResponse { + @SerializedName("Document") + private Document document = null; + + public DocumentTextReplaceResponse document(Document document) { + this.document = document; + return this; + } + + /** + * Get document + * @return document + **/ + @ApiModelProperty(value = "") + public Document getDocument() { + return document; + } + + public void setDocument(Document document) { + this.document = document; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DocumentTextReplaceResponse documentTextReplaceResponse = (DocumentTextReplaceResponse) o; + return Objects.equals(this.document, documentTextReplaceResponse.document) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(document, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DocumentTextReplaceResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" document: ").append(toIndentedString(document)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/EpubRecognitionMode.java b/src/main/java/com/aspose/asposecloudpdf/model/EpubRecognitionMode.java new file mode 100644 index 0000000..b46a215 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/EpubRecognitionMode.java @@ -0,0 +1,84 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * When PDF file (that usually has fixed layout) is being converted, the conversion engine tries to perform grouping and multi-level analysis to restore the original document author's intent and produce result in flow layout. This property tunes that conversion for this or that desirable method of recognition of content. + */ +@JsonAdapter(EpubRecognitionMode.Adapter.class) +public enum EpubRecognitionMode { + + FLOW("Flow"), + + PDFFLOW("PdfFlow"), + + FIXED("Fixed"); + + private String value; + + EpubRecognitionMode(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static EpubRecognitionMode fromValue(String text) { + for (EpubRecognitionMode b : EpubRecognitionMode.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final EpubRecognitionMode enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public EpubRecognitionMode read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return EpubRecognitionMode.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Field.java b/src/main/java/com/aspose/asposecloudpdf/model/Field.java new file mode 100644 index 0000000..e44c4d9 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Field.java @@ -0,0 +1,218 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.FieldType; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.aspose.asposecloudpdf.model.Rectangle; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Represents form field. + */ +@ApiModel(description = "Represents form field.") + +public class Field extends LinkElement { + @SerializedName("Name") + private String name = null; + + @SerializedName("Type") + private FieldType type = null; + + @SerializedName("Values") + private List values = null; + + @SerializedName("SelectedItems") + private List selectedItems = null; + + @SerializedName("Rect") + private Rectangle rect = null; + + public Field name(String name) { + this.name = name; + return this; + } + + /** + * Field name. + * @return name + **/ + @ApiModelProperty(value = "Field name.") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Field type(FieldType type) { + this.type = type; + return this; + } + + /** + * Field type. + * @return type + **/ + @ApiModelProperty(value = "Field type.") + public FieldType getType() { + return type; + } + + public void setType(FieldType type) { + this.type = type; + } + + public Field values(List values) { + this.values = values; + return this; + } + + public Field addValuesItem(String valuesItem) { + if (this.values == null) { + this.values = new ArrayList(); + } + this.values.add(valuesItem); + return this; + } + + /** + * Field values. + * @return values + **/ + @ApiModelProperty(value = "Field values.") + public List getValues() { + return values; + } + + public void setValues(List values) { + this.values = values; + } + + public Field selectedItems(List selectedItems) { + this.selectedItems = selectedItems; + return this; + } + + public Field addSelectedItemsItem(Integer selectedItemsItem) { + if (this.selectedItems == null) { + this.selectedItems = new ArrayList(); + } + this.selectedItems.add(selectedItemsItem); + return this; + } + + /** + * Selected items. + * @return selectedItems + **/ + @ApiModelProperty(value = "Selected items.") + public List getSelectedItems() { + return selectedItems; + } + + public void setSelectedItems(List selectedItems) { + this.selectedItems = selectedItems; + } + + public Field rect(Rectangle rect) { + this.rect = rect; + return this; + } + + /** + * Field rectangle. + * @return rect + **/ + @ApiModelProperty(value = "Field rectangle.") + public Rectangle getRect() { + return rect; + } + + public void setRect(Rectangle rect) { + this.rect = rect; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Field field = (Field) o; + return Objects.equals(this.name, field.name) && + Objects.equals(this.type, field.type) && + Objects.equals(this.values, field.values) && + Objects.equals(this.selectedItems, field.selectedItems) && + Objects.equals(this.rect, field.rect) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(name, type, values, selectedItems, rect, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Field {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" values: ").append(toIndentedString(values)).append("\n"); + sb.append(" selectedItems: ").append(toIndentedString(selectedItems)).append("\n"); + sb.append(" rect: ").append(toIndentedString(rect)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/FieldResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/FieldResponse.java new file mode 100644 index 0000000..2e9d6d5 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/FieldResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Field; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * FieldResponse + */ + +public class FieldResponse extends SaaSposeResponse { + @SerializedName("Field") + private Field field = null; + + public FieldResponse field(Field field) { + this.field = field; + return this; + } + + /** + * Get field + * @return field + **/ + @ApiModelProperty(value = "") + public Field getField() { + return field; + } + + public void setField(Field field) { + this.field = field; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + FieldResponse fieldResponse = (FieldResponse) o; + return Objects.equals(this.field, fieldResponse.field) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(field, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class FieldResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" field: ").append(toIndentedString(field)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/FieldType.java b/src/main/java/com/aspose/asposecloudpdf/model/FieldType.java new file mode 100644 index 0000000..78ad26e --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/FieldType.java @@ -0,0 +1,83 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Represents an enumeration of available field types. + */ +@JsonAdapter(FieldType.Adapter.class) +public enum FieldType { + + TEXT(0), + INTEGER(1), + BOOLEAN(2), + LIST(3); + + private Integer value; + + FieldType(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static FieldType fromValue(String text) { + for (FieldType b : FieldType.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final FieldType enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public FieldType read(final JsonReader jsonReader) throws IOException { + Integer value = jsonReader.nextInt(); + return FieldType.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Fields.java b/src/main/java/com/aspose/asposecloudpdf/model/Fields.java new file mode 100644 index 0000000..6c73d8b --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Fields.java @@ -0,0 +1,117 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Field; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * List of form fields. + */ +@ApiModel(description = "List of form fields.") + +public class Fields extends LinkElement { + @SerializedName("List") + private List list = null; + + public Fields list(List list) { + this.list = list; + return this; + } + + public Fields addListItem(Field listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Fields fields = (Fields) o; + return Objects.equals(this.list, fields.list) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(list, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Fields {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/FieldsResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/FieldsResponse.java new file mode 100644 index 0000000..b8b0b6c --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/FieldsResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Fields; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * FieldsResponse + */ + +public class FieldsResponse extends SaaSposeResponse { + @SerializedName("Fields") + private Fields fields = null; + + public FieldsResponse fields(Fields fields) { + this.fields = fields; + return this; + } + + /** + * Get fields + * @return fields + **/ + @ApiModelProperty(value = "") + public Fields getFields() { + return fields; + } + + public void setFields(Fields fields) { + this.fields = fields; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + FieldsResponse fieldsResponse = (FieldsResponse) o; + return Objects.equals(this.fields, fieldsResponse.fields) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(fields, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class FieldsResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" fields: ").append(toIndentedString(fields)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/FontEncodingRules.java b/src/main/java/com/aspose/asposecloudpdf/model/FontEncodingRules.java new file mode 100644 index 0000000..8a02eeb --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/FontEncodingRules.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * This enumeration defines rules which tune encoding logic + */ +@JsonAdapter(FontEncodingRules.Adapter.class) +public enum FontEncodingRules { + + DEFAULT("Default"), + + DECREASETOUNICODEPRIORITYLEVEL("DecreaseToUnicodePriorityLevel"); + + private String value; + + FontEncodingRules(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static FontEncodingRules fromValue(String text) { + for (FontEncodingRules b : FontEncodingRules.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final FontEncodingRules enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public FontEncodingRules read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return FontEncodingRules.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/FontSavingModes.java b/src/main/java/com/aspose/asposecloudpdf/model/FontSavingModes.java new file mode 100644 index 0000000..843f02e --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/FontSavingModes.java @@ -0,0 +1,86 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Enumerates modes that can be used for saving of fonts referenced in saved PDF + */ +@JsonAdapter(FontSavingModes.Adapter.class) +public enum FontSavingModes { + + ALWAYSSAVEASWOFF("AlwaysSaveAsWOFF"), + + ALWAYSSAVEASTTF("AlwaysSaveAsTTF"), + + ALWAYSSAVEASEOT("AlwaysSaveAsEOT"), + + SAVEINALLFORMATS("SaveInAllFormats"); + + private String value; + + FontSavingModes(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static FontSavingModes fromValue(String text) { + for (FontSavingModes b : FontSavingModes.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final FontSavingModes enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public FontSavingModes read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return FontSavingModes.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/FontStyles.java b/src/main/java/com/aspose/asposecloudpdf/model/FontStyles.java new file mode 100644 index 0000000..2a5b8da --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/FontStyles.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Specifies style information applied to text. + */ +@JsonAdapter(FontStyles.Adapter.class) +public enum FontStyles { + + REGULAR(0), + BOLD(1), + ITALIC(2); + + private Integer value; + + FontStyles(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static FontStyles fromValue(String text) { + for (FontStyles b : FontStyles.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final FontStyles enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public FontStyles read(final JsonReader jsonReader) throws IOException { + Integer value = jsonReader.nextInt(); + return FontStyles.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/HorizontalAlignment.java b/src/main/java/com/aspose/asposecloudpdf/model/HorizontalAlignment.java new file mode 100644 index 0000000..c24e5ef --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/HorizontalAlignment.java @@ -0,0 +1,83 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * + */ +@JsonAdapter(HorizontalAlignment.Adapter.class) +public enum HorizontalAlignment { + + NONE(0), + LEFT(1), + CENTER(2), + RIGHT(3); + + private Integer value; + + HorizontalAlignment(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static HorizontalAlignment fromValue(String text) { + for (HorizontalAlignment b : HorizontalAlignment.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final HorizontalAlignment enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public HorizontalAlignment read(final JsonReader jsonReader) throws IOException { + Integer value = jsonReader.nextInt(); + return HorizontalAlignment.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/HtmlDocumentType.java b/src/main/java/com/aspose/asposecloudpdf/model/HtmlDocumentType.java new file mode 100644 index 0000000..1ce613b --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/HtmlDocumentType.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Represents enumeration of the Html document types. + */ +@JsonAdapter(HtmlDocumentType.Adapter.class) +public enum HtmlDocumentType { + + XHTML("Xhtml"), + + HTML5("Html5"); + + private String value; + + HtmlDocumentType(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static HtmlDocumentType fromValue(String text) { + for (HtmlDocumentType b : HtmlDocumentType.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final HtmlDocumentType enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public HtmlDocumentType read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return HtmlDocumentType.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/HtmlMarkupGenerationModes.java b/src/main/java/com/aspose/asposecloudpdf/model/HtmlMarkupGenerationModes.java new file mode 100644 index 0000000..b2a1681 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/HtmlMarkupGenerationModes.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Sometimes specific reqirments to created HTML are present. This enum defines HTML preparing modes that can be used during conversion of PDF to HTML to match such specific requirments. + */ +@JsonAdapter(HtmlMarkupGenerationModes.Adapter.class) +public enum HtmlMarkupGenerationModes { + + WRITEALLHTML("WriteAllHtml"), + + WRITEONLYBODYCONTENT("WriteOnlyBodyContent"); + + private String value; + + HtmlMarkupGenerationModes(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static HtmlMarkupGenerationModes fromValue(String text) { + for (HtmlMarkupGenerationModes b : HtmlMarkupGenerationModes.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final HtmlMarkupGenerationModes enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public HtmlMarkupGenerationModes read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return HtmlMarkupGenerationModes.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/HttpStatusCode.java b/src/main/java/com/aspose/asposecloudpdf/model/HttpStatusCode.java new file mode 100644 index 0000000..0860e4d --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/HttpStatusCode.java @@ -0,0 +1,126 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * + */ +@JsonAdapter(HttpStatusCode.Adapter.class) +public enum HttpStatusCode { + + CONTINUE(100), + SWITCHING_PROTOCOLS(101), + OK(200), + CREATED(201), + ACCEPTED(202), + NON_AUTHORITATIVE_INFORMATION(203), + NO_CONTENT(204), + RESET_CONTENT(205), + PARTIAL_CONTENT(206), + MULTIPLE_CHOICES(300), + AMBIGUOUS(300), + MOVED_PERMANENTLY(301), + MOVED(301), + FOUND(302), + REDIRECT(302), + SEE_OTHER(303), + REDIRECT_METHOD(303), + NOT_MODIFIED(304), + USE_PROXY(305), + UNUSED(306), + TEMPORARY_REDIRECT(307), + REDIRECT_KEEP_VERB(307), + BAD_REQUEST(400), + UNAUTHORIZED(401), + PAYMENT_REQUIRED(402), + FORBIDDEN(403), + NOT_FOUND(404), + METHOD_NOT_ALLOWED(405), + NOT_ACCEPTABLE(406), + PROXY_AUTHENTICATION_REQUIRED(407), + REQUEST_TIMEOUT(408), + CONFLICT(409), + GONE(410), + LENGTH_REQUIRED(411), + PRECONDITION_FAILED(412), + REQUEST_ENTITY_TOO_LARGE(413), + REQUEST_URI_TOO_LONG(414), + UNSUPPORTED_MEDIA_TYPE(415), + REQUESTED_RANGE_NOT_SATISFIABLE(416), + EXPECTATION_FAILED(417), + UPGRADE_REQUIRED(426), + INTERNAL_SERVER_ERROR(500), + NOT_IMPLEMENTED(501), + BAD_GATEWAY(502), + SERVICE_UNAVAILABLE(503), + GATEWAY_TIMEOUT(504), + HTTP_VERSION_NOT_SUPPORTED(505); + + private Integer value; + + HttpStatusCode(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static HttpStatusCode fromValue(String text) { + for (HttpStatusCode b : HttpStatusCode.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final HttpStatusCode enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public HttpStatusCode read(final JsonReader jsonReader) throws IOException { + Integer value = jsonReader.nextInt(); + return HttpStatusCode.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Image.java b/src/main/java/com/aspose/asposecloudpdf/model/Image.java new file mode 100644 index 0000000..f21beae --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Image.java @@ -0,0 +1,130 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.List; + +/** + * Represents image DTO. + */ +@ApiModel(description = "Represents image DTO.") + +public class Image extends LinkElement { + @SerializedName("Width") + private Integer width = null; + + @SerializedName("Height") + private Integer height = null; + + public Image width(Integer width) { + this.width = width; + return this; + } + + /** + * Gets width of the image. + * @return width + **/ + @ApiModelProperty(value = "Gets width of the image.") + public Integer getWidth() { + return width; + } + + public void setWidth(Integer width) { + this.width = width; + } + + public Image height(Integer height) { + this.height = height; + return this; + } + + /** + * Gets height of the image. + * @return height + **/ + @ApiModelProperty(value = "Gets height of the image.") + public Integer getHeight() { + return height; + } + + public void setHeight(Integer height) { + this.height = height; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Image image = (Image) o; + return Objects.equals(this.width, image.width) && + Objects.equals(this.height, image.height) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(width, height, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Image {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" width: ").append(toIndentedString(width)).append("\n"); + sb.append(" height: ").append(toIndentedString(height)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/ImageResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/ImageResponse.java new file mode 100644 index 0000000..4fb3998 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/ImageResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.Image; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ImageResponse + */ + +public class ImageResponse extends SaaSposeResponse { + @SerializedName("Image") + private Image image = null; + + public ImageResponse image(Image image) { + this.image = image; + return this; + } + + /** + * Get image + * @return image + **/ + @ApiModelProperty(value = "") + public Image getImage() { + return image; + } + + public void setImage(Image image) { + this.image = image; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ImageResponse imageResponse = (ImageResponse) o; + return Objects.equals(this.image, imageResponse.image) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(image, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ImageResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" image: ").append(toIndentedString(image)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Images.java b/src/main/java/com/aspose/asposecloudpdf/model/Images.java new file mode 100644 index 0000000..c00da88 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Images.java @@ -0,0 +1,117 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Image; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * List of page images. + */ +@ApiModel(description = "List of page images.") + +public class Images extends LinkElement { + @SerializedName("List") + private List list = null; + + public Images list(List list) { + this.list = list; + return this; + } + + public Images addListItem(Image listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Images images = (Images) o; + return Objects.equals(this.list, images.list) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(list, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Images {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/ImagesListRequest.java b/src/main/java/com/aspose/asposecloudpdf/model/ImagesListRequest.java new file mode 100644 index 0000000..c30b9b1 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/ImagesListRequest.java @@ -0,0 +1,110 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Create document from images request. + */ +@ApiModel(description = "Create document from images request.") + +public class ImagesListRequest { + @SerializedName("ImagesList") + private List imagesList = new ArrayList(); + + public ImagesListRequest imagesList(List imagesList) { + this.imagesList = imagesList; + return this; + } + + public ImagesListRequest addImagesListItem(String imagesListItem) { + this.imagesList.add(imagesListItem); + return this; + } + + /** + * A list of paths for images. + * @return imagesList + **/ + @ApiModelProperty(required = true, value = "A list of paths for images.") + public List getImagesList() { + return imagesList; + } + + public void setImagesList(List imagesList) { + this.imagesList = imagesList; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ImagesListRequest imagesListRequest = (ImagesListRequest) o; + return Objects.equals(this.imagesList, imagesListRequest.imagesList); + } + + @Override + public int hashCode() { + return Objects.hash(imagesList); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ImagesListRequest {\n"); + + sb.append(" imagesList: ").append(toIndentedString(imagesList)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/ImagesResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/ImagesResponse.java new file mode 100644 index 0000000..c83c172 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/ImagesResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.Images; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ImagesResponse + */ + +public class ImagesResponse extends SaaSposeResponse { + @SerializedName("Images") + private Images images = null; + + public ImagesResponse images(Images images) { + this.images = images; + return this; + } + + /** + * Get images + * @return images + **/ + @ApiModelProperty(value = "") + public Images getImages() { + return images; + } + + public void setImages(Images images) { + this.images = images; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ImagesResponse imagesResponse = (ImagesResponse) o; + return Objects.equals(this.images, imagesResponse.images) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(images, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ImagesResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" images: ").append(toIndentedString(images)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/LettersPositioningMethods.java b/src/main/java/com/aspose/asposecloudpdf/model/LettersPositioningMethods.java new file mode 100644 index 0000000..ab0d80b --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/LettersPositioningMethods.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * It enumerates possible modes of positioning of letters in words in result HTML + */ +@JsonAdapter(LettersPositioningMethods.Adapter.class) +public enum LettersPositioningMethods { + + USEEMUNITSANDCOMPENSATIONOFROUNDINGERRORSINCSS("UseEmUnitsAndCompensationOfRoundingErrorsInCss"), + + USEPIXELUNITSINCSSLETTERSPACINGFORIE("UsePixelUnitsInCssLetterSpacingForIE"); + + private String value; + + LettersPositioningMethods(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static LettersPositioningMethods fromValue(String text) { + for (LettersPositioningMethods b : LettersPositioningMethods.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final LettersPositioningMethods enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public LettersPositioningMethods read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return LettersPositioningMethods.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/LineSpacing.java b/src/main/java/com/aspose/asposecloudpdf/model/LineSpacing.java new file mode 100644 index 0000000..e6f8377 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/LineSpacing.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * + */ +@JsonAdapter(LineSpacing.Adapter.class) +public enum LineSpacing { + + FONTSIZE("FontSize"), + + FULLSIZE("FullSize"); + + private String value; + + LineSpacing(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static LineSpacing fromValue(String text) { + for (LineSpacing b : LineSpacing.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final LineSpacing enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public LineSpacing read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return LineSpacing.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Link.java b/src/main/java/com/aspose/asposecloudpdf/model/Link.java new file mode 100644 index 0000000..df5379f --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Link.java @@ -0,0 +1,173 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Provides information for the object link. This is supposed to be an atom:link, therefore it should have all attributes specified here http://tools.ietf.org/html/rfc4287#section-4.2.7 + */ +@ApiModel(description = "Provides information for the object link. This is supposed to be an atom:link, therefore it should have all attributes specified here http://tools.ietf.org/html/rfc4287#section-4.2.7") + + +public class Link { + @SerializedName("Href") + private String href = null; + + @SerializedName("Rel") + private String rel = null; + + @SerializedName("Type") + private String type = null; + + @SerializedName("Title") + private String title = null; + + public Link href(String href) { + this.href = href; + return this; + } + + /** + * The \"href\" attribute contains the link's IRI. atom:link elements MUST have an href attribute, whose value MUST be a IRI reference + * @return href + **/ + @ApiModelProperty(value = "The \"href\" attribute contains the link's IRI. atom:link elements MUST have an href attribute, whose value MUST be a IRI reference") + public String getHref() { + return href; + } + + public void setHref(String href) { + this.href = href; + } + + public Link rel(String rel) { + this.rel = rel; + return this; + } + + /** + * atom:link elements MAY have a \"rel\" attribute that indicates the link relation type. If the \"rel\" attribute is not present, the link element MUST be interpreted as if the link relation type is \"alternate\". + * @return rel + **/ + @ApiModelProperty(value = "atom:link elements MAY have a \"rel\" attribute that indicates the link relation type. If the \"rel\" attribute is not present, the link element MUST be interpreted as if the link relation type is \"alternate\".") + public String getRel() { + return rel; + } + + public void setRel(String rel) { + this.rel = rel; + } + + public Link type(String type) { + this.type = type; + return this; + } + + /** + * On the link element, the \"type\" attribute's value is an advisory media type: it is a hint about the type of the representation that is expected to be returned when the value of the href attribute is dereferenced. Note that the type attribute does not override the actual media type returned with the representation. + * @return type + **/ + @ApiModelProperty(value = "On the link element, the \"type\" attribute's value is an advisory media type: it is a hint about the type of the representation that is expected to be returned when the value of the href attribute is dereferenced. Note that the type attribute does not override the actual media type returned with the representation.") + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Link title(String title) { + this.title = title; + return this; + } + + /** + * The \"title\" attribute conveys human-readable information about the link. The content of the \"title\" attribute is Language-Sensitive. + * @return title + **/ + @ApiModelProperty(value = "The \"title\" attribute conveys human-readable information about the link. The content of the \"title\" attribute is Language-Sensitive.") + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Link link = (Link) o; + return Objects.equals(this.href, link.href) && + Objects.equals(this.rel, link.rel) && + Objects.equals(this.type, link.type) && + Objects.equals(this.title, link.title); + } + + @Override + public int hashCode() { + return Objects.hash(href, rel, type, title); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Link {\n"); + + sb.append(" href: ").append(toIndentedString(href)).append("\n"); + sb.append(" rel: ").append(toIndentedString(rel)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" title: ").append(toIndentedString(title)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/LinkActionType.java b/src/main/java/com/aspose/asposecloudpdf/model/LinkActionType.java new file mode 100644 index 0000000..9414640 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/LinkActionType.java @@ -0,0 +1,85 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Represents list of link action types. + */ +@JsonAdapter(LinkActionType.Adapter.class) +public enum LinkActionType { + + GO_TO_ACTION(0), + GO_TO_URI_ACTION(1), + JAVASCRIPT_ACTION(2), + LAUNCH_ACTION(3), + NAMED_ACTION(4), + SUBMIT_FORM_ACTION(5); + + private Integer value; + + LinkActionType(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static LinkActionType fromValue(String text) { + for (LinkActionType b : LinkActionType.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final LinkActionType enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public LinkActionType read(final JsonReader jsonReader) throws IOException { + Integer value = jsonReader.nextInt(); + return LinkActionType.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotation.java b/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotation.java new file mode 100644 index 0000000..89270a3 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotation.java @@ -0,0 +1,179 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Color; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkActionType; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.aspose.asposecloudpdf.model.LinkHighlightingMode; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.List; + +/** + * Provides link to linkAnnotation. + */ +@ApiModel(description = "Provides link to linkAnnotation.") + +public class LinkAnnotation extends LinkElement { + @SerializedName("ActionType") + private LinkActionType actionType = null; + + @SerializedName("Action") + private String action = null; + + @SerializedName("Highlighting") + private LinkHighlightingMode highlighting = null; + + @SerializedName("Color") + private Color color = null; + + public LinkAnnotation actionType(LinkActionType actionType) { + this.actionType = actionType; + return this; + } + + /** + * Get actionType + * @return actionType + **/ + @ApiModelProperty(value = "") + public LinkActionType getActionType() { + return actionType; + } + + public void setActionType(LinkActionType actionType) { + this.actionType = actionType; + } + + public LinkAnnotation action(String action) { + this.action = action; + return this; + } + + /** + * Get action + * @return action + **/ + @ApiModelProperty(value = "") + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public LinkAnnotation highlighting(LinkHighlightingMode highlighting) { + this.highlighting = highlighting; + return this; + } + + /** + * Get highlighting + * @return highlighting + **/ + @ApiModelProperty(value = "") + public LinkHighlightingMode getHighlighting() { + return highlighting; + } + + public void setHighlighting(LinkHighlightingMode highlighting) { + this.highlighting = highlighting; + } + + public LinkAnnotation color(Color color) { + this.color = color; + return this; + } + + /** + * Get color + * @return color + **/ + @ApiModelProperty(value = "") + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + LinkAnnotation linkAnnotation = (LinkAnnotation) o; + return Objects.equals(this.actionType, linkAnnotation.actionType) && + Objects.equals(this.action, linkAnnotation.action) && + Objects.equals(this.highlighting, linkAnnotation.highlighting) && + Objects.equals(this.color, linkAnnotation.color) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(actionType, action, highlighting, color, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class LinkAnnotation {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" actionType: ").append(toIndentedString(actionType)).append("\n"); + sb.append(" action: ").append(toIndentedString(action)).append("\n"); + sb.append(" highlighting: ").append(toIndentedString(highlighting)).append("\n"); + sb.append(" color: ").append(toIndentedString(color)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotationResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotationResponse.java new file mode 100644 index 0000000..3fc16e0 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotationResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.LinkAnnotation; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * LinkAnnotationResponse + */ + +public class LinkAnnotationResponse extends SaaSposeResponse { + @SerializedName("Link") + private LinkAnnotation link = null; + + public LinkAnnotationResponse link(LinkAnnotation link) { + this.link = link; + return this; + } + + /** + * Get link + * @return link + **/ + @ApiModelProperty(value = "") + public LinkAnnotation getLink() { + return link; + } + + public void setLink(LinkAnnotation link) { + this.link = link; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + LinkAnnotationResponse linkAnnotationResponse = (LinkAnnotationResponse) o; + return Objects.equals(this.link, linkAnnotationResponse.link) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(link, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class LinkAnnotationResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" link: ").append(toIndentedString(link)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotations.java b/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotations.java new file mode 100644 index 0000000..576b7c8 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotations.java @@ -0,0 +1,116 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * List of LinkAnnotations. + */ +@ApiModel(description = "List of LinkAnnotations.") + +public class LinkAnnotations extends LinkElement { + @SerializedName("List") + private List list = null; + + public LinkAnnotations list(List list) { + this.list = list; + return this; + } + + public LinkAnnotations addListItem(LinkElement listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + LinkAnnotations linkAnnotations = (LinkAnnotations) o; + return Objects.equals(this.list, linkAnnotations.list) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(list, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class LinkAnnotations {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotationsResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotationsResponse.java new file mode 100644 index 0000000..cbfc857 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/LinkAnnotationsResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.LinkAnnotations; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * LinkAnnotationsResponse + */ + +public class LinkAnnotationsResponse extends SaaSposeResponse { + @SerializedName("Links") + private LinkAnnotations links = null; + + public LinkAnnotationsResponse links(LinkAnnotations links) { + this.links = links; + return this; + } + + /** + * Get links + * @return links + **/ + @ApiModelProperty(value = "") + public LinkAnnotations getLinks() { + return links; + } + + public void setLinks(LinkAnnotations links) { + this.links = links; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + LinkAnnotationsResponse linkAnnotationsResponse = (LinkAnnotationsResponse) o; + return Objects.equals(this.links, linkAnnotationsResponse.links) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(links, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class LinkAnnotationsResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" links: ").append(toIndentedString(links)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/LinkElement.java b/src/main/java/com/aspose/asposecloudpdf/model/LinkElement.java new file mode 100644 index 0000000..e348da5 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/LinkElement.java @@ -0,0 +1,115 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Represents base DTO object. + */ +@ApiModel(description = "Represents base DTO object.") + + +public class LinkElement { + @SerializedName("Links") + private List links = null; + + public LinkElement links(List links) { + this.links = links; + return this; + } + + public LinkElement addLinksItem(Link linksItem) { + if (this.links == null) { + this.links = new ArrayList(); + } + this.links.add(linksItem); + return this; + } + + /** + * Link to the document. + * @return links + **/ + @ApiModelProperty(value = "Link to the document.") + public List getLinks() { + return links; + } + + public void setLinks(List links) { + this.links = links; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + LinkElement linkElement = (LinkElement) o; + return Objects.equals(this.links, linkElement.links); + } + + @Override + public int hashCode() { + return Objects.hash(links); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class LinkElement {\n"); + + sb.append(" links: ").append(toIndentedString(links)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/LinkHighlightingMode.java b/src/main/java/com/aspose/asposecloudpdf/model/LinkHighlightingMode.java new file mode 100644 index 0000000..edd9782 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/LinkHighlightingMode.java @@ -0,0 +1,84 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Enumerates the annotation�s highlighting mode, the visual effect to be used when the mouse button is pressed or held down inside its active area. + */ +@JsonAdapter(LinkHighlightingMode.Adapter.class) +public enum LinkHighlightingMode { + + NONE(0), + INVERT(1), + OUTLINE(2), + PUSH(3), + TOGGLE(4); + + private Integer value; + + LinkHighlightingMode(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static LinkHighlightingMode fromValue(String text) { + for (LinkHighlightingMode b : LinkHighlightingMode.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final LinkHighlightingMode enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public LinkHighlightingMode read(final JsonReader jsonReader) throws IOException { + Integer value = jsonReader.nextInt(); + return LinkHighlightingMode.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/MergeDocuments.java b/src/main/java/com/aspose/asposecloudpdf/model/MergeDocuments.java new file mode 100644 index 0000000..0559998 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/MergeDocuments.java @@ -0,0 +1,113 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Documents for merging. + */ +@ApiModel(description = "Documents for merging.") + +public class MergeDocuments { + @SerializedName("List") + private List list = null; + + public MergeDocuments list(List list) { + this.list = list; + return this; + } + + public MergeDocuments addListItem(String listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * List of documents for merging. + * @return list + **/ + @ApiModelProperty(value = "List of documents for merging.") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + MergeDocuments mergeDocuments = (MergeDocuments) o; + return Objects.equals(this.list, mergeDocuments.list); + } + + @Override + public int hashCode() { + return Objects.hash(list); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class MergeDocuments {\n"); + + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/OptimizeOptions.java b/src/main/java/com/aspose/asposecloudpdf/model/OptimizeOptions.java new file mode 100644 index 0000000..1487b0a --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/OptimizeOptions.java @@ -0,0 +1,241 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Represents Pdf optimize options. + */ +@ApiModel(description = "Represents Pdf optimize options.") + +public class OptimizeOptions { + @SerializedName("AllowReusePageContent") + private Boolean allowReusePageContent = null; + + @SerializedName("CompressImages") + private Boolean compressImages = null; + + @SerializedName("ImageQuality") + private Integer imageQuality = null; + + @SerializedName("LinkDuplcateStreams") + private Boolean linkDuplcateStreams = null; + + @SerializedName("RemoveUnusedObjects") + private Boolean removeUnusedObjects = null; + + @SerializedName("RemoveUnusedStreams") + private Boolean removeUnusedStreams = null; + + @SerializedName("UnembedFonts") + private Boolean unembedFonts = null; + + public OptimizeOptions allowReusePageContent(Boolean allowReusePageContent) { + this.allowReusePageContent = allowReusePageContent; + return this; + } + + /** + * If true page contents will be reused when document is optimized for equal pages. + * @return allowReusePageContent + **/ + @ApiModelProperty(required = true, value = "If true page contents will be reused when document is optimized for equal pages.") + public Boolean isAllowReusePageContent() { + return allowReusePageContent; + } + + public void setAllowReusePageContent(Boolean allowReusePageContent) { + this.allowReusePageContent = allowReusePageContent; + } + + public OptimizeOptions compressImages(Boolean compressImages) { + this.compressImages = compressImages; + return this; + } + + /** + * If this flag is set to true images will be compressed in the document. compression level is specfied with ImageQuality property. + * @return compressImages + **/ + @ApiModelProperty(required = true, value = "If this flag is set to true images will be compressed in the document. compression level is specfied with ImageQuality property.") + public Boolean isCompressImages() { + return compressImages; + } + + public void setCompressImages(Boolean compressImages) { + this.compressImages = compressImages; + } + + public OptimizeOptions imageQuality(Integer imageQuality) { + this.imageQuality = imageQuality; + return this; + } + + /** + * Specifie slevel of image compression when CompressIamges flag is used. + * @return imageQuality + **/ + @ApiModelProperty(required = true, value = "Specifie slevel of image compression when CompressIamges flag is used.") + public Integer getImageQuality() { + return imageQuality; + } + + public void setImageQuality(Integer imageQuality) { + this.imageQuality = imageQuality; + } + + public OptimizeOptions linkDuplcateStreams(Boolean linkDuplcateStreams) { + this.linkDuplcateStreams = linkDuplcateStreams; + return this; + } + + /** + * If this flag is set to true, Resource streams will be analyzed. If duplicate streams are found (i.e. if stream contents is equal), then thes streams will be stored as one object. This allows to decrease document size in some cases (for example, when same document was concatenedted multiple times). + * @return linkDuplcateStreams + **/ + @ApiModelProperty(required = true, value = "If this flag is set to true, Resource streams will be analyzed. If duplicate streams are found (i.e. if stream contents is equal), then thes streams will be stored as one object. This allows to decrease document size in some cases (for example, when same document was concatenedted multiple times).") + public Boolean isLinkDuplcateStreams() { + return linkDuplcateStreams; + } + + public void setLinkDuplcateStreams(Boolean linkDuplcateStreams) { + this.linkDuplcateStreams = linkDuplcateStreams; + } + + public OptimizeOptions removeUnusedObjects(Boolean removeUnusedObjects) { + this.removeUnusedObjects = removeUnusedObjects; + return this; + } + + /** + * If this flag is set to true, all document objects will be checked and unused objects (i.e. objects which does not have any reference) are removed from document. + * @return removeUnusedObjects + **/ + @ApiModelProperty(required = true, value = "If this flag is set to true, all document objects will be checked and unused objects (i.e. objects which does not have any reference) are removed from document.") + public Boolean isRemoveUnusedObjects() { + return removeUnusedObjects; + } + + public void setRemoveUnusedObjects(Boolean removeUnusedObjects) { + this.removeUnusedObjects = removeUnusedObjects; + } + + public OptimizeOptions removeUnusedStreams(Boolean removeUnusedStreams) { + this.removeUnusedStreams = removeUnusedStreams; + return this; + } + + /** + * If this flag set to true, every resource is checked on it's usage. If resource is never used, then resources is removed. This may decrease document size for example when pages were extracted from document. + * @return removeUnusedStreams + **/ + @ApiModelProperty(required = true, value = "If this flag set to true, every resource is checked on it's usage. If resource is never used, then resources is removed. This may decrease document size for example when pages were extracted from document. ") + public Boolean isRemoveUnusedStreams() { + return removeUnusedStreams; + } + + public void setRemoveUnusedStreams(Boolean removeUnusedStreams) { + this.removeUnusedStreams = removeUnusedStreams; + } + + public OptimizeOptions unembedFonts(Boolean unembedFonts) { + this.unembedFonts = unembedFonts; + return this; + } + + /** + * Make fonts not embedded if set to true. + * @return unembedFonts + **/ + @ApiModelProperty(required = true, value = "Make fonts not embedded if set to true. ") + public Boolean isUnembedFonts() { + return unembedFonts; + } + + public void setUnembedFonts(Boolean unembedFonts) { + this.unembedFonts = unembedFonts; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + OptimizeOptions optimizeOptions = (OptimizeOptions) o; + return Objects.equals(this.allowReusePageContent, optimizeOptions.allowReusePageContent) && + Objects.equals(this.compressImages, optimizeOptions.compressImages) && + Objects.equals(this.imageQuality, optimizeOptions.imageQuality) && + Objects.equals(this.linkDuplcateStreams, optimizeOptions.linkDuplcateStreams) && + Objects.equals(this.removeUnusedObjects, optimizeOptions.removeUnusedObjects) && + Objects.equals(this.removeUnusedStreams, optimizeOptions.removeUnusedStreams) && + Objects.equals(this.unembedFonts, optimizeOptions.unembedFonts); + } + + @Override + public int hashCode() { + return Objects.hash(allowReusePageContent, compressImages, imageQuality, linkDuplcateStreams, removeUnusedObjects, removeUnusedStreams, unembedFonts); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class OptimizeOptions {\n"); + + sb.append(" allowReusePageContent: ").append(toIndentedString(allowReusePageContent)).append("\n"); + sb.append(" compressImages: ").append(toIndentedString(compressImages)).append("\n"); + sb.append(" imageQuality: ").append(toIndentedString(imageQuality)).append("\n"); + sb.append(" linkDuplcateStreams: ").append(toIndentedString(linkDuplcateStreams)).append("\n"); + sb.append(" removeUnusedObjects: ").append(toIndentedString(removeUnusedObjects)).append("\n"); + sb.append(" removeUnusedStreams: ").append(toIndentedString(removeUnusedStreams)).append("\n"); + sb.append(" unembedFonts: ").append(toIndentedString(unembedFonts)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Page.java b/src/main/java/com/aspose/asposecloudpdf/model/Page.java new file mode 100644 index 0000000..ff39751 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Page.java @@ -0,0 +1,155 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Images; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.aspose.asposecloudpdf.model.Rectangle; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.List; + +/** + * Provides link to page. + */ +@ApiModel(description = "Provides link to page.") + +public class Page extends LinkElement { + @SerializedName("Id") + private Integer id = null; + + @SerializedName("Images") + private Images images = null; + + @SerializedName("Rectangle") + private Rectangle rectangle = null; + + public Page id(Integer id) { + this.id = id; + return this; + } + + /** + * Page's id. + * @return id + **/ + @ApiModelProperty(value = "Page's id.") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Page images(Images images) { + this.images = images; + return this; + } + + /** + * Get images + * @return images + **/ + @ApiModelProperty(value = "") + public Images getImages() { + return images; + } + + public void setImages(Images images) { + this.images = images; + } + + public Page rectangle(Rectangle rectangle) { + this.rectangle = rectangle; + return this; + } + + /** + * Get rectangle + * @return rectangle + **/ + @ApiModelProperty(value = "") + public Rectangle getRectangle() { + return rectangle; + } + + public void setRectangle(Rectangle rectangle) { + this.rectangle = rectangle; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Page page = (Page) o; + return Objects.equals(this.id, page.id) && + Objects.equals(this.images, page.images) && + Objects.equals(this.rectangle, page.rectangle) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(id, images, rectangle, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Page {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" images: ").append(toIndentedString(images)).append("\n"); + sb.append(" rectangle: ").append(toIndentedString(rectangle)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/PageTextReplaceResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/PageTextReplaceResponse.java new file mode 100644 index 0000000..21cfd29 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/PageTextReplaceResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.Page; +import com.aspose.asposecloudpdf.model.TextReplaceResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * PageTextReplaceResponse + */ + +public class PageTextReplaceResponse extends TextReplaceResponse { + @SerializedName("Page") + private Page page = null; + + public PageTextReplaceResponse page(Page page) { + this.page = page; + return this; + } + + /** + * Get page + * @return page + **/ + @ApiModelProperty(value = "") + public Page getPage() { + return page; + } + + public void setPage(Page page) { + this.page = page; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + PageTextReplaceResponse pageTextReplaceResponse = (PageTextReplaceResponse) o; + return Objects.equals(this.page, pageTextReplaceResponse.page) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(page, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class PageTextReplaceResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" page: ").append(toIndentedString(page)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/PageWordCount.java b/src/main/java/com/aspose/asposecloudpdf/model/PageWordCount.java new file mode 100644 index 0000000..6e8a451 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/PageWordCount.java @@ -0,0 +1,126 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Page words count. + */ +@ApiModel(description = "Page words count.") + +public class PageWordCount { + @SerializedName("PageNumber") + private Integer pageNumber = null; + + @SerializedName("Count") + private Integer count = null; + + public PageWordCount pageNumber(Integer pageNumber) { + this.pageNumber = pageNumber; + return this; + } + + /** + * Page number. + * @return pageNumber + **/ + @ApiModelProperty(required = true, value = "Page number.") + public Integer getPageNumber() { + return pageNumber; + } + + public void setPageNumber(Integer pageNumber) { + this.pageNumber = pageNumber; + } + + public PageWordCount count(Integer count) { + this.count = count; + return this; + } + + /** + * Number of words at the page. + * @return count + **/ + @ApiModelProperty(required = true, value = "Number of words at the page.") + public Integer getCount() { + return count; + } + + public void setCount(Integer count) { + this.count = count; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + PageWordCount pageWordCount = (PageWordCount) o; + return Objects.equals(this.pageNumber, pageWordCount.pageNumber) && + Objects.equals(this.count, pageWordCount.count); + } + + @Override + public int hashCode() { + return Objects.hash(pageNumber, count); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class PageWordCount {\n"); + + sb.append(" pageNumber: ").append(toIndentedString(pageNumber)).append("\n"); + sb.append(" count: ").append(toIndentedString(count)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Pages.java b/src/main/java/com/aspose/asposecloudpdf/model/Pages.java new file mode 100644 index 0000000..7518d58 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Pages.java @@ -0,0 +1,117 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.aspose.asposecloudpdf.model.Page; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * List of pages. + */ +@ApiModel(description = "List of pages.") + +public class Pages extends LinkElement { + @SerializedName("List") + private List list = null; + + public Pages list(List list) { + this.list = list; + return this; + } + + public Pages addListItem(Page listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Pages pages = (Pages) o; + return Objects.equals(this.list, pages.list) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(list, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Pages {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Paragraph.java b/src/main/java/com/aspose/asposecloudpdf/model/Paragraph.java new file mode 100644 index 0000000..e2fd71c --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Paragraph.java @@ -0,0 +1,369 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.LineSpacing; +import com.aspose.asposecloudpdf.model.Rectangle; +import com.aspose.asposecloudpdf.model.TextHorizontalAlignment; +import com.aspose.asposecloudpdf.model.TextLine; +import com.aspose.asposecloudpdf.model.VerticalAlignment; +import com.aspose.asposecloudpdf.model.WrapMode; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Paragraph DTO for add text functionality. + */ +@ApiModel(description = "Paragraph DTO for add text functionality.") + +public class Paragraph { + @SerializedName("LineSpacing") + private LineSpacing lineSpacing = null; + + @SerializedName("WrapMode") + private WrapMode wrapMode = null; + + @SerializedName("HorizontalAlignment") + private TextHorizontalAlignment horizontalAlignment = null; + + @SerializedName("LeftMargin") + private Double leftMargin = null; + + @SerializedName("RightMargin") + private Double rightMargin = null; + + @SerializedName("TopMargin") + private Double topMargin = null; + + @SerializedName("BottomMargin") + private Double bottomMargin = null; + + @SerializedName("Rectangle") + private Rectangle rectangle = null; + + @SerializedName("Rotation") + private Double rotation = null; + + @SerializedName("SubsequentLinesIndent") + private Double subsequentLinesIndent = null; + + @SerializedName("VerticalAlignment") + private VerticalAlignment verticalAlignment = null; + + @SerializedName("Lines") + private List lines = new ArrayList(); + + public Paragraph lineSpacing(LineSpacing lineSpacing) { + this.lineSpacing = lineSpacing; + return this; + } + + /** + * Get lineSpacing + * @return lineSpacing + **/ + @ApiModelProperty(value = "") + public LineSpacing getLineSpacing() { + return lineSpacing; + } + + public void setLineSpacing(LineSpacing lineSpacing) { + this.lineSpacing = lineSpacing; + } + + public Paragraph wrapMode(WrapMode wrapMode) { + this.wrapMode = wrapMode; + return this; + } + + /** + * Get wrapMode + * @return wrapMode + **/ + @ApiModelProperty(value = "") + public WrapMode getWrapMode() { + return wrapMode; + } + + public void setWrapMode(WrapMode wrapMode) { + this.wrapMode = wrapMode; + } + + public Paragraph horizontalAlignment(TextHorizontalAlignment horizontalAlignment) { + this.horizontalAlignment = horizontalAlignment; + return this; + } + + /** + * Get horizontalAlignment + * @return horizontalAlignment + **/ + @ApiModelProperty(value = "") + public TextHorizontalAlignment getHorizontalAlignment() { + return horizontalAlignment; + } + + public void setHorizontalAlignment(TextHorizontalAlignment horizontalAlignment) { + this.horizontalAlignment = horizontalAlignment; + } + + public Paragraph leftMargin(Double leftMargin) { + this.leftMargin = leftMargin; + return this; + } + + /** + * Get leftMargin + * @return leftMargin + **/ + @ApiModelProperty(value = "") + public Double getLeftMargin() { + return leftMargin; + } + + public void setLeftMargin(Double leftMargin) { + this.leftMargin = leftMargin; + } + + public Paragraph rightMargin(Double rightMargin) { + this.rightMargin = rightMargin; + return this; + } + + /** + * Get rightMargin + * @return rightMargin + **/ + @ApiModelProperty(value = "") + public Double getRightMargin() { + return rightMargin; + } + + public void setRightMargin(Double rightMargin) { + this.rightMargin = rightMargin; + } + + public Paragraph topMargin(Double topMargin) { + this.topMargin = topMargin; + return this; + } + + /** + * Get topMargin + * @return topMargin + **/ + @ApiModelProperty(value = "") + public Double getTopMargin() { + return topMargin; + } + + public void setTopMargin(Double topMargin) { + this.topMargin = topMargin; + } + + public Paragraph bottomMargin(Double bottomMargin) { + this.bottomMargin = bottomMargin; + return this; + } + + /** + * Get bottomMargin + * @return bottomMargin + **/ + @ApiModelProperty(value = "") + public Double getBottomMargin() { + return bottomMargin; + } + + public void setBottomMargin(Double bottomMargin) { + this.bottomMargin = bottomMargin; + } + + public Paragraph rectangle(Rectangle rectangle) { + this.rectangle = rectangle; + return this; + } + + /** + * Get rectangle + * @return rectangle + **/ + @ApiModelProperty(value = "") + public Rectangle getRectangle() { + return rectangle; + } + + public void setRectangle(Rectangle rectangle) { + this.rectangle = rectangle; + } + + public Paragraph rotation(Double rotation) { + this.rotation = rotation; + return this; + } + + /** + * Get rotation + * @return rotation + **/ + @ApiModelProperty(value = "") + public Double getRotation() { + return rotation; + } + + public void setRotation(Double rotation) { + this.rotation = rotation; + } + + public Paragraph subsequentLinesIndent(Double subsequentLinesIndent) { + this.subsequentLinesIndent = subsequentLinesIndent; + return this; + } + + /** + * Get subsequentLinesIndent + * @return subsequentLinesIndent + **/ + @ApiModelProperty(value = "") + public Double getSubsequentLinesIndent() { + return subsequentLinesIndent; + } + + public void setSubsequentLinesIndent(Double subsequentLinesIndent) { + this.subsequentLinesIndent = subsequentLinesIndent; + } + + public Paragraph verticalAlignment(VerticalAlignment verticalAlignment) { + this.verticalAlignment = verticalAlignment; + return this; + } + + /** + * Get verticalAlignment + * @return verticalAlignment + **/ + @ApiModelProperty(value = "") + public VerticalAlignment getVerticalAlignment() { + return verticalAlignment; + } + + public void setVerticalAlignment(VerticalAlignment verticalAlignment) { + this.verticalAlignment = verticalAlignment; + } + + public Paragraph lines(List lines) { + this.lines = lines; + return this; + } + + public Paragraph addLinesItem(TextLine linesItem) { + this.lines.add(linesItem); + return this; + } + + /** + * Get lines + * @return lines + **/ + @ApiModelProperty(required = true, value = "") + public List getLines() { + return lines; + } + + public void setLines(List lines) { + this.lines = lines; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Paragraph paragraph = (Paragraph) o; + return Objects.equals(this.lineSpacing, paragraph.lineSpacing) && + Objects.equals(this.wrapMode, paragraph.wrapMode) && + Objects.equals(this.horizontalAlignment, paragraph.horizontalAlignment) && + Objects.equals(this.leftMargin, paragraph.leftMargin) && + Objects.equals(this.rightMargin, paragraph.rightMargin) && + Objects.equals(this.topMargin, paragraph.topMargin) && + Objects.equals(this.bottomMargin, paragraph.bottomMargin) && + Objects.equals(this.rectangle, paragraph.rectangle) && + Objects.equals(this.rotation, paragraph.rotation) && + Objects.equals(this.subsequentLinesIndent, paragraph.subsequentLinesIndent) && + Objects.equals(this.verticalAlignment, paragraph.verticalAlignment) && + Objects.equals(this.lines, paragraph.lines); + } + + @Override + public int hashCode() { + return Objects.hash(lineSpacing, wrapMode, horizontalAlignment, leftMargin, rightMargin, topMargin, bottomMargin, rectangle, rotation, subsequentLinesIndent, verticalAlignment, lines); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Paragraph {\n"); + + sb.append(" lineSpacing: ").append(toIndentedString(lineSpacing)).append("\n"); + sb.append(" wrapMode: ").append(toIndentedString(wrapMode)).append("\n"); + sb.append(" horizontalAlignment: ").append(toIndentedString(horizontalAlignment)).append("\n"); + sb.append(" leftMargin: ").append(toIndentedString(leftMargin)).append("\n"); + sb.append(" rightMargin: ").append(toIndentedString(rightMargin)).append("\n"); + sb.append(" topMargin: ").append(toIndentedString(topMargin)).append("\n"); + sb.append(" bottomMargin: ").append(toIndentedString(bottomMargin)).append("\n"); + sb.append(" rectangle: ").append(toIndentedString(rectangle)).append("\n"); + sb.append(" rotation: ").append(toIndentedString(rotation)).append("\n"); + sb.append(" subsequentLinesIndent: ").append(toIndentedString(subsequentLinesIndent)).append("\n"); + sb.append(" verticalAlignment: ").append(toIndentedString(verticalAlignment)).append("\n"); + sb.append(" lines: ").append(toIndentedString(lines)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/PartsEmbeddingModes.java b/src/main/java/com/aspose/asposecloudpdf/model/PartsEmbeddingModes.java new file mode 100644 index 0000000..38f262d --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/PartsEmbeddingModes.java @@ -0,0 +1,84 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * This enum enumerates possible modes of embedding of files referenced in HTML It allows to control whether referenced files (HTML, Fonts,Images, CSSes) will be embedded into main HTML file or will be generated as apart binary entities + */ +@JsonAdapter(PartsEmbeddingModes.Adapter.class) +public enum PartsEmbeddingModes { + + EMBEDALLINTOHTML("EmbedAllIntoHtml"), + + EMBEDCSSONLY("EmbedCssOnly"), + + NOEMBEDDING("NoEmbedding"); + + private String value; + + PartsEmbeddingModes(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static PartsEmbeddingModes fromValue(String text) { + for (PartsEmbeddingModes b : PartsEmbeddingModes.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final PartsEmbeddingModes enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public PartsEmbeddingModes read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return PartsEmbeddingModes.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/PdfAType.java b/src/main/java/com/aspose/asposecloudpdf/model/PdfAType.java new file mode 100644 index 0000000..1514df6 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/PdfAType.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Allows to specify PdfA file format. + */ +@JsonAdapter(PdfAType.Adapter.class) +public enum PdfAType { + + PDFA1A("PDFA1A"), + + PDFA1B("PDFA1B"); + + private String value; + + PdfAType(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static PdfAType fromValue(String text) { + for (PdfAType b : PdfAType.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final PdfAType enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public PdfAType read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return PdfAType.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/RasterImagesSavingModes.java b/src/main/java/com/aspose/asposecloudpdf/model/RasterImagesSavingModes.java new file mode 100644 index 0000000..078800d --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/RasterImagesSavingModes.java @@ -0,0 +1,84 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Converted PDF can contain raster images(.png, *.jpeg etc.) This enum defines methods of how raster images can be handled during conversion of PDF to HTML + */ +@JsonAdapter(RasterImagesSavingModes.Adapter.class) +public enum RasterImagesSavingModes { + + ASPNGIMAGESEMBEDDEDINTOSVG("AsPngImagesEmbeddedIntoSvg"), + + ASEXTERNALPNGFILESREFERENCEDVIASVG("AsExternalPngFilesReferencedViaSvg"), + + ASEMBEDDEDPARTSOFPNGPAGEBACKGROUND("AsEmbeddedPartsOfPngPageBackground"); + + private String value; + + RasterImagesSavingModes(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static RasterImagesSavingModes fromValue(String text) { + for (RasterImagesSavingModes b : RasterImagesSavingModes.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final RasterImagesSavingModes enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public RasterImagesSavingModes read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return RasterImagesSavingModes.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Rectangle.java b/src/main/java/com/aspose/asposecloudpdf/model/Rectangle.java new file mode 100644 index 0000000..7856f67 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Rectangle.java @@ -0,0 +1,172 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Represents rectangle DTO. + */ +@ApiModel(description = "Represents rectangle DTO.") + +public class Rectangle { + @SerializedName("X") + private Integer X = null; + + @SerializedName("Y") + private Integer Y = null; + + @SerializedName("Width") + private Integer width = null; + + @SerializedName("Height") + private Integer height = null; + + public Rectangle X(Integer X) { + this.X = X; + return this; + } + + /** + * Get X + * @return X + **/ + @ApiModelProperty(required = true, value = "") + public Integer getX() { + return X; + } + + public void setX(Integer X) { + this.X = X; + } + + public Rectangle Y(Integer Y) { + this.Y = Y; + return this; + } + + /** + * Get Y + * @return Y + **/ + @ApiModelProperty(required = true, value = "") + public Integer getY() { + return Y; + } + + public void setY(Integer Y) { + this.Y = Y; + } + + public Rectangle width(Integer width) { + this.width = width; + return this; + } + + /** + * Get width + * @return width + **/ + @ApiModelProperty(required = true, value = "") + public Integer getWidth() { + return width; + } + + public void setWidth(Integer width) { + this.width = width; + } + + public Rectangle height(Integer height) { + this.height = height; + return this; + } + + /** + * Get height + * @return height + **/ + @ApiModelProperty(required = true, value = "") + public Integer getHeight() { + return height; + } + + public void setHeight(Integer height) { + this.height = height; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Rectangle rectangle = (Rectangle) o; + return Objects.equals(this.X, rectangle.X) && + Objects.equals(this.Y, rectangle.Y) && + Objects.equals(this.width, rectangle.width) && + Objects.equals(this.height, rectangle.height); + } + + @Override + public int hashCode() { + return Objects.hash(X, Y, width, height); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Rectangle {\n"); + + sb.append(" X: ").append(toIndentedString(X)).append("\n"); + sb.append(" Y: ").append(toIndentedString(Y)).append("\n"); + sb.append(" width: ").append(toIndentedString(width)).append("\n"); + sb.append(" height: ").append(toIndentedString(height)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Rotation.java b/src/main/java/com/aspose/asposecloudpdf/model/Rotation.java new file mode 100644 index 0000000..3412258 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Rotation.java @@ -0,0 +1,83 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Enumeration of possible rotation values. + */ +@JsonAdapter(Rotation.Adapter.class) +public enum Rotation { + + NONE(0), + ON_90(1), + ON_180(2), + ON_270(3); + + private Integer value; + + Rotation(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static Rotation fromValue(String text) { + for (Rotation b : Rotation.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final Rotation enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public Rotation read(final JsonReader jsonReader) throws IOException { + Integer value = jsonReader.nextInt(); + return Rotation.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/SaaSposeResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/SaaSposeResponse.java new file mode 100644 index 0000000..de72fbb --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/SaaSposeResponse.java @@ -0,0 +1,128 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Base class for all responses. + */ +@ApiModel(description = "Base class for all responses.") + + +public class SaaSposeResponse { + @SerializedName("Code") + private HttpStatusCode code = null; + + @SerializedName("Status") + private String status = null; + + public SaaSposeResponse code(HttpStatusCode code) { + this.code = code; + return this; + } + + /** + * Response status code. + * @return code + **/ + @ApiModelProperty(required = true, value = "Response status code.") + public HttpStatusCode getCode() { + return code; + } + + public void setCode(HttpStatusCode code) { + this.code = code; + } + + public SaaSposeResponse status(String status) { + this.status = status; + return this; + } + + /** + * Response status. + * @return status + **/ + @ApiModelProperty(value = "Response status.") + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SaaSposeResponse saaSposeResponse = (SaaSposeResponse) o; + return Objects.equals(this.code, saaSposeResponse.code) && + Objects.equals(this.status, saaSposeResponse.status); + } + + @Override + public int hashCode() { + return Objects.hash(code, status); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SaaSposeResponse {\n"); + + sb.append(" code: ").append(toIndentedString(code)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Segment.java b/src/main/java/com/aspose/asposecloudpdf/model/Segment.java new file mode 100644 index 0000000..7258f00 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Segment.java @@ -0,0 +1,126 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.TextState; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Segment + */ + +public class Segment { + @SerializedName("Value") + private String value = null; + + @SerializedName("TextState") + private TextState textState = null; + + public Segment value(String value) { + this.value = value; + return this; + } + + /** + * Get value + * @return value + **/ + @ApiModelProperty(value = "") + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public Segment textState(TextState textState) { + this.textState = textState; + return this; + } + + /** + * Get textState + * @return textState + **/ + @ApiModelProperty(value = "") + public TextState getTextState() { + return textState; + } + + public void setTextState(TextState textState) { + this.textState = textState; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Segment segment = (Segment) o; + return Objects.equals(this.value, segment.value) && + Objects.equals(this.textState, segment.textState); + } + + @Override + public int hashCode() { + return Objects.hash(value, textState); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Segment {\n"); + + sb.append(" value: ").append(toIndentedString(value)).append("\n"); + sb.append(" textState: ").append(toIndentedString(textState)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/ShapeType.java b/src/main/java/com/aspose/asposecloudpdf/model/ShapeType.java new file mode 100644 index 0000000..89c18aa --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/ShapeType.java @@ -0,0 +1,84 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * This enum represents shape type for the extracted images. + */ +@JsonAdapter(ShapeType.Adapter.class) +public enum ShapeType { + + NONE("None"), + + LANDSCAPE("Landscape"), + + PORTRAIT("Portrait"); + + private String value; + + ShapeType(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static ShapeType fromValue(String text) { + for (ShapeType b : ShapeType.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final ShapeType enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public ShapeType read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return ShapeType.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Signature.java b/src/main/java/com/aspose/asposecloudpdf/model/Signature.java new file mode 100644 index 0000000..c655cfb --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Signature.java @@ -0,0 +1,380 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Rectangle; +import com.aspose.asposecloudpdf.model.SignatureType; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Signature + */ + +public class Signature { + @SerializedName("SignaturePath") + private String signaturePath = null; + + @SerializedName("SignatureType") + private SignatureType signatureType = null; + + @SerializedName("Password") + private String password = null; + + @SerializedName("Appearance") + private String appearance = null; + + @SerializedName("Reason") + private String reason = null; + + @SerializedName("Contact") + private String contact = null; + + @SerializedName("Location") + private String location = null; + + @SerializedName("Visible") + private Boolean visible = null; + + @SerializedName("Rectangle") + private Rectangle rectangle = null; + + @SerializedName("FormFieldName") + private String formFieldName = null; + + @SerializedName("Authority") + private String authority = null; + + @SerializedName("Date") + private String date = null; + + @SerializedName("ShowProperties") + private Boolean showProperties = null; + + public Signature signaturePath(String signaturePath) { + this.signaturePath = signaturePath; + return this; + } + + /** + * Gets or sets the signature path. + * @return signaturePath + **/ + @ApiModelProperty(value = "Gets or sets the signature path.") + public String getSignaturePath() { + return signaturePath; + } + + public void setSignaturePath(String signaturePath) { + this.signaturePath = signaturePath; + } + + public Signature signatureType(SignatureType signatureType) { + this.signatureType = signatureType; + return this; + } + + /** + * Gets or sets the type of the signature. + * @return signatureType + **/ + @ApiModelProperty(required = true, value = "Gets or sets the type of the signature.") + public SignatureType getSignatureType() { + return signatureType; + } + + public void setSignatureType(SignatureType signatureType) { + this.signatureType = signatureType; + } + + public Signature password(String password) { + this.password = password; + return this; + } + + /** + * Gets or sets the signature password. + * @return password + **/ + @ApiModelProperty(value = "Gets or sets the signature password.") + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Signature appearance(String appearance) { + this.appearance = appearance; + return this; + } + + /** + * Sets or gets a graphic appearance for the signature. Property value represents an image file name. + * @return appearance + **/ + @ApiModelProperty(value = "Sets or gets a graphic appearance for the signature. Property value represents an image file name.") + public String getAppearance() { + return appearance; + } + + public void setAppearance(String appearance) { + this.appearance = appearance; + } + + public Signature reason(String reason) { + this.reason = reason; + return this; + } + + /** + * Gets or sets the reason of the signature. + * @return reason + **/ + @ApiModelProperty(value = "Gets or sets the reason of the signature.") + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public Signature contact(String contact) { + this.contact = contact; + return this; + } + + /** + * Gets or sets the contact of the signature. + * @return contact + **/ + @ApiModelProperty(value = "Gets or sets the contact of the signature.") + public String getContact() { + return contact; + } + + public void setContact(String contact) { + this.contact = contact; + } + + public Signature location(String location) { + this.location = location; + return this; + } + + /** + * Gets or sets the location of the signature. + * @return location + **/ + @ApiModelProperty(value = "Gets or sets the location of the signature.") + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public Signature visible(Boolean visible) { + this.visible = visible; + return this; + } + + /** + * Gets or sets a value indicating whether this is visible. Supports only when signing particular page. + * @return visible + **/ + @ApiModelProperty(required = true, value = "Gets or sets a value indicating whether this is visible. Supports only when signing particular page.") + public Boolean isVisible() { + return visible; + } + + public void setVisible(Boolean visible) { + this.visible = visible; + } + + public Signature rectangle(Rectangle rectangle) { + this.rectangle = rectangle; + return this; + } + + /** + * Gets or sets the visible rectangle of the signature. Supports only when signing particular page. + * @return rectangle + **/ + @ApiModelProperty(value = "Gets or sets the visible rectangle of the signature. Supports only when signing particular page.") + public Rectangle getRectangle() { + return rectangle; + } + + public void setRectangle(Rectangle rectangle) { + this.rectangle = rectangle; + } + + public Signature formFieldName(String formFieldName) { + this.formFieldName = formFieldName; + return this; + } + + /** + * Gets or sets the name of the signature field. Supports only when signing document with particular form field. + * @return formFieldName + **/ + @ApiModelProperty(value = "Gets or sets the name of the signature field. Supports only when signing document with particular form field.") + public String getFormFieldName() { + return formFieldName; + } + + public void setFormFieldName(String formFieldName) { + this.formFieldName = formFieldName; + } + + public Signature authority(String authority) { + this.authority = authority; + return this; + } + + /** + * Gets or sets the name of the person or authority signing the document.. + * @return authority + **/ + @ApiModelProperty(value = "Gets or sets the name of the person or authority signing the document..") + public String getAuthority() { + return authority; + } + + public void setAuthority(String authority) { + this.authority = authority; + } + + public Signature date(String date) { + this.date = date; + return this; + } + + /** + * Gets or sets the time of signing. + * @return date + **/ + @ApiModelProperty(value = "Gets or sets the time of signing.") + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + + public Signature showProperties(Boolean showProperties) { + this.showProperties = showProperties; + return this; + } + + /** + * Gets or sets the showproperties in signature field + * @return showProperties + **/ + @ApiModelProperty(required = true, value = "Gets or sets the showproperties in signature field") + public Boolean isShowProperties() { + return showProperties; + } + + public void setShowProperties(Boolean showProperties) { + this.showProperties = showProperties; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Signature signature = (Signature) o; + return Objects.equals(this.signaturePath, signature.signaturePath) && + Objects.equals(this.signatureType, signature.signatureType) && + Objects.equals(this.password, signature.password) && + Objects.equals(this.appearance, signature.appearance) && + Objects.equals(this.reason, signature.reason) && + Objects.equals(this.contact, signature.contact) && + Objects.equals(this.location, signature.location) && + Objects.equals(this.visible, signature.visible) && + Objects.equals(this.rectangle, signature.rectangle) && + Objects.equals(this.formFieldName, signature.formFieldName) && + Objects.equals(this.authority, signature.authority) && + Objects.equals(this.date, signature.date) && + Objects.equals(this.showProperties, signature.showProperties); + } + + @Override + public int hashCode() { + return Objects.hash(signaturePath, signatureType, password, appearance, reason, contact, location, visible, rectangle, formFieldName, authority, date, showProperties); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Signature {\n"); + + sb.append(" signaturePath: ").append(toIndentedString(signaturePath)).append("\n"); + sb.append(" signatureType: ").append(toIndentedString(signatureType)).append("\n"); + sb.append(" password: ").append(toIndentedString(password)).append("\n"); + sb.append(" appearance: ").append(toIndentedString(appearance)).append("\n"); + sb.append(" reason: ").append(toIndentedString(reason)).append("\n"); + sb.append(" contact: ").append(toIndentedString(contact)).append("\n"); + sb.append(" location: ").append(toIndentedString(location)).append("\n"); + sb.append(" visible: ").append(toIndentedString(visible)).append("\n"); + sb.append(" rectangle: ").append(toIndentedString(rectangle)).append("\n"); + sb.append(" formFieldName: ").append(toIndentedString(formFieldName)).append("\n"); + sb.append(" authority: ").append(toIndentedString(authority)).append("\n"); + sb.append(" date: ").append(toIndentedString(date)).append("\n"); + sb.append(" showProperties: ").append(toIndentedString(showProperties)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/SignatureType.java b/src/main/java/com/aspose/asposecloudpdf/model/SignatureType.java new file mode 100644 index 0000000..0e2059b --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/SignatureType.java @@ -0,0 +1,82 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * + */ +@JsonAdapter(SignatureType.Adapter.class) +public enum SignatureType { + + PKCS_1(0), + PKCS_7(1), + PKCS_7_DETACHED(2); + + private Integer value; + + SignatureType(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static SignatureType fromValue(String text) { + for (SignatureType b : SignatureType.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final SignatureType enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public SignatureType read(final JsonReader jsonReader) throws IOException { + Integer value = jsonReader.nextInt(); + return SignatureType.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/SignatureVerifyResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/SignatureVerifyResponse.java new file mode 100644 index 0000000..030ae6e --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/SignatureVerifyResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Returns also a message. + */ +@ApiModel(description = "Returns also a message.") + +public class SignatureVerifyResponse extends SaaSposeResponse { + @SerializedName("Valid") + private Boolean valid = null; + + public SignatureVerifyResponse valid(Boolean valid) { + this.valid = valid; + return this; + } + + /** + * Valid sign. + * @return valid + **/ + @ApiModelProperty(value = "Valid sign.") + public Boolean isValid() { + return valid; + } + + public void setValid(Boolean valid) { + this.valid = valid; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SignatureVerifyResponse signatureVerifyResponse = (SignatureVerifyResponse) o; + return Objects.equals(this.valid, signatureVerifyResponse.valid) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(valid, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SignatureVerifyResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" valid: ").append(toIndentedString(valid)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/SplitResult.java b/src/main/java/com/aspose/asposecloudpdf/model/SplitResult.java new file mode 100644 index 0000000..d573d2f --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/SplitResult.java @@ -0,0 +1,114 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.SplitResultDocument; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Represents split result object. + */ +@ApiModel(description = "Represents split result object.") + +public class SplitResult { + @SerializedName("Documents") + private List documents = null; + + public SplitResult documents(List documents) { + this.documents = documents; + return this; + } + + public SplitResult addDocumentsItem(SplitResultDocument documentsItem) { + if (this.documents == null) { + this.documents = new ArrayList(); + } + this.documents.add(documentsItem); + return this; + } + + /** + * Gets or sets the list of documents. + * @return documents + **/ + @ApiModelProperty(value = "Gets or sets the list of documents.") + public List getDocuments() { + return documents; + } + + public void setDocuments(List documents) { + this.documents = documents; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SplitResult splitResult = (SplitResult) o; + return Objects.equals(this.documents, splitResult.documents); + } + + @Override + public int hashCode() { + return Objects.hash(documents); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SplitResult {\n"); + + sb.append(" documents: ").append(toIndentedString(documents)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/SplitResultDocument.java b/src/main/java/com/aspose/asposecloudpdf/model/SplitResultDocument.java new file mode 100644 index 0000000..f2028bd --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/SplitResultDocument.java @@ -0,0 +1,105 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Represents split result document, + */ +@ApiModel(description = "Represents split result document,") + +public class SplitResultDocument extends Link { + @SerializedName("Id") + private Integer id = null; + + public SplitResultDocument id(Integer id) { + this.id = id; + return this; + } + + /** + * Gets or sets the page number. + * @return id + **/ + @ApiModelProperty(value = "Gets or sets the page number.") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SplitResultDocument splitResultDocument = (SplitResultDocument) o; + return Objects.equals(this.id, splitResultDocument.id) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(id, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SplitResultDocument {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/SplitResultResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/SplitResultResponse.java new file mode 100644 index 0000000..44a8893 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/SplitResultResponse.java @@ -0,0 +1,107 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.aspose.asposecloudpdf.model.SplitResult; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Represents split result object. + */ +@ApiModel(description = "Represents split result object.") + +public class SplitResultResponse extends SaaSposeResponse { + @SerializedName("Result") + private SplitResult result = null; + + public SplitResultResponse result(SplitResult result) { + this.result = result; + return this; + } + + /** + * Gets or sets the splitting result. + * @return result + **/ + @ApiModelProperty(value = "Gets or sets the splitting result.") + public SplitResult getResult() { + return result; + } + + public void setResult(SplitResult result) { + this.result = result; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SplitResultResponse splitResultResponse = (SplitResultResponse) o; + return Objects.equals(this.result, splitResultResponse.result) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(result, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SplitResultResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" result: ").append(toIndentedString(result)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/Stamp.java b/src/main/java/com/aspose/asposecloudpdf/model/Stamp.java new file mode 100644 index 0000000..afe95e6 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/Stamp.java @@ -0,0 +1,591 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HorizontalAlignment; +import com.aspose.asposecloudpdf.model.Rotation; +import com.aspose.asposecloudpdf.model.StampType; +import com.aspose.asposecloudpdf.model.TextState; +import com.aspose.asposecloudpdf.model.VerticalAlignment; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Represents Pdf stamps. + */ +@ApiModel(description = "Represents Pdf stamps.") + +public class Stamp { + @SerializedName("Type") + private StampType type = null; + + @SerializedName("Background") + private Boolean background = null; + + @SerializedName("BottomMargin") + private Double bottomMargin = null; + + @SerializedName("HorizontalAlignment") + private HorizontalAlignment horizontalAlignment = null; + + @SerializedName("LeftMargin") + private Double leftMargin = null; + + @SerializedName("Opacity") + private Double opacity = null; + + @SerializedName("RightMargin") + private Double rightMargin = null; + + @SerializedName("Rotate") + private Rotation rotate = null; + + @SerializedName("RotateAngle") + private Double rotateAngle = null; + + @SerializedName("TopMargin") + private Double topMargin = null; + + @SerializedName("VerticalAlignment") + private VerticalAlignment verticalAlignment = null; + + @SerializedName("XIndent") + private Double xindent = null; + + @SerializedName("YIndent") + private Double yindent = null; + + @SerializedName("Zoom") + private Double zoom = null; + + @SerializedName("TextAlignment") + private HorizontalAlignment textAlignment = null; + + @SerializedName("Value") + private String value = null; + + @SerializedName("TextState") + private TextState textState = null; + + @SerializedName("FileName") + private String fileName = null; + + @SerializedName("Width") + private Double width = null; + + @SerializedName("Height") + private Double height = null; + + @SerializedName("PageIndex") + private Integer pageIndex = null; + + @SerializedName("StartingNumber") + private Integer startingNumber = null; + + public Stamp type(StampType type) { + this.type = type; + return this; + } + + /** + * Gets the stamp type. + * @return type + **/ + @ApiModelProperty(required = true, value = "Gets the stamp type.") + public StampType getType() { + return type; + } + + public void setType(StampType type) { + this.type = type; + } + + public Stamp background(Boolean background) { + this.background = background; + return this; + } + + /** + * Sets or gets a bool value that indicates the content is stamped as background. If the value is true, the stamp content is layed at the bottom. By defalt, the value is false, the stamp content is layed at the top. + * @return background + **/ + @ApiModelProperty(value = "Sets or gets a bool value that indicates the content is stamped as background. If the value is true, the stamp content is layed at the bottom. By defalt, the value is false, the stamp content is layed at the top.") + public Boolean isBackground() { + return background; + } + + public void setBackground(Boolean background) { + this.background = background; + } + + public Stamp bottomMargin(Double bottomMargin) { + this.bottomMargin = bottomMargin; + return this; + } + + /** + * Gets or sets bottom margin of stamp. + * @return bottomMargin + **/ + @ApiModelProperty(value = "Gets or sets bottom margin of stamp.") + public Double getBottomMargin() { + return bottomMargin; + } + + public void setBottomMargin(Double bottomMargin) { + this.bottomMargin = bottomMargin; + } + + public Stamp horizontalAlignment(HorizontalAlignment horizontalAlignment) { + this.horizontalAlignment = horizontalAlignment; + return this; + } + + /** + * Gets or sets Horizontal alignment of stamp on the page. + * @return horizontalAlignment + **/ + @ApiModelProperty(value = "Gets or sets Horizontal alignment of stamp on the page. ") + public HorizontalAlignment getHorizontalAlignment() { + return horizontalAlignment; + } + + public void setHorizontalAlignment(HorizontalAlignment horizontalAlignment) { + this.horizontalAlignment = horizontalAlignment; + } + + public Stamp leftMargin(Double leftMargin) { + this.leftMargin = leftMargin; + return this; + } + + /** + * Gets or sets left margin of stamp. + * @return leftMargin + **/ + @ApiModelProperty(value = "Gets or sets left margin of stamp.") + public Double getLeftMargin() { + return leftMargin; + } + + public void setLeftMargin(Double leftMargin) { + this.leftMargin = leftMargin; + } + + public Stamp opacity(Double opacity) { + this.opacity = opacity; + return this; + } + + /** + * Gets or sets a value to indicate the stamp opacity. The value is from 0.0 to 1.0. By default the value is 1.0. + * @return opacity + **/ + @ApiModelProperty(value = "Gets or sets a value to indicate the stamp opacity. The value is from 0.0 to 1.0. By default the value is 1.0.") + public Double getOpacity() { + return opacity; + } + + public void setOpacity(Double opacity) { + this.opacity = opacity; + } + + public Stamp rightMargin(Double rightMargin) { + this.rightMargin = rightMargin; + return this; + } + + /** + * Gets or sets right margin of stamp. + * @return rightMargin + **/ + @ApiModelProperty(value = "Gets or sets right margin of stamp.") + public Double getRightMargin() { + return rightMargin; + } + + public void setRightMargin(Double rightMargin) { + this.rightMargin = rightMargin; + } + + public Stamp rotate(Rotation rotate) { + this.rotate = rotate; + return this; + } + + /** + * Sets or gets the rotation of stamp content according values. Note. This property is for set angles which are multiples of 90 degrees (0, 90, 180, 270 degrees). To set arbitrary angle use RotateAngle property. If angle set by ArbitraryAngle is not multiple of 90 then Rotate property returns Rotation.None. + * @return rotate + **/ + @ApiModelProperty(value = "Sets or gets the rotation of stamp content according values. Note. This property is for set angles which are multiples of 90 degrees (0, 90, 180, 270 degrees). To set arbitrary angle use RotateAngle property. If angle set by ArbitraryAngle is not multiple of 90 then Rotate property returns Rotation.None.") + public Rotation getRotate() { + return rotate; + } + + public void setRotate(Rotation rotate) { + this.rotate = rotate; + } + + public Stamp rotateAngle(Double rotateAngle) { + this.rotateAngle = rotateAngle; + return this; + } + + /** + * Gets or sets rotate angle of stamp in degrees. This property allows to set arbitrary rotate angle. + * @return rotateAngle + **/ + @ApiModelProperty(value = "Gets or sets rotate angle of stamp in degrees. This property allows to set arbitrary rotate angle. ") + public Double getRotateAngle() { + return rotateAngle; + } + + public void setRotateAngle(Double rotateAngle) { + this.rotateAngle = rotateAngle; + } + + public Stamp topMargin(Double topMargin) { + this.topMargin = topMargin; + return this; + } + + /** + * Gets or sets top margin of stamp. + * @return topMargin + **/ + @ApiModelProperty(value = "Gets or sets top margin of stamp.") + public Double getTopMargin() { + return topMargin; + } + + public void setTopMargin(Double topMargin) { + this.topMargin = topMargin; + } + + public Stamp verticalAlignment(VerticalAlignment verticalAlignment) { + this.verticalAlignment = verticalAlignment; + return this; + } + + /** + * Gets or sets vertical alignment of stamp on page. + * @return verticalAlignment + **/ + @ApiModelProperty(value = "Gets or sets vertical alignment of stamp on page.") + public VerticalAlignment getVerticalAlignment() { + return verticalAlignment; + } + + public void setVerticalAlignment(VerticalAlignment verticalAlignment) { + this.verticalAlignment = verticalAlignment; + } + + public Stamp xindent(Double xindent) { + this.xindent = xindent; + return this; + } + + /** + * Horizontal stamp coordinate, starting from the left. + * @return xindent + **/ + @ApiModelProperty(value = "Horizontal stamp coordinate, starting from the left.") + public Double getXindent() { + return xindent; + } + + public void setXindent(Double xindent) { + this.xindent = xindent; + } + + public Stamp yindent(Double yindent) { + this.yindent = yindent; + return this; + } + + /** + * Vertical stamp coordinate, starting from the bottom. + * @return yindent + **/ + @ApiModelProperty(value = "Vertical stamp coordinate, starting from the bottom.") + public Double getYindent() { + return yindent; + } + + public void setYindent(Double yindent) { + this.yindent = yindent; + } + + public Stamp zoom(Double zoom) { + this.zoom = zoom; + return this; + } + + /** + * Zooming factor of the stamp. Allows to scale stamp. + * @return zoom + **/ + @ApiModelProperty(value = "Zooming factor of the stamp. Allows to scale stamp.") + public Double getZoom() { + return zoom; + } + + public void setZoom(Double zoom) { + this.zoom = zoom; + } + + public Stamp textAlignment(HorizontalAlignment textAlignment) { + this.textAlignment = textAlignment; + return this; + } + + /** + * Alignment of the text inside the stamp. + * @return textAlignment + **/ + @ApiModelProperty(value = "Alignment of the text inside the stamp.") + public HorizontalAlignment getTextAlignment() { + return textAlignment; + } + + public void setTextAlignment(HorizontalAlignment textAlignment) { + this.textAlignment = textAlignment; + } + + public Stamp value(String value) { + this.value = value; + return this; + } + + /** + * Gets or sets string value which is used as stamp on the page. + * @return value + **/ + @ApiModelProperty(value = "Gets or sets string value which is used as stamp on the page.") + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public Stamp textState(TextState textState) { + this.textState = textState; + return this; + } + + /** + * Gets text properties of the stamp. See for details. + * @return textState + **/ + @ApiModelProperty(value = "Gets text properties of the stamp. See for details.") + public TextState getTextState() { + return textState; + } + + public void setTextState(TextState textState) { + this.textState = textState; + } + + public Stamp fileName(String fileName) { + this.fileName = fileName; + return this; + } + + /** + * Gets or sets the file name. + * @return fileName + **/ + @ApiModelProperty(value = "Gets or sets the file name.") + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public Stamp width(Double width) { + this.width = width; + return this; + } + + /** + * Gets or sets image width. Setting this property allos to scal image horizontally. + * @return width + **/ + @ApiModelProperty(value = "Gets or sets image width. Setting this property allos to scal image horizontally.") + public Double getWidth() { + return width; + } + + public void setWidth(Double width) { + this.width = width; + } + + public Stamp height(Double height) { + this.height = height; + return this; + } + + /** + * Gets or sets image height. Setting this image allows to scale image vertically. + * @return height + **/ + @ApiModelProperty(value = "Gets or sets image height. Setting this image allows to scale image vertically.") + public Double getHeight() { + return height; + } + + public void setHeight(Double height) { + this.height = height; + } + + public Stamp pageIndex(Integer pageIndex) { + this.pageIndex = pageIndex; + return this; + } + + /** + * Gets or sets the index of the page. + * @return pageIndex + **/ + @ApiModelProperty(value = "Gets or sets the index of the page.") + public Integer getPageIndex() { + return pageIndex; + } + + public void setPageIndex(Integer pageIndex) { + this.pageIndex = pageIndex; + } + + public Stamp startingNumber(Integer startingNumber) { + this.startingNumber = startingNumber; + return this; + } + + /** + * Gets or sets value of the number of starting page. Other pages will be numbered starting from this value. + * @return startingNumber + **/ + @ApiModelProperty(value = "Gets or sets value of the number of starting page. Other pages will be numbered starting from this value.") + public Integer getStartingNumber() { + return startingNumber; + } + + public void setStartingNumber(Integer startingNumber) { + this.startingNumber = startingNumber; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Stamp stamp = (Stamp) o; + return Objects.equals(this.type, stamp.type) && + Objects.equals(this.background, stamp.background) && + Objects.equals(this.bottomMargin, stamp.bottomMargin) && + Objects.equals(this.horizontalAlignment, stamp.horizontalAlignment) && + Objects.equals(this.leftMargin, stamp.leftMargin) && + Objects.equals(this.opacity, stamp.opacity) && + Objects.equals(this.rightMargin, stamp.rightMargin) && + Objects.equals(this.rotate, stamp.rotate) && + Objects.equals(this.rotateAngle, stamp.rotateAngle) && + Objects.equals(this.topMargin, stamp.topMargin) && + Objects.equals(this.verticalAlignment, stamp.verticalAlignment) && + Objects.equals(this.xindent, stamp.xindent) && + Objects.equals(this.yindent, stamp.yindent) && + Objects.equals(this.zoom, stamp.zoom) && + Objects.equals(this.textAlignment, stamp.textAlignment) && + Objects.equals(this.value, stamp.value) && + Objects.equals(this.textState, stamp.textState) && + Objects.equals(this.fileName, stamp.fileName) && + Objects.equals(this.width, stamp.width) && + Objects.equals(this.height, stamp.height) && + Objects.equals(this.pageIndex, stamp.pageIndex) && + Objects.equals(this.startingNumber, stamp.startingNumber); + } + + @Override + public int hashCode() { + return Objects.hash(type, background, bottomMargin, horizontalAlignment, leftMargin, opacity, rightMargin, rotate, rotateAngle, topMargin, verticalAlignment, xindent, yindent, zoom, textAlignment, value, textState, fileName, width, height, pageIndex, startingNumber); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Stamp {\n"); + + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" background: ").append(toIndentedString(background)).append("\n"); + sb.append(" bottomMargin: ").append(toIndentedString(bottomMargin)).append("\n"); + sb.append(" horizontalAlignment: ").append(toIndentedString(horizontalAlignment)).append("\n"); + sb.append(" leftMargin: ").append(toIndentedString(leftMargin)).append("\n"); + sb.append(" opacity: ").append(toIndentedString(opacity)).append("\n"); + sb.append(" rightMargin: ").append(toIndentedString(rightMargin)).append("\n"); + sb.append(" rotate: ").append(toIndentedString(rotate)).append("\n"); + sb.append(" rotateAngle: ").append(toIndentedString(rotateAngle)).append("\n"); + sb.append(" topMargin: ").append(toIndentedString(topMargin)).append("\n"); + sb.append(" verticalAlignment: ").append(toIndentedString(verticalAlignment)).append("\n"); + sb.append(" xindent: ").append(toIndentedString(xindent)).append("\n"); + sb.append(" yindent: ").append(toIndentedString(yindent)).append("\n"); + sb.append(" zoom: ").append(toIndentedString(zoom)).append("\n"); + sb.append(" textAlignment: ").append(toIndentedString(textAlignment)).append("\n"); + sb.append(" value: ").append(toIndentedString(value)).append("\n"); + sb.append(" textState: ").append(toIndentedString(textState)).append("\n"); + sb.append(" fileName: ").append(toIndentedString(fileName)).append("\n"); + sb.append(" width: ").append(toIndentedString(width)).append("\n"); + sb.append(" height: ").append(toIndentedString(height)).append("\n"); + sb.append(" pageIndex: ").append(toIndentedString(pageIndex)).append("\n"); + sb.append(" startingNumber: ").append(toIndentedString(startingNumber)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/StampType.java b/src/main/java/com/aspose/asposecloudpdf/model/StampType.java new file mode 100644 index 0000000..c2ced24 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/StampType.java @@ -0,0 +1,83 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Represents enumeration of the stamp types. + */ +@JsonAdapter(StampType.Adapter.class) +public enum StampType { + + TEXT(0), + IMAGE(1), + PAGE(2), + PAGE_NUMBER(3); + + private Integer value; + + StampType(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static StampType fromValue(String text) { + for (StampType b : StampType.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final StampType enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public StampType read(final JsonReader jsonReader) throws IOException { + Integer value = jsonReader.nextInt(); + return StampType.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextFormat.java b/src/main/java/com/aspose/asposecloudpdf/model/TextFormat.java new file mode 100644 index 0000000..01629cf --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextFormat.java @@ -0,0 +1,154 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Color; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.List; + +/** + * Represents text format DTO. + */ +@ApiModel(description = "Represents text format DTO.") + +public class TextFormat extends LinkElement { + @SerializedName("Color") + private Color color = null; + + @SerializedName("FontSize") + private Double fontSize = null; + + @SerializedName("FontName") + private String fontName = null; + + public TextFormat color(Color color) { + this.color = color; + return this; + } + + /** + * Get color + * @return color + **/ + @ApiModelProperty(value = "") + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + + public TextFormat fontSize(Double fontSize) { + this.fontSize = fontSize; + return this; + } + + /** + * Get fontSize + * @return fontSize + **/ + @ApiModelProperty(value = "") + public Double getFontSize() { + return fontSize; + } + + public void setFontSize(Double fontSize) { + this.fontSize = fontSize; + } + + public TextFormat fontName(String fontName) { + this.fontName = fontName; + return this; + } + + /** + * Get fontName + * @return fontName + **/ + @ApiModelProperty(value = "") + public String getFontName() { + return fontName; + } + + public void setFontName(String fontName) { + this.fontName = fontName; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextFormat textFormat = (TextFormat) o; + return Objects.equals(this.color, textFormat.color) && + Objects.equals(this.fontSize, textFormat.fontSize) && + Objects.equals(this.fontName, textFormat.fontName) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(color, fontSize, fontName, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextFormat {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" color: ").append(toIndentedString(color)).append("\n"); + sb.append(" fontSize: ").append(toIndentedString(fontSize)).append("\n"); + sb.append(" fontName: ").append(toIndentedString(fontName)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextFormatResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/TextFormatResponse.java new file mode 100644 index 0000000..eccc643 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextFormatResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.aspose.asposecloudpdf.model.TextFormat; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * TextFormatResponse + */ + +public class TextFormatResponse extends SaaSposeResponse { + @SerializedName("TextFormat") + private TextFormat textFormat = null; + + public TextFormatResponse textFormat(TextFormat textFormat) { + this.textFormat = textFormat; + return this; + } + + /** + * Get textFormat + * @return textFormat + **/ + @ApiModelProperty(value = "") + public TextFormat getTextFormat() { + return textFormat; + } + + public void setTextFormat(TextFormat textFormat) { + this.textFormat = textFormat; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextFormatResponse textFormatResponse = (TextFormatResponse) o; + return Objects.equals(this.textFormat, textFormatResponse.textFormat) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(textFormat, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextFormatResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" textFormat: ").append(toIndentedString(textFormat)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextHorizontalAlignment.java b/src/main/java/com/aspose/asposecloudpdf/model/TextHorizontalAlignment.java new file mode 100644 index 0000000..c248081 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextHorizontalAlignment.java @@ -0,0 +1,90 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * + */ +@JsonAdapter(TextHorizontalAlignment.Adapter.class) +public enum TextHorizontalAlignment { + + LEFT("Left"), + + RIGHT("Right"), + + CENTER("Center"), + + JUSTIFY("Justify"), + + FULLJUSTIFY("FullJustify"), + + NONE("None"); + + private String value; + + TextHorizontalAlignment(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static TextHorizontalAlignment fromValue(String text) { + for (TextHorizontalAlignment b : TextHorizontalAlignment.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final TextHorizontalAlignment enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public TextHorizontalAlignment read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return TextHorizontalAlignment.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextItem.java b/src/main/java/com/aspose/asposecloudpdf/model/TextItem.java new file mode 100644 index 0000000..0bca2b1 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextItem.java @@ -0,0 +1,131 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.aspose.asposecloudpdf.model.TextFormat; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.List; + +/** + * Represents text DTO. + */ +@ApiModel(description = "Represents text DTO.") + +public class TextItem extends LinkElement { + @SerializedName("Text") + private String text = null; + + @SerializedName("Format") + private TextFormat format = null; + + public TextItem text(String text) { + this.text = text; + return this; + } + + /** + * Get text + * @return text + **/ + @ApiModelProperty(value = "") + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public TextItem format(TextFormat format) { + this.format = format; + return this; + } + + /** + * Get format + * @return format + **/ + @ApiModelProperty(value = "") + public TextFormat getFormat() { + return format; + } + + public void setFormat(TextFormat format) { + this.format = format; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextItem textItem = (TextItem) o; + return Objects.equals(this.text, textItem.text) && + Objects.equals(this.format, textItem.format) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(text, format, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextItem {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" text: ").append(toIndentedString(text)).append("\n"); + sb.append(" format: ").append(toIndentedString(format)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextItemResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/TextItemResponse.java new file mode 100644 index 0000000..84d44aa --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextItemResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.aspose.asposecloudpdf.model.TextItem; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * TextItemResponse + */ + +public class TextItemResponse extends SaaSposeResponse { + @SerializedName("TextItem") + private TextItem textItem = null; + + public TextItemResponse textItem(TextItem textItem) { + this.textItem = textItem; + return this; + } + + /** + * Get textItem + * @return textItem + **/ + @ApiModelProperty(value = "") + public TextItem getTextItem() { + return textItem; + } + + public void setTextItem(TextItem textItem) { + this.textItem = textItem; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextItemResponse textItemResponse = (TextItemResponse) o; + return Objects.equals(this.textItem, textItemResponse.textItem) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(textItem, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextItemResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" textItem: ").append(toIndentedString(textItem)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextItems.java b/src/main/java/com/aspose/asposecloudpdf/model/TextItems.java new file mode 100644 index 0000000..ee0d452 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextItems.java @@ -0,0 +1,117 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Link; +import com.aspose.asposecloudpdf.model.LinkElement; +import com.aspose.asposecloudpdf.model.TextItem; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Represents text items DTO. + */ +@ApiModel(description = "Represents text items DTO.") + +public class TextItems extends LinkElement { + @SerializedName("List") + private List list = null; + + public TextItems list(List list) { + this.list = list; + return this; + } + + public TextItems addListItem(TextItem listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextItems textItems = (TextItems) o; + return Objects.equals(this.list, textItems.list) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(list, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextItems {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextItemsResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/TextItemsResponse.java new file mode 100644 index 0000000..16baa22 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextItemsResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.aspose.asposecloudpdf.model.TextItems; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * TextItemsResponse + */ + +public class TextItemsResponse extends SaaSposeResponse { + @SerializedName("TextItems") + private TextItems textItems = null; + + public TextItemsResponse textItems(TextItems textItems) { + this.textItems = textItems; + return this; + } + + /** + * Get textItems + * @return textItems + **/ + @ApiModelProperty(value = "") + public TextItems getTextItems() { + return textItems; + } + + public void setTextItems(TextItems textItems) { + this.textItems = textItems; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextItemsResponse textItemsResponse = (TextItemsResponse) o; + return Objects.equals(this.textItems, textItemsResponse.textItems) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(textItems, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextItemsResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" textItems: ").append(toIndentedString(textItems)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextLine.java b/src/main/java/com/aspose/asposecloudpdf/model/TextLine.java new file mode 100644 index 0000000..82d78f6 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextLine.java @@ -0,0 +1,138 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Segment; +import com.aspose.asposecloudpdf.model.TextHorizontalAlignment; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * A line of text to be inserted into . + */ +@ApiModel(description = "A line of text to be inserted into .") + +public class TextLine { + @SerializedName("HorizontalAlignment") + private TextHorizontalAlignment horizontalAlignment = null; + + @SerializedName("Segments") + private List segments = null; + + public TextLine horizontalAlignment(TextHorizontalAlignment horizontalAlignment) { + this.horizontalAlignment = horizontalAlignment; + return this; + } + + /** + * Line's horizontal alignment + * @return horizontalAlignment + **/ + @ApiModelProperty(value = "Line's horizontal alignment") + public TextHorizontalAlignment getHorizontalAlignment() { + return horizontalAlignment; + } + + public void setHorizontalAlignment(TextHorizontalAlignment horizontalAlignment) { + this.horizontalAlignment = horizontalAlignment; + } + + public TextLine segments(List segments) { + this.segments = segments; + return this; + } + + public TextLine addSegmentsItem(Segment segmentsItem) { + if (this.segments == null) { + this.segments = new ArrayList(); + } + this.segments.add(segmentsItem); + return this; + } + + /** + * Segments that form the line. Every segment has its own formatting. + * @return segments + **/ + @ApiModelProperty(value = "Segments that form the line. Every segment has its own formatting.") + public List getSegments() { + return segments; + } + + public void setSegments(List segments) { + this.segments = segments; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextLine textLine = (TextLine) o; + return Objects.equals(this.horizontalAlignment, textLine.horizontalAlignment) && + Objects.equals(this.segments, textLine.segments); + } + + @Override + public int hashCode() { + return Objects.hash(horizontalAlignment, segments); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextLine {\n"); + + sb.append(" horizontalAlignment: ").append(toIndentedString(horizontalAlignment)).append("\n"); + sb.append(" segments: ").append(toIndentedString(segments)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextRect.java b/src/main/java/com/aspose/asposecloudpdf/model/TextRect.java new file mode 100644 index 0000000..e493cc4 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextRect.java @@ -0,0 +1,150 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Rectangle; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Represents text DTO. + */ +@ApiModel(description = "Represents text DTO.") + +public class TextRect { + @SerializedName("Text") + private String text = null; + + @SerializedName("Page") + private Integer page = null; + + @SerializedName("Rect") + private Rectangle rect = null; + + public TextRect text(String text) { + this.text = text; + return this; + } + + /** + * Get text + * @return text + **/ + @ApiModelProperty(value = "") + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public TextRect page(Integer page) { + this.page = page; + return this; + } + + /** + * Get page + * @return page + **/ + @ApiModelProperty(required = true, value = "") + public Integer getPage() { + return page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public TextRect rect(Rectangle rect) { + this.rect = rect; + return this; + } + + /** + * Get rect + * @return rect + **/ + @ApiModelProperty(value = "") + public Rectangle getRect() { + return rect; + } + + public void setRect(Rectangle rect) { + this.rect = rect; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextRect textRect = (TextRect) o; + return Objects.equals(this.text, textRect.text) && + Objects.equals(this.page, textRect.page) && + Objects.equals(this.rect, textRect.rect); + } + + @Override + public int hashCode() { + return Objects.hash(text, page, rect); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextRect {\n"); + + sb.append(" text: ").append(toIndentedString(text)).append("\n"); + sb.append(" page: ").append(toIndentedString(page)).append("\n"); + sb.append(" rect: ").append(toIndentedString(rect)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextRects.java b/src/main/java/com/aspose/asposecloudpdf/model/TextRects.java new file mode 100644 index 0000000..b66454f --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextRects.java @@ -0,0 +1,114 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.TextRect; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Represents text items DTO. + */ +@ApiModel(description = "Represents text items DTO.") + +public class TextRects { + @SerializedName("List") + private List list = null; + + public TextRects list(List list) { + this.list = list; + return this; + } + + public TextRects addListItem(TextRect listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextRects textRects = (TextRects) o; + return Objects.equals(this.list, textRects.list); + } + + @Override + public int hashCode() { + return Objects.hash(list); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextRects {\n"); + + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextRectsResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/TextRectsResponse.java new file mode 100644 index 0000000..35c3cbe --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextRectsResponse.java @@ -0,0 +1,106 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.aspose.asposecloudpdf.model.TextRects; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * TextRectsResponse + */ + +public class TextRectsResponse extends SaaSposeResponse { + @SerializedName("TextOccurences") + private TextRects textOccurences = null; + + public TextRectsResponse textOccurences(TextRects textOccurences) { + this.textOccurences = textOccurences; + return this; + } + + /** + * Get textOccurences + * @return textOccurences + **/ + @ApiModelProperty(value = "") + public TextRects getTextOccurences() { + return textOccurences; + } + + public void setTextOccurences(TextRects textOccurences) { + this.textOccurences = textOccurences; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextRectsResponse textRectsResponse = (TextRectsResponse) o; + return Objects.equals(this.textOccurences, textRectsResponse.textOccurences) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(textOccurences, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextRectsResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" textOccurences: ").append(toIndentedString(textOccurences)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextReplace.java b/src/main/java/com/aspose/asposecloudpdf/model/TextReplace.java new file mode 100644 index 0000000..6c248c5 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextReplace.java @@ -0,0 +1,198 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Rectangle; +import com.aspose.asposecloudpdf.model.TextState; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Single text replacement setting. + */ +@ApiModel(description = "Single text replacement setting.") + + +public class TextReplace { + @SerializedName("OldValue") + private String oldValue = null; + + @SerializedName("NewValue") + private String newValue = null; + + @SerializedName("Regex") + private Boolean regex = null; + + @SerializedName("TextState") + private TextState textState = null; + + @SerializedName("Rect") + private Rectangle rect = null; + + public TextReplace oldValue(String oldValue) { + this.oldValue = oldValue; + return this; + } + + /** + * Original text. + * @return oldValue + **/ + @ApiModelProperty(required = true, value = "Original text.") + public String getOldValue() { + return oldValue; + } + + public void setOldValue(String oldValue) { + this.oldValue = oldValue; + } + + public TextReplace newValue(String newValue) { + this.newValue = newValue; + return this; + } + + /** + * New text. + * @return newValue + **/ + @ApiModelProperty(required = true, value = "New text.") + public String getNewValue() { + return newValue; + } + + public void setNewValue(String newValue) { + this.newValue = newValue; + } + + public TextReplace regex(Boolean regex) { + this.regex = regex; + return this; + } + + /** + * Gets or sets a value indicating whether search text is regular expression. + * @return regex + **/ + @ApiModelProperty(required = true, value = "Gets or sets a value indicating whether search text is regular expression.") + public Boolean isRegex() { + return regex; + } + + public void setRegex(Boolean regex) { + this.regex = regex; + } + + public TextReplace textState(TextState textState) { + this.textState = textState; + return this; + } + + /** + * Text properties of a new text. + * @return textState + **/ + @ApiModelProperty(value = "Text properties of a new text.") + public TextState getTextState() { + return textState; + } + + public void setTextState(TextState textState) { + this.textState = textState; + } + + public TextReplace rect(Rectangle rect) { + this.rect = rect; + return this; + } + + /** + * Rectangle area where searched original text. + * @return rect + **/ + @ApiModelProperty(value = "Rectangle area where searched original text.") + public Rectangle getRect() { + return rect; + } + + public void setRect(Rectangle rect) { + this.rect = rect; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextReplace textReplace = (TextReplace) o; + return Objects.equals(this.oldValue, textReplace.oldValue) && + Objects.equals(this.newValue, textReplace.newValue) && + Objects.equals(this.regex, textReplace.regex) && + Objects.equals(this.textState, textReplace.textState) && + Objects.equals(this.rect, textReplace.rect); + } + + @Override + public int hashCode() { + return Objects.hash(oldValue, newValue, regex, textState, rect); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextReplace {\n"); + + sb.append(" oldValue: ").append(toIndentedString(oldValue)).append("\n"); + sb.append(" newValue: ").append(toIndentedString(newValue)).append("\n"); + sb.append(" regex: ").append(toIndentedString(regex)).append("\n"); + sb.append(" textState: ").append(toIndentedString(textState)).append("\n"); + sb.append(" rect: ").append(toIndentedString(rect)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextReplaceListRequest.java b/src/main/java/com/aspose/asposecloudpdf/model/TextReplaceListRequest.java new file mode 100644 index 0000000..c6ff04d --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextReplaceListRequest.java @@ -0,0 +1,180 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.TextReplace; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Multiple text replacements request. + */ +@ApiModel(description = "Multiple text replacements request.") + +public class TextReplaceListRequest { + @SerializedName("TextReplaces") + private List textReplaces = new ArrayList(); + + @SerializedName("DefaultFont") + private String defaultFont = null; + + @SerializedName("StartIndex") + private Integer startIndex = null; + + @SerializedName("CountReplace") + private Integer countReplace = null; + + public TextReplaceListRequest textReplaces(List textReplaces) { + this.textReplaces = textReplaces; + return this; + } + + public TextReplaceListRequest addTextReplacesItem(TextReplace textReplacesItem) { + this.textReplaces.add(textReplacesItem); + return this; + } + + /** + * A list of text replacement settings. + * @return textReplaces + **/ + @ApiModelProperty(required = true, value = "A list of text replacement settings.") + public List getTextReplaces() { + return textReplaces; + } + + public void setTextReplaces(List textReplaces) { + this.textReplaces = textReplaces; + } + + public TextReplaceListRequest defaultFont(String defaultFont) { + this.defaultFont = defaultFont; + return this; + } + + /** + * Get defaultFont + * @return defaultFont + **/ + @ApiModelProperty(value = "") + public String getDefaultFont() { + return defaultFont; + } + + public void setDefaultFont(String defaultFont) { + this.defaultFont = defaultFont; + } + + public TextReplaceListRequest startIndex(Integer startIndex) { + this.startIndex = startIndex; + return this; + } + + /** + * Get startIndex + * @return startIndex + **/ + @ApiModelProperty(value = "") + public Integer getStartIndex() { + return startIndex; + } + + public void setStartIndex(Integer startIndex) { + this.startIndex = startIndex; + } + + public TextReplaceListRequest countReplace(Integer countReplace) { + this.countReplace = countReplace; + return this; + } + + /** + * Get countReplace + * @return countReplace + **/ + @ApiModelProperty(value = "") + public Integer getCountReplace() { + return countReplace; + } + + public void setCountReplace(Integer countReplace) { + this.countReplace = countReplace; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextReplaceListRequest textReplaceListRequest = (TextReplaceListRequest) o; + return Objects.equals(this.textReplaces, textReplaceListRequest.textReplaces) && + Objects.equals(this.defaultFont, textReplaceListRequest.defaultFont) && + Objects.equals(this.startIndex, textReplaceListRequest.startIndex) && + Objects.equals(this.countReplace, textReplaceListRequest.countReplace); + } + + @Override + public int hashCode() { + return Objects.hash(textReplaces, defaultFont, startIndex, countReplace); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextReplaceListRequest {\n"); + + sb.append(" textReplaces: ").append(toIndentedString(textReplaces)).append("\n"); + sb.append(" defaultFont: ").append(toIndentedString(defaultFont)).append("\n"); + sb.append(" startIndex: ").append(toIndentedString(startIndex)).append("\n"); + sb.append(" countReplace: ").append(toIndentedString(countReplace)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextReplaceRequest.java b/src/main/java/com/aspose/asposecloudpdf/model/TextReplaceRequest.java new file mode 100644 index 0000000..5553dd6 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextReplaceRequest.java @@ -0,0 +1,107 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Rectangle; +import com.aspose.asposecloudpdf.model.TextReplace; +import com.aspose.asposecloudpdf.model.TextState; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Single text replacement request. + */ +@ApiModel(description = "Single text replacement request.") + +public class TextReplaceRequest extends TextReplace { + @SerializedName("DefaultFont") + private String defaultFont = null; + + public TextReplaceRequest defaultFont(String defaultFont) { + this.defaultFont = defaultFont; + return this; + } + + /** + * Get defaultFont + * @return defaultFont + **/ + @ApiModelProperty(value = "") + public String getDefaultFont() { + return defaultFont; + } + + public void setDefaultFont(String defaultFont) { + this.defaultFont = defaultFont; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextReplaceRequest textReplaceRequest = (TextReplaceRequest) o; + return Objects.equals(this.defaultFont, textReplaceRequest.defaultFont) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(defaultFont, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextReplaceRequest {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" defaultFont: ").append(toIndentedString(defaultFont)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextReplaceResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/TextReplaceResponse.java new file mode 100644 index 0000000..1716f9c --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextReplaceResponse.java @@ -0,0 +1,105 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * TextReplaceResponse + */ + +public class TextReplaceResponse extends SaaSposeResponse { + @SerializedName("Matches") + private Integer matches = null; + + public TextReplaceResponse matches(Integer matches) { + this.matches = matches; + return this; + } + + /** + * Get matches + * @return matches + **/ + @ApiModelProperty(value = "") + public Integer getMatches() { + return matches; + } + + public void setMatches(Integer matches) { + this.matches = matches; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextReplaceResponse textReplaceResponse = (TextReplaceResponse) o; + return Objects.equals(this.matches, textReplaceResponse.matches) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(matches, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextReplaceResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" matches: ").append(toIndentedString(matches)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TextState.java b/src/main/java/com/aspose/asposecloudpdf/model/TextState.java new file mode 100644 index 0000000..469cdf9 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TextState.java @@ -0,0 +1,197 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.Color; +import com.aspose.asposecloudpdf.model.FontStyles; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Represents a text state of a text + */ +@ApiModel(description = "Represents a text state of a text") + +public class TextState { + @SerializedName("FontSize") + private Double fontSize = null; + + @SerializedName("Font") + private String font = null; + + @SerializedName("ForegroundColor") + private Color foregroundColor = null; + + @SerializedName("BackgroundColor") + private Color backgroundColor = null; + + @SerializedName("FontStyle") + private FontStyles fontStyle = null; + + public TextState fontSize(Double fontSize) { + this.fontSize = fontSize; + return this; + } + + /** + * Gets or sets font size of the text. + * @return fontSize + **/ + @ApiModelProperty(required = true, value = "Gets or sets font size of the text.") + public Double getFontSize() { + return fontSize; + } + + public void setFontSize(Double fontSize) { + this.fontSize = fontSize; + } + + public TextState font(String font) { + this.font = font; + return this; + } + + /** + * Gets or sets font of the text. + * @return font + **/ + @ApiModelProperty(value = "Gets or sets font of the text.") + public String getFont() { + return font; + } + + public void setFont(String font) { + this.font = font; + } + + public TextState foregroundColor(Color foregroundColor) { + this.foregroundColor = foregroundColor; + return this; + } + + /** + * Gets or sets foreground color of the text. + * @return foregroundColor + **/ + @ApiModelProperty(value = "Gets or sets foreground color of the text.") + public Color getForegroundColor() { + return foregroundColor; + } + + public void setForegroundColor(Color foregroundColor) { + this.foregroundColor = foregroundColor; + } + + public TextState backgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + return this; + } + + /** + * Sets background color of the text. + * @return backgroundColor + **/ + @ApiModelProperty(value = "Sets background color of the text.") + public Color getBackgroundColor() { + return backgroundColor; + } + + public void setBackgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + } + + public TextState fontStyle(FontStyles fontStyle) { + this.fontStyle = fontStyle; + return this; + } + + /** + * Sets font style of the text. + * @return fontStyle + **/ + @ApiModelProperty(required = true, value = "Sets font style of the text.") + public FontStyles getFontStyle() { + return fontStyle; + } + + public void setFontStyle(FontStyles fontStyle) { + this.fontStyle = fontStyle; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TextState textState = (TextState) o; + return Objects.equals(this.fontSize, textState.fontSize) && + Objects.equals(this.font, textState.font) && + Objects.equals(this.foregroundColor, textState.foregroundColor) && + Objects.equals(this.backgroundColor, textState.backgroundColor) && + Objects.equals(this.fontStyle, textState.fontStyle); + } + + @Override + public int hashCode() { + return Objects.hash(fontSize, font, foregroundColor, backgroundColor, fontStyle); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TextState {\n"); + + sb.append(" fontSize: ").append(toIndentedString(fontSize)).append("\n"); + sb.append(" font: ").append(toIndentedString(font)).append("\n"); + sb.append(" foregroundColor: ").append(toIndentedString(foregroundColor)).append("\n"); + sb.append(" backgroundColor: ").append(toIndentedString(backgroundColor)).append("\n"); + sb.append(" fontStyle: ").append(toIndentedString(fontStyle)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/TiffExportOptions.java b/src/main/java/com/aspose/asposecloudpdf/model/TiffExportOptions.java new file mode 100644 index 0000000..8ad0a92 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/TiffExportOptions.java @@ -0,0 +1,451 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.ColorDepth; +import com.aspose.asposecloudpdf.model.CompressionType; +import com.aspose.asposecloudpdf.model.ShapeType; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Used for tiff export options setting. + */ +@ApiModel(description = "Used for tiff export options setting.") + +public class TiffExportOptions { + @SerializedName("Brightness") + private Double brightness = null; + + @SerializedName("Compression") + private CompressionType compression = null; + + @SerializedName("ColorDepth") + private ColorDepth colorDepth = null; + + @SerializedName("LeftMargin") + private Integer leftMargin = null; + + @SerializedName("RightMargin") + private Integer rightMargin = null; + + @SerializedName("TopMargin") + private Integer topMargin = null; + + @SerializedName("BottomMargin") + private Integer bottomMargin = null; + + @SerializedName("Orientation") + private ShapeType orientation = null; + + @SerializedName("SkipBlankPages") + private Boolean skipBlankPages = null; + + @SerializedName("Width") + private Integer width = null; + + @SerializedName("Height") + private Integer height = null; + + @SerializedName("XResolution") + private Integer xresolution = null; + + @SerializedName("YResolution") + private Integer yresolution = null; + + @SerializedName("PageIndex") + private Integer pageIndex = null; + + @SerializedName("PageCount") + private Integer pageCount = null; + + @SerializedName("ResultFile") + private String resultFile = null; + + public TiffExportOptions brightness(Double brightness) { + this.brightness = brightness; + return this; + } + + /** + * Image brightness. + * @return brightness + **/ + @ApiModelProperty(value = "Image brightness.") + public Double getBrightness() { + return brightness; + } + + public void setBrightness(Double brightness) { + this.brightness = brightness; + } + + public TiffExportOptions compression(CompressionType compression) { + this.compression = compression; + return this; + } + + /** + * Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None. + * @return compression + **/ + @ApiModelProperty(value = "Tiff compression. Possible values are: LZW, CCITT4, CCITT3, RLE, None.") + public CompressionType getCompression() { + return compression; + } + + public void setCompression(CompressionType compression) { + this.compression = compression; + } + + public TiffExportOptions colorDepth(ColorDepth colorDepth) { + this.colorDepth = colorDepth; + return this; + } + + /** + * Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp. + * @return colorDepth + **/ + @ApiModelProperty(value = "Image color depth. Possible valuse are: Default, Format8bpp, Format4bpp, Format1bpp.") + public ColorDepth getColorDepth() { + return colorDepth; + } + + public void setColorDepth(ColorDepth colorDepth) { + this.colorDepth = colorDepth; + } + + public TiffExportOptions leftMargin(Integer leftMargin) { + this.leftMargin = leftMargin; + return this; + } + + /** + * Left image margin. + * @return leftMargin + **/ + @ApiModelProperty(value = "Left image margin.") + public Integer getLeftMargin() { + return leftMargin; + } + + public void setLeftMargin(Integer leftMargin) { + this.leftMargin = leftMargin; + } + + public TiffExportOptions rightMargin(Integer rightMargin) { + this.rightMargin = rightMargin; + return this; + } + + /** + * Right image margin. + * @return rightMargin + **/ + @ApiModelProperty(value = "Right image margin.") + public Integer getRightMargin() { + return rightMargin; + } + + public void setRightMargin(Integer rightMargin) { + this.rightMargin = rightMargin; + } + + public TiffExportOptions topMargin(Integer topMargin) { + this.topMargin = topMargin; + return this; + } + + /** + * Top image margin. + * @return topMargin + **/ + @ApiModelProperty(value = "Top image margin.") + public Integer getTopMargin() { + return topMargin; + } + + public void setTopMargin(Integer topMargin) { + this.topMargin = topMargin; + } + + public TiffExportOptions bottomMargin(Integer bottomMargin) { + this.bottomMargin = bottomMargin; + return this; + } + + /** + * Bottom image margin. + * @return bottomMargin + **/ + @ApiModelProperty(value = "Bottom image margin.") + public Integer getBottomMargin() { + return bottomMargin; + } + + public void setBottomMargin(Integer bottomMargin) { + this.bottomMargin = bottomMargin; + } + + public TiffExportOptions orientation(ShapeType orientation) { + this.orientation = orientation; + return this; + } + + /** + * Image orientation. Possible values are: None, Landscape, Portait. + * @return orientation + **/ + @ApiModelProperty(value = "Image orientation. Possible values are: None, Landscape, Portait.") + public ShapeType getOrientation() { + return orientation; + } + + public void setOrientation(ShapeType orientation) { + this.orientation = orientation; + } + + public TiffExportOptions skipBlankPages(Boolean skipBlankPages) { + this.skipBlankPages = skipBlankPages; + return this; + } + + /** + * Skip blank pages flag. + * @return skipBlankPages + **/ + @ApiModelProperty(value = "Skip blank pages flag.") + public Boolean isSkipBlankPages() { + return skipBlankPages; + } + + public void setSkipBlankPages(Boolean skipBlankPages) { + this.skipBlankPages = skipBlankPages; + } + + public TiffExportOptions width(Integer width) { + this.width = width; + return this; + } + + /** + * Image width. + * @return width + **/ + @ApiModelProperty(value = "Image width.") + public Integer getWidth() { + return width; + } + + public void setWidth(Integer width) { + this.width = width; + } + + public TiffExportOptions height(Integer height) { + this.height = height; + return this; + } + + /** + * Image height. + * @return height + **/ + @ApiModelProperty(value = "Image height.") + public Integer getHeight() { + return height; + } + + public void setHeight(Integer height) { + this.height = height; + } + + public TiffExportOptions xresolution(Integer xresolution) { + this.xresolution = xresolution; + return this; + } + + /** + * Horizontal resolution. + * @return xresolution + **/ + @ApiModelProperty(value = "Horizontal resolution.") + public Integer getXresolution() { + return xresolution; + } + + public void setXresolution(Integer xresolution) { + this.xresolution = xresolution; + } + + public TiffExportOptions yresolution(Integer yresolution) { + this.yresolution = yresolution; + return this; + } + + /** + * Vertical resolution. + * @return yresolution + **/ + @ApiModelProperty(value = "Vertical resolution.") + public Integer getYresolution() { + return yresolution; + } + + public void setYresolution(Integer yresolution) { + this.yresolution = yresolution; + } + + public TiffExportOptions pageIndex(Integer pageIndex) { + this.pageIndex = pageIndex; + return this; + } + + /** + * Start page to export. + * @return pageIndex + **/ + @ApiModelProperty(value = "Start page to export.") + public Integer getPageIndex() { + return pageIndex; + } + + public void setPageIndex(Integer pageIndex) { + this.pageIndex = pageIndex; + } + + public TiffExportOptions pageCount(Integer pageCount) { + this.pageCount = pageCount; + return this; + } + + /** + * Number of pages to export. + * @return pageCount + **/ + @ApiModelProperty(value = "Number of pages to export.") + public Integer getPageCount() { + return pageCount; + } + + public void setPageCount(Integer pageCount) { + this.pageCount = pageCount; + } + + public TiffExportOptions resultFile(String resultFile) { + this.resultFile = resultFile; + return this; + } + + /** + * Resulting image file. + * @return resultFile + **/ + @ApiModelProperty(value = "Resulting image file.") + public String getResultFile() { + return resultFile; + } + + public void setResultFile(String resultFile) { + this.resultFile = resultFile; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TiffExportOptions tiffExportOptions = (TiffExportOptions) o; + return Objects.equals(this.brightness, tiffExportOptions.brightness) && + Objects.equals(this.compression, tiffExportOptions.compression) && + Objects.equals(this.colorDepth, tiffExportOptions.colorDepth) && + Objects.equals(this.leftMargin, tiffExportOptions.leftMargin) && + Objects.equals(this.rightMargin, tiffExportOptions.rightMargin) && + Objects.equals(this.topMargin, tiffExportOptions.topMargin) && + Objects.equals(this.bottomMargin, tiffExportOptions.bottomMargin) && + Objects.equals(this.orientation, tiffExportOptions.orientation) && + Objects.equals(this.skipBlankPages, tiffExportOptions.skipBlankPages) && + Objects.equals(this.width, tiffExportOptions.width) && + Objects.equals(this.height, tiffExportOptions.height) && + Objects.equals(this.xresolution, tiffExportOptions.xresolution) && + Objects.equals(this.yresolution, tiffExportOptions.yresolution) && + Objects.equals(this.pageIndex, tiffExportOptions.pageIndex) && + Objects.equals(this.pageCount, tiffExportOptions.pageCount) && + Objects.equals(this.resultFile, tiffExportOptions.resultFile); + } + + @Override + public int hashCode() { + return Objects.hash(brightness, compression, colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, width, height, xresolution, yresolution, pageIndex, pageCount, resultFile); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TiffExportOptions {\n"); + + sb.append(" brightness: ").append(toIndentedString(brightness)).append("\n"); + sb.append(" compression: ").append(toIndentedString(compression)).append("\n"); + sb.append(" colorDepth: ").append(toIndentedString(colorDepth)).append("\n"); + sb.append(" leftMargin: ").append(toIndentedString(leftMargin)).append("\n"); + sb.append(" rightMargin: ").append(toIndentedString(rightMargin)).append("\n"); + sb.append(" topMargin: ").append(toIndentedString(topMargin)).append("\n"); + sb.append(" bottomMargin: ").append(toIndentedString(bottomMargin)).append("\n"); + sb.append(" orientation: ").append(toIndentedString(orientation)).append("\n"); + sb.append(" skipBlankPages: ").append(toIndentedString(skipBlankPages)).append("\n"); + sb.append(" width: ").append(toIndentedString(width)).append("\n"); + sb.append(" height: ").append(toIndentedString(height)).append("\n"); + sb.append(" xresolution: ").append(toIndentedString(xresolution)).append("\n"); + sb.append(" yresolution: ").append(toIndentedString(yresolution)).append("\n"); + sb.append(" pageIndex: ").append(toIndentedString(pageIndex)).append("\n"); + sb.append(" pageCount: ").append(toIndentedString(pageCount)).append("\n"); + sb.append(" resultFile: ").append(toIndentedString(resultFile)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/VerticalAlignment.java b/src/main/java/com/aspose/asposecloudpdf/model/VerticalAlignment.java new file mode 100644 index 0000000..7200c89 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/VerticalAlignment.java @@ -0,0 +1,86 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * Enumeration of possible vertical alignment values. + */ +@JsonAdapter(VerticalAlignment.Adapter.class) +public enum VerticalAlignment { + + NONE("None"), + + TOP("Top"), + + CENTER("Center"), + + BOTTOM("Bottom"); + + private String value; + + VerticalAlignment(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static VerticalAlignment fromValue(String text) { + for (VerticalAlignment b : VerticalAlignment.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final VerticalAlignment enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public VerticalAlignment read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return VerticalAlignment.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/WordCount.java b/src/main/java/com/aspose/asposecloudpdf/model/WordCount.java new file mode 100644 index 0000000..41f7035 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/WordCount.java @@ -0,0 +1,114 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.PageWordCount; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Number of words per document pages. + */ +@ApiModel(description = "Number of words per document pages.") + +public class WordCount { + @SerializedName("List") + private List list = null; + + public WordCount list(List list) { + this.list = list; + return this; + } + + public WordCount addListItem(PageWordCount listItem) { + if (this.list == null) { + this.list = new ArrayList(); + } + this.list.add(listItem); + return this; + } + + /** + * Get list + * @return list + **/ + @ApiModelProperty(value = "") + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WordCount wordCount = (WordCount) o; + return Objects.equals(this.list, wordCount.list); + } + + @Override + public int hashCode() { + return Objects.hash(list); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WordCount {\n"); + + sb.append(" list: ").append(toIndentedString(list)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/WordCountResponse.java b/src/main/java/com/aspose/asposecloudpdf/model/WordCountResponse.java new file mode 100644 index 0000000..866ba67 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/WordCountResponse.java @@ -0,0 +1,107 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.aspose.asposecloudpdf.model.WordCount; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Number of words per document pages. + */ +@ApiModel(description = "Number of words per document pages.") + +public class WordCountResponse extends SaaSposeResponse { + @SerializedName("WordsPerPage") + private WordCount wordsPerPage = null; + + public WordCountResponse wordsPerPage(WordCount wordsPerPage) { + this.wordsPerPage = wordsPerPage; + return this; + } + + /** + * with words per page info. + * @return wordsPerPage + **/ + @ApiModelProperty(value = "with words per page info. ") + public WordCount getWordsPerPage() { + return wordsPerPage; + } + + public void setWordsPerPage(WordCount wordsPerPage) { + this.wordsPerPage = wordsPerPage; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WordCountResponse wordCountResponse = (WordCountResponse) o; + return Objects.equals(this.wordsPerPage, wordCountResponse.wordsPerPage) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(wordsPerPage, super.hashCode()); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WordCountResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" wordsPerPage: ").append(toIndentedString(wordsPerPage)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/aspose/asposecloudpdf/model/WrapMode.java b/src/main/java/com/aspose/asposecloudpdf/model/WrapMode.java new file mode 100644 index 0000000..ca84d37 --- /dev/null +++ b/src/main/java/com/aspose/asposecloudpdf/model/WrapMode.java @@ -0,0 +1,84 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.model; + +import java.util.Objects; +import io.swagger.annotations.ApiModel; +import com.google.gson.annotations.SerializedName; + +import java.io.IOException; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +/** + * + */ +@JsonAdapter(WrapMode.Adapter.class) +public enum WrapMode { + + NOWRAP("NoWrap"), + + BYWORDS("ByWords"), + + DISCRETIONARYHYPHENATION("DiscretionaryHyphenation"); + + private String value; + + WrapMode(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static WrapMode fromValue(String text) { + for (WrapMode b : WrapMode.values()) { + if (String.valueOf(b.value).equals(text)) { + return b; + } + } + return null; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final WrapMode enumeration) throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public WrapMode read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return WrapMode.fromValue(String.valueOf(value)); + } + } +} + diff --git a/src/test/java/com/aspose/asposecloudpdf/api/PdfApiTest.java b/src/test/java/com/aspose/asposecloudpdf/api/PdfApiTest.java new file mode 100644 index 0000000..706b0de --- /dev/null +++ b/src/test/java/com/aspose/asposecloudpdf/api/PdfApiTest.java @@ -0,0 +1,3067 @@ +/** + * + * Copyright (c) 2018 Aspose.Pdf for Cloud + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + + +package com.aspose.asposecloudpdf.api; + +import com.aspose.asposecloudpdf.ApiException; +import com.aspose.asposecloudpdf.model.AnnotationsResponse; +import com.aspose.asposecloudpdf.model.AppendDocument; +import com.aspose.asposecloudpdf.model.AttachmentResponse; +import com.aspose.asposecloudpdf.model.AttachmentsResponse; +import com.aspose.asposecloudpdf.model.Color; +import com.aspose.asposecloudpdf.model.ColorDepth; +import com.aspose.asposecloudpdf.model.CompressionType; +import com.aspose.asposecloudpdf.model.DocumentPagesResponse; +import com.aspose.asposecloudpdf.model.DocumentPrivilege; +import com.aspose.asposecloudpdf.model.DocumentPropertiesResponse; +import com.aspose.asposecloudpdf.model.DocumentProperty; +import com.aspose.asposecloudpdf.model.DocumentPropertyResponse; +import com.aspose.asposecloudpdf.model.DocumentResponse; +import com.aspose.asposecloudpdf.model.DocumentTextReplaceResponse; +import com.aspose.asposecloudpdf.model.FieldType; +import com.aspose.asposecloudpdf.model.FontStyles; +import com.aspose.asposecloudpdf.model.PdfAType; +import com.aspose.asposecloudpdf.model.Rectangle; +import com.aspose.asposecloudpdf.model.Field; +import com.aspose.asposecloudpdf.model.FieldResponse; +import com.aspose.asposecloudpdf.model.FieldsResponse; +import com.aspose.asposecloudpdf.model.Segment; +import com.aspose.asposecloudpdf.model.TextLine; +import com.aspose.asposecloudpdf.model.ShapeType; +import com.aspose.asposecloudpdf.model.StampType; +import com.aspose.asposecloudpdf.model.TextReplace; +import com.aspose.asposecloudpdf.model.TextState; +import com.aspose.asposecloudpdf.model.TextHorizontalAlignment; +import com.aspose.asposecloudpdf.model.VerticalAlignment; + +import java.io.File; + +import com.aspose.asposecloudpdf.model.HttpStatusCode; +import com.aspose.asposecloudpdf.model.ImageResponse; +import com.aspose.asposecloudpdf.model.ImagesListRequest; +import com.aspose.asposecloudpdf.model.ImagesResponse; +import com.aspose.asposecloudpdf.model.LineSpacing; +import com.aspose.asposecloudpdf.model.LinkAnnotationResponse; +import com.aspose.asposecloudpdf.model.LinkAnnotationsResponse; +import com.aspose.asposecloudpdf.model.MergeDocuments; +import com.aspose.asposecloudpdf.model.OptimizeOptions; +import com.aspose.asposecloudpdf.model.PageTextReplaceResponse; +import com.aspose.asposecloudpdf.model.Paragraph; +import com.aspose.asposecloudpdf.model.SaaSposeResponse; +import com.aspose.asposecloudpdf.model.Signature; +import com.aspose.asposecloudpdf.model.SignatureType; +import com.aspose.asposecloudpdf.model.SignatureVerifyResponse; +import com.aspose.asposecloudpdf.model.SplitResultResponse; +import com.aspose.asposecloudpdf.model.Stamp; +import com.aspose.asposecloudpdf.model.TextFormatResponse; +import com.aspose.asposecloudpdf.model.TextItemResponse; +import com.aspose.asposecloudpdf.model.TextItemsResponse; +import com.aspose.asposecloudpdf.model.TextRectsResponse; +import com.aspose.asposecloudpdf.model.TextReplaceListRequest; +import com.aspose.asposecloudpdf.model.TextReplaceRequest; +import com.aspose.asposecloudpdf.model.TextReplaceResponse; +import com.aspose.asposecloudpdf.model.TiffExportOptions; +import com.aspose.asposecloudpdf.model.WordCountResponse; +import com.aspose.asposecloudpdf.model.WrapMode; +import com.google.gson.Gson; +import com.google.gson.stream.JsonReader; + +import org.junit.Assert; +import org.junit.Test; + +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.parsers.SAXParser; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * API tests for PdfApi + */ +public class PdfApiTest +{ + private final PdfApi pdfApi; + private String tempFolder = "TempPdfCloud"; + private String testDataFolder = "testData"; + private String setupFile = "setup.json"; + + class ApiCreds{ + public String app_key; + public String app_sid; + public String product_uri; + } + + public PdfApiTest() throws FileNotFoundException + { + ApiCreds apiCreds = getApiCreds(); + pdfApi = new PdfApi(apiCreds.app_key, apiCreds.app_sid); + pdfApi.getApiClient().setBasePath(apiCreds.product_uri); + } + + private ApiCreds getApiCreds() throws FileNotFoundException + { + Gson gson = new Gson(); + JsonReader reader = new JsonReader(new FileReader(setupFile)); + return gson.fromJson(reader, ApiCreds.class); + } + + + private void uploadFile(String name) throws ApiException + { + File file = new File(testDataFolder + "/" + name); + SaaSposeResponse response = pdfApi.putCreate(tempFolder + '/' + name, file, null, null); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetPageAnnotationsTest + * @throws ApiException + * if the Api call fails + */ + @Test + public void getPageAnnotationsTest()throws ApiException + { + String name = "PdfWithAnnotations.pdf"; + int pageNumber = 2; + + uploadFile(name); + AnnotationsResponse response = pdfApi.getPageAnnotations(name, pageNumber, null, tempFolder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PostAppendDocumentUsingQueryParams Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postAppendDocumentUsingQueryParamsTest() throws ApiException + { + String name = "PdfWithImages2.pdf"; + String appendFileName = "4pages.pdf"; + + this.uploadFile(name); + this.uploadFile(appendFileName); + + int startPage = 2; + int endPage = 4; + + DocumentResponse response = this.pdfApi.postAppendDocument(name, null, this.tempFolder + '/' + appendFileName, startPage, endPage, null, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + /** + * PostAppendDocumentUsingBodyParams Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postAppendDocumentUsingBodyParamsTest() throws ApiException + { + String name = "PdfWithImages2.pdf"; + String appendFileName = "4pages.pdf"; + + this.uploadFile(name); + this.uploadFile(appendFileName); + + AppendDocument appendDocument = new AppendDocument(); + appendDocument.setDocument(this.tempFolder + '/' + appendFileName); + appendDocument.setStartPage(2); + appendDocument.setEndPage(4); + + DocumentResponse response = this.pdfApi.postAppendDocument(name, appendDocument, null, null, null, null, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + //Attachments Tests + + /** + * GetDocumentAttachmentByIndex Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getDocumentAttachmentByIndexTest() throws ApiException + { + String name = "PdfWithEmbeddedFiles.pdf"; + this.uploadFile(name); + + int attachmentIndex = 1; + + AttachmentResponse response = this.pdfApi.getDocumentAttachmentByIndex(name, attachmentIndex, null, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + /** + * GetDocumentAttachments Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getDocumentAttachmentsTest() throws ApiException + { + String name = "PdfWithEmbeddedFiles.pdf"; + this.uploadFile(name); + + AttachmentsResponse response = this.pdfApi.getDocumentAttachments(name, null, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + /** + * GetDownloadDocumentAttachmentByIndex Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getDownloadDocumentAttachmentByIndexTest() throws ApiException + { + String name = "PdfWithEmbeddedFiles.pdf"; + this.uploadFile(name); + + int attachmentIndex = 1; + + File response = this.pdfApi.getDownloadDocumentAttachmentByIndex(name, attachmentIndex, null, this.tempFolder); + assertNotNull(response); + } + + + // Bookmarks Tests + + /** + * GetDocumentBookmarks Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getDocumentBookmarksTest() throws ApiException + { + String name = "PdfWithBookmarks.pdf"; + this.uploadFile(name); + + File response = this.pdfApi.getDocumentBookmarks(name, null, null, this.tempFolder); + assertNotNull(response); + } + + + // Document Save As Tiff Tests + + /** + * PutDocumentSaveAsTiffUsingQueryParams Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putDocumentSaveAsTiffUsingQueryParamsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String resultFile = "4pages.tiff"; + double brightness = 0.6; + String compression = CompressionType.CCITT4.toString(); + String colorDepth = ColorDepth.FORMAT1BPP.toString(); + int leftMargin = 0; + int rightMargin = 0; + int topMargin = 0; + int bottomMargin = 0; + String orientation = ShapeType.PORTRAIT.toString(); + boolean skipBlankPages = true; + int width = 1200; + int height = 1600; + int xResolution = 200; + int yResolution = 200; + int pageIndex = 2; + int pageCount = 2; + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.putDocumentSaveAsTiff(name, null, resultFile, brightness, compression, + colorDepth, leftMargin, rightMargin, topMargin, bottomMargin, orientation, skipBlankPages, + width, height, xResolution, yResolution, pageIndex, pageCount, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + /** + * PutDocumentSaveAsTiffUsingBodyParams Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putDocumentSaveAsTiffUsingBodyParamsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + TiffExportOptions exportOptions = new TiffExportOptions(); + exportOptions.setResultFile("4pages.tiff"); + exportOptions.setBrightness(0.6); + exportOptions.setCompression(CompressionType.CCITT4); + exportOptions.setColorDepth(ColorDepth.FORMAT1BPP); + exportOptions.setLeftMargin(0); + exportOptions.setRightMargin(0); + exportOptions.setTopMargin(0); + exportOptions.setBottomMargin(0); + exportOptions.setOrientation(ShapeType.PORTRAIT); + exportOptions.setSkipBlankPages(true); + exportOptions.setWidth(1200); + exportOptions.setHeight(1600); + exportOptions.setXresolution(200); + exportOptions.setYresolution(200); + exportOptions.setPageIndex(2); + exportOptions.setPageCount(2); + + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.putDocumentSaveAsTiff(name, exportOptions, null, + null, null, null, null, null, + null, null, null, null, null, + null, null, null, null, null, + null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Document Tests + + /** + * GetDocument Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getDocumentTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + File response = this.pdfApi.getDocument(name, null, null, folder, null); + assertNotNull(response); + } + + + /** + * PostOptimizeDocument Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postOptimizeDocumentTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + OptimizeOptions optimizeOptions = new OptimizeOptions(); + optimizeOptions.setAllowReusePageContent(false); + optimizeOptions.setCompressImages(true); + optimizeOptions.setImageQuality(100); + optimizeOptions.setLinkDuplcateStreams(true); + optimizeOptions.setRemoveUnusedObjects(true); + optimizeOptions.setRemoveUnusedStreams(true); + optimizeOptions.setUnembedFonts(true); + + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.postOptimizeDocument(name, optimizeOptions, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + /** + * PostSplitDocument Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postSplitDocumentTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + SplitResultResponse response = this.pdfApi.postSplitDocument(name, null, null, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PutConvertDocument Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putConvertDocumentTest() throws ApiException + { + String url = "http://pdf995.com/samples/pdf.pdf"; + String format = "tiff"; + + File response = this.pdfApi.putConvertDocument(format, url, null, null); + assertNotNull(response); + } + + + /** + * PutCreateEmptyDocument Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putCreateEmptyDocumentTest() throws ApiException + { + String name = "empty.pdf"; + + String folder = this.tempFolder; + + DocumentResponse response = this.pdfApi.putCreateDocument(name, null, null, null, null, folder, null, null); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PutCreateDocument Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putCreateDocumentTest() throws ApiException + { + String name = "HtmlExample1.pdf"; + String templateName = "HtmlExample1.html"; + String folder = this.tempFolder; + String templateFile = folder + '/' + templateName; + + this.uploadFile(templateName); + + String templateType = "html"; + + DocumentResponse response = this.pdfApi.putCreateDocument(name, templateFile, null, templateType, + null, folder, null, null); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PutCreateDocumentFromImages Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putCreateDocumentFromImagesTest() throws ApiException + { + final String image1 = "33539.jpg"; + this.uploadFile(image1); + + final String image2 = "44781.jpg"; + this.uploadFile(image2); + + String resultDocName = "pdffromimagesinquery.pdf"; + String folder = this.tempFolder; + + ImagesListRequest images = new ImagesListRequest(); + List imagesList = new ArrayList(){{ + add(tempFolder + '/' + image1); + add(tempFolder + '/' + image2); + }}; + images.setImagesList(imagesList); + + boolean ocr = false; + String ocrLang = "eng"; + DocumentResponse response = this.pdfApi.putCreateDocumentFromImages(resultDocName, images , ocr, ocrLang, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Fields Tests + + /** + * GetField Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getFieldTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String fieldName = "textField"; + + FieldResponse response = this.pdfApi.getField(name, fieldName, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetFields Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getFieldsTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + FieldsResponse response = this.pdfApi.getFields(name, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PostCreateField Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postCreateFieldTest() throws ApiException + { + String name = "Hello world.pdf"; + this.uploadFile(name); + + Rectangle rect = new Rectangle(); + rect.setX(50); + rect.setY(200); + rect.setWidth(150); + rect.setHeight(200); + + + Field field = new Field(); + field.setName("checkboxfield"); + field.setValues(new ArrayList(){{ add("1");}}); + field.setType(FieldType.BOOLEAN); + field.setRect(rect); + + int pageNumber = 1; + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.postCreateField(name, pageNumber, field, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * DeleteField Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void deleteFieldTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + String fieldName = "textField"; + + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.deleteField(name, fieldName, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PutUpdateField Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putUpdateFieldTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + String fieldName = "textField"; + + Field field = new Field(); + field.setName(fieldName); + field.setValues(new ArrayList(){{ add("Text field updated value.");}}); + field.setType(FieldType.TEXT); + + String folder = this.tempFolder; + + FieldResponse response = this.pdfApi.putUpdateField(name, fieldName, field, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PutFieldsFlatten Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putFieldsFlattenTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.putFieldsFlatten(name, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Fragments And Segments Tests + + /** + * GetFragment Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getFragmentTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + int fragmentNumber = 1; + String folder = this.tempFolder; + + TextItemsResponse response = this.pdfApi.getFragment(name, pageNumber, fragmentNumber, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetFragmentTextFormat Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getFragmentTextFormatTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + int fragmentNumber = 1; + String folder = this.tempFolder; + + TextFormatResponse response = this.pdfApi.getFragmentTextFormat(name, pageNumber, fragmentNumber, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetFragments Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getFragmentsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + String folder = this.tempFolder; + + TextItemsResponse response = this.pdfApi.getFragments(name, pageNumber, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetSegment Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getSegmentTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + int fragmentNumber = 1; + int segmentNumber = 1; + String folder = this.tempFolder; + + TextItemResponse response = this.pdfApi.getSegment(name, pageNumber, fragmentNumber, segmentNumber, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetSegmentTextFormat Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getSegmentTextFormatTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + int fragmentNumber = 1; + int segmentNumber = 1; + String folder = this.tempFolder; + + TextFormatResponse response = this.pdfApi.getSegmentTextFormat(name, pageNumber, fragmentNumber, segmentNumber, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetSegments Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getSegmentsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + int fragmentNumber = 1; + String folder = this.tempFolder; + + TextItemsResponse response = this.pdfApi.getSegments(name, pageNumber, fragmentNumber, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Images Tests + + /** + * GetImage Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getImageTest() throws ApiException + { + String name = "PdfWithImages2.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + int imageNumber = 1; + String folder = this.tempFolder; + + File response = this.pdfApi.getImage(name, pageNumber, imageNumber, null, 0, 0, null, folder); + assertNotNull(response); + } + + + /** + * GetImages Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getImagesTest() throws ApiException + { + String name = "PdfWithImages2.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + String folder = this.tempFolder; + + ImagesResponse response = this.pdfApi.getImages(name, pageNumber, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PostReplaceImage Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postReplaceImageTest() throws ApiException + { + String name = "PdfWithImages2.pdf"; + this.uploadFile(name); + + String imageFileName = "Koala.jpg"; + this.uploadFile(imageFileName); + + int pageNumber = 1; + int imageNumber = 1; + String folder = this.tempFolder; + String imageFile = folder + '/' + imageFileName; + + ImageResponse response = this.pdfApi.postReplaceImage(name, pageNumber, imageNumber, imageFile, null, folder, null); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + /** + * GetImageWithFormat Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getImageWithFormatTest() throws ApiException + { + String name = "PdfWithImages2.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + int imageNumber = 1; + String folder = this.tempFolder; + + File response = this.pdfApi.getImage(name, pageNumber, imageNumber, "jpeg", 100, 100, null, folder); + assertNotNull(response); + } + + /** + * PostReplaceImageFromRequest Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postReplaceImageFromRequestTest() throws ApiException + { + String name = "PdfWithImages2.pdf"; + this.uploadFile(name); + + String imageFileName = "Koala.jpg"; + File file = new File(testDataFolder + "/" + imageFileName); + + int pageNumber = 1; + int imageNumber = 1; + String folder = this.tempFolder; + String imageFile = folder + '/' + imageFileName; + + ImageResponse response = this.pdfApi.postReplaceImage(name, pageNumber, imageNumber, null, null, folder, file); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + // Links Tests + + /** + * GetPageLinkAnnotationByIndex Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPageLinkAnnotationByIndexTest() throws ApiException + { + String name = "PdfWithLinks.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + int linkIndex = 1; + String folder = this.tempFolder; + + LinkAnnotationResponse response = this.pdfApi.getPageLinkAnnotationByIndex(name, pageNumber, linkIndex, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetPageLinkAnnotations Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPageLinkAnnotationsTest() throws ApiException + { + String name = "PdfWithLinks.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + String folder = this.tempFolder; + + LinkAnnotationsResponse response = this.pdfApi.getPageLinkAnnotations(name, pageNumber, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Merge Tests + + /** + * PutMergeDocuments Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putMergeDocumentsTest() throws ApiException + { + ArrayList nameList = new ArrayList(); + nameList.add("4pages.pdf"); + nameList.add("PdfWithImages2.pdf"); + nameList.add("marketing.pdf"); + + for (String name : nameList) + { + this.uploadFile(name); + } + + String resultName = "MergingResult.pdf"; + + MergeDocuments mergeDocuments = new MergeDocuments(); + + for(int i = 0; i < nameList.size(); i++) + { + nameList.set(i, this.tempFolder + '/' + nameList.get(i)); + } + + mergeDocuments.setList(nameList); + + String folder = this.tempFolder; + + DocumentResponse response = this.pdfApi.putMergeDocuments(resultName, mergeDocuments, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + + // Pages Tests + + /** + * DeletePage Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void deletePageTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.deletePage(name, pageNumber, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetPage Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPageTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 3; + String folder = this.tempFolder; + + File response = this.pdfApi.getPage(name, pageNumber, null, 0, 0, null, folder); + assertNotNull(response); + } + + /** + * GetPageWithFormat Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPageWithFormatTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 3; + String folder = this.tempFolder; + + File response = this.pdfApi.getPage(name, pageNumber, "jpeg", 100, 100, null, folder); + assertNotNull(response); + } + + /** + * GetPages Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPagesTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + DocumentPagesResponse response = this.pdfApi.getPages(name, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetWordsPerPage Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getWordsPerPageTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + WordCountResponse response = this.pdfApi.getWordsPerPage(name, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PostMovePage Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postMovePageTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + int pageNumber = 1; + int newIndex = 1; + + SaaSposeResponse response = this.pdfApi.postMovePage(name, pageNumber, newIndex, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PutAddNewPage Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putAddNewPageTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + DocumentPagesResponse response = this.pdfApi.putAddNewPage(name, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PutPageAddStamp Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPageAddStampTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String stampFileName = "Penguins.jpg"; + this.uploadFile(stampFileName); + + int pageNumber = 1; + String folder = this.tempFolder; + + + Stamp stamp = new Stamp(); + stamp.setType(StampType.IMAGE); + stamp.setFileName(folder + '/' + stampFileName); + stamp.setBackground(true); + stamp.setWidth(200.); + stamp.setHeight(200.); + stamp.setXindent(100.); + stamp.setYindent(100.); + + SaaSposeResponse response = this.pdfApi.putPageAddStamp(name, pageNumber, stamp, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Paragraphs Tests + + /** + * PutAddText Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putAddTextTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + String folder = this.tempFolder; + + Rectangle rectangle = new Rectangle(); + rectangle.setX(100); + rectangle.setY(100); + rectangle.setWidth(200); + rectangle.setHeight(200); + + Color foregroundColor = new Color(); + foregroundColor.setA(0x00); + foregroundColor.setR(0x00); + foregroundColor.setG(0xFF); + foregroundColor.setB(0x00); + + Color backgroundColor = new Color(); + backgroundColor.setA(0x00); + backgroundColor.setR(0xFF); + backgroundColor.setG(0x00); + backgroundColor.setB(0x00); + + TextState textState = new TextState(); + textState.setFont("Arial"); + textState.setFontSize(10.); + textState.setForegroundColor(foregroundColor); + textState.setBackgroundColor(backgroundColor); + textState.setFontStyle(FontStyles.BOLD); + + final Segment segment = new Segment(); + segment.setValue("segment 1"); + segment.setTextState(textState); + + final TextLine textLine = new TextLine(); + textLine.setHorizontalAlignment(TextHorizontalAlignment.RIGHT); + textLine.setSegments(new ArrayList(){{ add(segment);}}); + + Paragraph paragraph = new Paragraph(); + paragraph.setRectangle(rectangle); + paragraph.setLeftMargin(10.); + paragraph.setRightMargin(10.); + paragraph.setTopMargin(20.); + paragraph.setBottomMargin(20.); + paragraph.setHorizontalAlignment(TextHorizontalAlignment.FULLJUSTIFY); + paragraph.setLineSpacing(LineSpacing.FONTSIZE); + paragraph.setRotation(10.); + paragraph.setSubsequentLinesIndent(20.); + paragraph.setVerticalAlignment(VerticalAlignment.CENTER); + paragraph.setWrapMode(WrapMode.BYWORDS); + paragraph.setLines(new ArrayList(){{ add(textLine);}}); + + + SaaSposeResponse response = this.pdfApi.putAddText(name, pageNumber, paragraph, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Properties Tests + + /** + * DeleteProperties Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void deletePropertiesTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + DocumentProperty property1 = new DocumentProperty(); + property1.setName("prop1"); + property1.setValue("val1"); + + String folder = this.tempFolder; + + DocumentProperty property2 = new DocumentProperty(); + property2.setName("prop2"); + property2.setValue("val2"); + + + this.pdfApi.putSetProperty(name, property1.getName(), property1, null, folder); + this.pdfApi.putSetProperty(name, property2.getName(), property2, null, folder); + + SaaSposeResponse response = this.pdfApi.deleteProperties(name, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * DeleteProperty Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void deletePropertyTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + DocumentProperty property1 = new DocumentProperty(); + property1.setName("prop1"); + property1.setValue("val1"); + + String folder = this.tempFolder; + + this.pdfApi.putSetProperty(name, property1.getName(), property1, null, folder); + + SaaSposeResponse response = this.pdfApi.deleteProperty(name, property1.getName(), null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetDocumentProperties Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getDocumentPropertiesTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + DocumentProperty property1 = new DocumentProperty(); + property1.setName("prop1"); + property1.setValue("val1"); + + String folder = this.tempFolder; + + DocumentProperty property2 = new DocumentProperty(); + property2.setName("prop2"); + property2.setValue("val2"); + + this.pdfApi.putSetProperty(name, property1.getName(), property1, null, folder); + this.pdfApi.putSetProperty(name, property2.getName(), property2, null, folder); + + DocumentPropertiesResponse response = this.pdfApi.getDocumentProperties(name, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetDocumentProperty Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getDocumentPropertyTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + DocumentProperty property1 = new DocumentProperty(); + property1.setName("prop1"); + property1.setValue("val1"); + + String folder = this.tempFolder; + + this.pdfApi.putSetProperty(name, property1.getName(), property1, null, folder); + + DocumentPropertyResponse response = this.pdfApi.getDocumentProperty(name, property1.getName(), null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PutSetProperty Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putSetPropertyTest() throws ApiException + { + String name = "PdfWithAcroForm.pdf"; + this.uploadFile(name); + + DocumentProperty property1 = new DocumentProperty(); + property1.setName("prop1"); + property1.setValue("val1"); + + String folder = this.tempFolder; + + DocumentPropertyResponse response = this.pdfApi.putSetProperty(name, property1.getName(), property1, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + + // Sign Tests + + /** + * PostSignDocument Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postSignDocumentTest() throws ApiException + { + String name = "BlankWithSignature.pdf"; + this.uploadFile(name); + + String signatureFileName = "test1234.pfx"; + this.uploadFile(signatureFileName); + + Rectangle rectangle = new Rectangle(); + rectangle.setX(100); + rectangle.setY(100); + rectangle.setWidth(400); + rectangle.setHeight(100); + + String folder = this.tempFolder; + + Signature signature = new Signature(); + signature.setAuthority("Sergey Smal"); + signature.setContact("test@mail.ru"); + signature.setDate("08/01/2012 12:15:00.000 PM"); + signature.setFormFieldName("Signature1"); + signature.setLocation("Ukraine"); + signature.setPassword("test1234"); + signature.setRectangle(rectangle); + signature.setSignaturePath(folder + '/' + signatureFileName); + signature.setSignatureType(SignatureType.PKCS_7); + signature.setVisible(true); + + SaaSposeResponse response = this.pdfApi.postSignDocument(name, signature, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PostSignPage Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postSignPageTest() throws ApiException + { + String name = "BlankWithSignature.pdf"; + this.uploadFile(name); + + String signatureFileName = "test1234.pfx"; + this.uploadFile(signatureFileName); + + int pageNumber = 1; + + Rectangle rectangle = new Rectangle(); + rectangle.setX(100); + rectangle.setY(100); + rectangle.setWidth(400); + rectangle.setHeight(100); + + String folder = this.tempFolder; + + Signature signature = new Signature(); + signature.setAuthority("Sergey Smal"); + signature.setContact("test@mail.ru"); + signature.setDate("08/01/2012 12:15:00.000 PM"); + signature.setFormFieldName("Signature1"); + signature.setLocation("Ukraine"); + signature.setPassword("test1234"); + signature.setRectangle(rectangle); + signature.setSignaturePath(folder + '/' + signatureFileName); + signature.setSignatureType(SignatureType.PKCS_7); + signature.setVisible(true); + + SaaSposeResponse response = this.pdfApi.postSignPage(name, pageNumber, signature, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetVerifySignature Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getVerifySignatureTest() throws ApiException + { + String name = "BlankWithSignature.pdf"; + this.uploadFile(name); + + String signatureFileName = "test1234.pfx"; + this.uploadFile(signatureFileName); + + Rectangle rectangle = new Rectangle(); + rectangle.setX(100); + rectangle.setY(100); + rectangle.setWidth(400); + rectangle.setHeight(100); + + String folder = this.tempFolder; + + Signature signature = new Signature(); + signature.setAuthority("Sergey Smal"); + signature.setContact("test@mail.ru"); + signature.setDate("08/01/2012 12:15:00.000 PM"); + signature.setFormFieldName("Signature1"); + signature.setLocation("Ukraine"); + signature.setPassword("test1234"); + signature.setRectangle(rectangle); + signature.setSignaturePath(folder + '/' + signatureFileName); + signature.setSignatureType(SignatureType.PKCS_7); + signature.setVisible(true); + + SaaSposeResponse responseSign = this.pdfApi.postSignDocument(name, signature, null, folder); + assertEquals(responseSign.getCode(), HttpStatusCode.OK); + + SignatureVerifyResponse response = this.pdfApi.getVerifySignature(name, signature.getFormFieldName(), folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + // Text Items Tests + + /** + * GetPageTextItems Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPageTextItemsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + String folder = this.tempFolder; + + TextItemsResponse response = this.pdfApi.getPageTextItems(name, pageNumber, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + /** + * GetTextItems Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getTextItemsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + TextItemsResponse response = this.pdfApi.getTextItems(name, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Text Replace Tests + + /** + * PostDocumentReplaceText Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postDocumentReplaceTextTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + TextReplaceRequest textReplaceRequest = new TextReplaceRequest(); + textReplaceRequest.setOldValue("Page"); + textReplaceRequest.setNewValue("p_a_g_e"); + textReplaceRequest.setRegex(false); + + String folder = this.tempFolder; + + DocumentTextReplaceResponse response = this.pdfApi.postDocumentReplaceText(name, textReplaceRequest, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PostDocumentReplaceTextList Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postDocumentReplaceTextListTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + final TextReplaceRequest textReplaceRequest1 = new TextReplaceRequest(); + textReplaceRequest1.setOldValue("First"); + textReplaceRequest1.setNewValue("1"); + textReplaceRequest1.setRegex(false); + + final TextReplaceRequest textReplaceRequest2 = new TextReplaceRequest(); + textReplaceRequest2.setOldValue("Page"); + textReplaceRequest2.setNewValue("p_a_g_e"); + textReplaceRequest2.setRegex(false); + + TextReplaceListRequest textReplaceListRequest = new TextReplaceListRequest(); + textReplaceListRequest.setTextReplaces(new ArrayList() + {{ add(textReplaceRequest1); add(textReplaceRequest2);}}); + + String folder = this.tempFolder; + + DocumentTextReplaceResponse response = this.pdfApi.postDocumentReplaceTextList(name, textReplaceListRequest, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PostPageReplaceText Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postPageReplaceTextTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + + TextReplaceRequest textReplaceRequest = new TextReplaceRequest(); + textReplaceRequest.setOldValue("Page"); + textReplaceRequest.setNewValue("p_a_g_e"); + textReplaceRequest.setRegex(false); + + String folder = this.tempFolder; + + PageTextReplaceResponse response = this.pdfApi.postPageReplaceText(name, pageNumber, textReplaceRequest, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PostPageReplaceTextList Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postPageReplaceTextListTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + + final TextReplaceRequest textReplaceRequest1 = new TextReplaceRequest(); + textReplaceRequest1.setOldValue("First"); + textReplaceRequest1.setNewValue("1"); + textReplaceRequest1.setRegex(false); + + final TextReplaceRequest textReplaceRequest2 = new TextReplaceRequest(); + textReplaceRequest2.setOldValue("Page"); + textReplaceRequest2.setNewValue("p_a_g_e"); + textReplaceRequest2.setRegex(false); + + TextReplaceListRequest textReplaceListRequest = new TextReplaceListRequest(); + textReplaceListRequest.setTextReplaces(new ArrayList() + {{ add(textReplaceRequest1); add(textReplaceRequest2);}}); + + String folder = this.tempFolder; + + PageTextReplaceResponse response = this.pdfApi.postPageReplaceTextList(name, pageNumber, textReplaceListRequest, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // OCR Tests + + /** + * PutSearchableDocument Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putSearchableDocumentTest() throws ApiException + { + String name = "rusdoc.pdf"; + this.uploadFile(name); + + String lang = "rus,eng"; + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.putSearchableDocument(name, null, folder, lang); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + /** + * PutSearchableDocumentWithDefaultLang Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putSearchableDocumentWithDefaultLangTest() throws ApiException + { + String name = "rusdoc.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.putSearchableDocument(name, null, folder, null); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Text Tests + + /** + * GetText Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getTextTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int x = 0; + int y = 0; + int width = 0; + int height = 0; + String folder = this.tempFolder; + + TextRectsResponse response = this.pdfApi.getText(name, x, y, width, height, null, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * GetPageTextByTwoTextOnPage Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPageTextByTwoTextOnPageTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + int pageNumber = 1; + int x = 0; + int y = 0; + int width = 0; + int height = 0; + + List format = new ArrayList(){{ add("First Page"); add("Second Page");}}; + String folder = this.tempFolder; + + TextRectsResponse response = this.pdfApi.getPageText(name, pageNumber, x, y, width, height, format, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Text Replace Tests + + /** + * PostDocumentTextReplaceWholeDocByRect Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postDocumentTextReplaceWholeDocByRectTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + Rectangle rect = new Rectangle(); + rect.setX(100); + rect.setY(700); + rect.setWidth(300); + rect.setHeight(300); + + final TextReplace textReplace = new TextReplace(); + textReplace.setOldValue("Page"); + textReplace.setNewValue("p_a_g_e"); + textReplace.setRect(rect); + + TextReplaceListRequest textReplaceList = new TextReplaceListRequest(); + textReplaceList.setTextReplaces(new ArrayList(){{ add(textReplace); }}); + textReplaceList.setStartIndex(0); + textReplaceList.setCountReplace(0); + + String folder = this.tempFolder; + + TextReplaceResponse response = this.pdfApi.postDocumentTextReplace(name, textReplaceList, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + /** + * PostPageTextReplaceByRect Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void postPageTextReplaceByRectTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + int pageNumber = 1; + + Rectangle rect = new Rectangle(); + rect.setX(100); + rect.setY(700); + rect.setWidth(300); + rect.setHeight(300); + + final TextReplace textReplace = new TextReplace(); + textReplace.setOldValue("Page"); + textReplace.setNewValue("p_a_g_e"); + textReplace.setRect(rect); + + TextReplaceListRequest textReplaceList = new TextReplaceListRequest(); + textReplaceList.setTextReplaces(new ArrayList(){{ add(textReplace); }}); + textReplaceList.setStartIndex(0); + textReplaceList.setCountReplace(0); + + String folder = this.tempFolder; + + TextReplaceResponse response = this.pdfApi.postPageTextReplace(name, pageNumber, textReplaceList, null, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + + // Convert Tests + + /** + * GetPdfInStorageToDoc Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToDocTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + String folder = this.tempFolder; + + File response = this.pdfApi.getPdfInStorageToDoc(name, null, null, null, null, null, null, null, null, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToDoc Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToDocTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + String folder = this.tempFolder; + String resFileName = "result.doc"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToDoc(name, this.tempFolder + '/' + resFileName, null, null, null, null, null, null, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToDoc Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToDocTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.doc"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToDoc(this.tempFolder + '/' + resFileName, null, null, null, null, null, null, null, null, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * GetPdfInStorageToPdfA Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToPdfATest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String type = PdfAType.PDFA1A.toString(); + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToPdfA(name, type, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToPdfA Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToPdfATest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String type = PdfAType.PDFA1A.toString(); + String folder = this.tempFolder; + String resFileName = "result.pdf"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToPdfA(name, this.tempFolder + '/' + resFileName, type, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToPdfA Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToPdfATest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String type = PdfAType.PDFA1A.toString(); + String resFileName = "result.pdf"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToPdfA(this.tempFolder + '/' + resFileName, type, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * GetPdfInStorageToTiff Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToTiffTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToTiff(name, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToTiff Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToTiffTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.tiff"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToTiff(name, this.tempFolder + '/' + resFileName, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToTiff Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToTiffTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.tiff"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToTiff(this.tempFolder + '/' + resFileName, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * GetPdfInStorageToSvg Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToSvgTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToSvg(name, null, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToSvg Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToSvgTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.svg"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToSvg(name, this.tempFolder + '/' + resFileName, null, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToSvg Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToSvgTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.svg"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToSvg(this.tempFolder + '/' + resFileName, null, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * GetPdfInStorageToXps Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToXpsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToXps(name, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToXps Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToXpsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.xps"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToXps(name, this.tempFolder + '/' + resFileName, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToXps Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToXpsTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.xps"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToXps(this.tempFolder + '/' + resFileName, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * GetPdfInStorageToXls Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToXlsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToXls(name, null, null, null, null, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToXls Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToXlsTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.xls"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToXls(name, this.tempFolder + '/' + resFileName, null, null, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToXls Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToXlsTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.xls"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToXls(this.tempFolder + '/' + resFileName, null, null, null, null, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetPdfInStorageToHtml Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToHtmlTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToHtml(name, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToHtml Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToHtmlTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.html"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToHtml( + name, + this.tempFolder + '/' + resFileName, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToHtml Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToHtmlTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.html"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToHtml( + this.tempFolder + '/' + resFileName, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * GetPdfInStorageToEpub Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToEpubTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToEpub(name, null, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToEpub Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToEpubTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.epub"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToEpub(name, this.tempFolder + '/' + resFileName, null, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToEpub Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToEpubTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.epub"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToEpub(this.tempFolder + '/' + resFileName, null, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetPdfInStorageToPptx Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToPptxTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToPptx(name, null, null, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToPptx Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToPptxTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.pptx"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToPptx(name, this.tempFolder + '/' + resFileName, null, null, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToPptx Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToPptxTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.pptx"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToPptx(this.tempFolder + '/' + resFileName, null, null, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetPdfInStorageToLaTeX Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToLaTeXTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToLaTeX(name, null, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToLaTeX Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToLaTeXTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.latex"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToLaTeX(name, this.tempFolder + '/' + resFileName, null, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToLaTeX Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToLaTeXTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.latex"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToLaTeX(this.tempFolder + '/' + resFileName, null, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetPdfInStorageToMobiXml Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToMobiXmlTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToMobiXml(name, folder); + assertNotNull(response); + } + + + /** + * PutPdfInStorageToMobiXml Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToMobiXmlTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.mobi"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToMobiXml(name, this.tempFolder + '/' + resFileName, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * PutPdfInRequestToMobiXml Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToMobiXmlTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.mobi"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToMobiXml(this.tempFolder + '/' + resFileName, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetXfaPdfInStorageToAcroForm Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getXfaPdfInStorageToAcroFormTest() throws ApiException + { + String name = "PdfWithXfaForm.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getXfaPdfInStorageToAcroForm(name, folder); + assertNotNull(response); + } + + /** + * PutXfaPdfInStorageToAcroForm Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putXfaPdfInStorageToAcroFormTest() throws ApiException + { + String name = "PdfWithXfaForm.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.pdf"; + + SaaSposeResponse response = this.pdfApi.putXfaPdfInStorageToAcroForm(name, this.tempFolder + '/' + resFileName, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutXfaPdfInRequestToAcroForm Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putXfaPdfInRequestToAcroFormTest() throws ApiException + { + String name = "PdfWithXfaForm.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.pdf"; + + SaaSposeResponse response = this.pdfApi.putXfaPdfInRequestToAcroForm(this.tempFolder + '/' + resFileName, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetPdfInStorageToXml Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPdfInStorageToXmlTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + + + File response = this.pdfApi.getPdfInStorageToXml(name, folder); + assertNotNull(response); + } + + /** + * PutPdfInStorageToXml Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInStorageToXmlTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String folder = this.tempFolder; + String resFileName = "result.xml"; + + SaaSposeResponse response = this.pdfApi.putPdfInStorageToXml(name, this.tempFolder + '/' + resFileName, folder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * PutPdfInRequestToXml Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPdfInRequestToXmlTest() throws ApiException + { + String name = "4pages.pdf"; + File file = new File(testDataFolder + "/" + name); + String resFileName = "result.xml"; + + SaaSposeResponse response = this.pdfApi.putPdfInRequestToXml(this.tempFolder + '/' + resFileName, file); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + // Upload/Download Tests + /** + * UploadFile Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void uploadFileTest() throws ApiException + { + String name = "4pages.pdf"; + String path = this.tempFolder + '/' + name; + File file = new File(testDataFolder + "/" + name); + SaaSposeResponse response = this.pdfApi.putCreate(path, file, null, null); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + /** + * GetDownload Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getDownloadTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + String path = this.tempFolder + '/' + name; + + File response = this.pdfApi.getDownload(path, null, null); + assertNotNull(response); + } + + + // Privileges Tests + + /** + * PutPrivileges Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPrivilegesTest() throws ApiException + { + String name = "4pages.pdf"; + this.uploadFile(name); + + DocumentPrivilege documentPrivilege = new DocumentPrivilege(); + documentPrivilege.setAllowCopy(false); + documentPrivilege.setAllowPrint(false); + + String folder = this.tempFolder; + + SaaSposeResponse response = this.pdfApi.putPrivileges(name, documentPrivilege, folder); + assertEquals(response.getCode(), HttpStatusCode.OK); + } + + // Convert To PDF Tests + + /** + * GetEpubInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getEpubInStorageToPdfTest() throws ApiException + { + String name = "4pages.epub"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + + File response = this.pdfApi.getEpubInStorageToPdf(srcPath); + assertNotNull(response); + } + + + /** + * PutEpubInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putEpubInStorageToPdfTest() throws ApiException + { + String name = "4pages.epub"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + String resultName = "fromEpub.pdf"; + + SaaSposeResponse response = this.pdfApi.putEpubInStorageToPdf(resultName, srcPath, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * GetWebInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getWebInStorageToPdfTest() throws ApiException + { + String sourceUrl = "http://google.com"; + + File response = this.pdfApi.getWebInStorageToPdf(sourceUrl, null, null , null, + null, null, null, null); + assertNotNull(response); + } + + + /** + * PutWebInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putWebInStorageToPdfTest() throws ApiException + { + String sourceUrl = "http://google.com"; + String resultName = "fromWeb.pdf"; + + SaaSposeResponse response = this.pdfApi.putWebInStorageToPdf(resultName, sourceUrl, null, + null, null, null, null, null, + null, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetLaTeXInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getLaTeXInStorageToPdfTest() throws ApiException + { + String name = "TexExample.tex"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + + File response = this.pdfApi.getLaTeXInStorageToPdf(srcPath); + assertNotNull(response); + } + + + /** + * PutLaTeXInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putLaTeXInStorageToPdfTest() throws ApiException + { + String name = "TexExample.tex"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + String resultName = "fromTex.pdf"; + + SaaSposeResponse response = this.pdfApi.putLaTeXInStorageToPdf(resultName, srcPath, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetMhtInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getMhtInStorageToPdfTest() throws ApiException + { + String name = "MhtExample.mht"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + + File response = this.pdfApi.getMhtInStorageToPdf(srcPath); + assertNotNull(response); + } + + + /** + * PutMhtInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putMhtInStorageToPdfTest() throws ApiException + { + String name = "MhtExample.mht"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + String resultName = "fromMht.pdf"; + + SaaSposeResponse response = this.pdfApi.putMhtInStorageToPdf(resultName, srcPath, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetHtmlInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getHtmlInStorageToPdfTest() throws ApiException + { + String name = "HtmlWithImage.zip"; + this.uploadFile(name); + + String htmlFileName = "HtmlWithImage.html"; + double height = 650; + double width = 250; + String srcPath = this.tempFolder + '/' + name; + + File response = this.pdfApi.getHtmlInStorageToPdf(srcPath, htmlFileName, height, width, + null, null, null, null, null); + assertNotNull(response); + } + + + /** + * PutHtmlInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putHtmlInStorageToPdfTest() throws ApiException + { + String name = "HtmlWithImage.zip"; + this.uploadFile(name); + + String htmlFileName = "HtmlWithImage.html"; + double height = 650; + double width = 250; + String resultName = "fromHtml.pdf"; + String srcPath = this.tempFolder + '/' + name; + + + SaaSposeResponse response = this.pdfApi.putHtmlInStorageToPdf(name, srcPath, htmlFileName, + height, width, null, null, null, + null, null, null); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * GetXslFoInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getXslFoInStorageToPdfTest() throws ApiException + { + String name = "XslfoExample.xslfo"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + + File response = this.pdfApi.getXslFoInStorageToPdf(srcPath); + assertNotNull(response); + } + + + /** + * PutXslFoInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putXslFoInStorageToPdfTest() throws ApiException + { + String name = "XslfoExample.xslfo"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + String resultName = "fromXlsFo.pdf"; + + SaaSposeResponse response = this.pdfApi.putXslFoInStorageToPdf(resultName, srcPath, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetXpsInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getXpsInStorageToPdfTest() throws ApiException + { + String name = "Simple.xps"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + + File response = this.pdfApi.getXpsInStorageToPdf(srcPath); + assertNotNull(response); + } + + + /** + * PutXpsInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putXpsInStorageToPdfTest() throws ApiException + { + String name = "Simple.xps"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + String resultName = "fromXps.pdf"; + + SaaSposeResponse response = this.pdfApi.putXpsInStorageToPdf(resultName, srcPath, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetSvgInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getSvgInStorageToPdfTest() throws ApiException + { + String name = "Simple.svg"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + + File response = this.pdfApi.getSvgInStorageToPdf(srcPath, null, null, null, + null, null, null, null, null); + assertNotNull(response); + } + + + /** + * PutSvgInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putSvgInStorageToPdfTest() throws ApiException + { + String name = "Simple.svg"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + String resultName = "fromSvg.pdf"; + + SaaSposeResponse response = this.pdfApi.putSvgInStorageToPdf(resultName, srcPath, null, + null, null, null, null, null, + null, null, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + /** + * GetPclInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getPclInStorageToPdfTest() throws ApiException + { + String name = "template.pcl"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + + File response = this.pdfApi.getPclInStorageToPdf(srcPath); + assertNotNull(response); + } + + + /** + * PutPclInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putPclInStorageToPdfTest() throws ApiException + { + String name = "template.pcl"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + String resultName = "fromPcl.pdf"; + + SaaSposeResponse response = this.pdfApi.putPclInStorageToPdf(resultName, srcPath, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } + + + /** + * GetXmlInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void getXmlInStorageToPdfTest() throws ApiException + { + String name = "template.xml"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + + File response = this.pdfApi.getXmlInStorageToPdf(srcPath, null); + assertNotNull(response); + } + + + /** + * PutXmlInStorageToPdf Test + * @throws ApiException + * if the Api call fails + */ + + @Test + public void putXmlInStorageToPdfTest() throws ApiException + { + String name = "template.xml"; + this.uploadFile(name); + + + String srcPath = this.tempFolder + '/' + name; + String resultName = "fromXml.pdf"; + + SaaSposeResponse response = this.pdfApi.putXmlInStorageToPdf(resultName, srcPath, null, this.tempFolder); + assertEquals(response.getCode(), HttpStatusCode.CREATED); + } +} diff --git a/testData/33539.jpg b/testData/33539.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a9ed44887dbacdf8945572e5d965689c636b210 GIT binary patch literal 616736 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%0D4l%85 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 ll_hk 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

`#bRw(e4Om#}U6Op+s3cuP4sgmwP8TwL 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

iSxu-~Fm?3){J|*P**U}_xFA2->em@1%^R?OlOO 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 z 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