diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml deleted file mode 100644 index b00968d..0000000 --- a/.github/workflows/cmake.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: MinIO C++ Cmake - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -env: - # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) - BUILD_TYPE: Release - -jobs: - build: - # The CMake configure and build commands are platform agnostic and should work equally - # well on Windows or Mac. You can convert this to a matrix build if you need - # cross-platform coverage. - # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - - - name: Check style - run: | - wget --quiet -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - echo 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main' | sudo tee -a /etc/apt/sources.list - sudo apt-get -qy update - sudo apt-get -qy install clang-format-14 - clang-format --version - ./check-style.sh - - - name: Install vcpkg - run: | - wget --quiet -O vcpkg-master.zip https://github.com/microsoft/vcpkg/archive/refs/heads/master.zip - unzip -qq vcpkg-master.zip - ./vcpkg-master/bootstrap-vcpkg.sh - ./vcpkg-master/vcpkg integrate install - - - name: Run debug build - run: | - cmake -B ./build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=./vcpkg-master/scripts/buildsystems/vcpkg.cmake - cmake --build ./build --config Debug - - - name: Start MinIO server - run: | - wget --quiet https://dl.min.io/server/minio/release/linux-amd64/minio - chmod +x minio - mkdir -p ~/.minio/certs - cp ./tests/public.crt ./tests/private.key ~/.minio/certs/ - sudo cp ./tests/public.crt /usr/local/share/ca-certificates/ - sudo update-ca-certificates - MINIO_CI_CD=true ./minio server /tmp/test-xl/{1...4}/ & - sleep 10 - - - name: Run tests on debug build - run: | - S3HOST=localhost:9000 ACCESS_KEY=minioadmin SECRET_KEY=minioadmin ./build/tests/tests - - - name: Run release build - run: | - cmake --build ./build --target clean - cmake -B ./build -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=./vcpkg-master/scripts/buildsystems/vcpkg.cmake - cmake --build ./build --config Release - - - name: Run tests on release build - run: | - S3HOST=localhost:9000 ACCESS_KEY=minioadmin SECRET_KEY=minioadmin ./build/tests/tests - - - name: Test - working-directory: ${{github.workspace}}/build - # Execute tests defined by the CMake configuration. - # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: ctest -C ${{env.BUILD_TYPE}} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 4629ce4..0000000 --- a/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -*.d -*.o -s3tool -*~ -libminiocpp.so -*.a -*.so -build/ -*.pc -.vs -CMakeSettings.json -vcpkg_installed/ -docs/search -docs/*html -docs/*png -docs/*js -docs/*css -docs/*svg -docs/*map -docs/*md5 diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e69de29..0000000 diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 69a0bf8..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,124 +0,0 @@ -# MinIO C++ Library for Amazon S3 Compatible Cloud Storage -# Copyright 2021 MinIO, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -project(miniocpp) - -cmake_minimum_required(VERSION 3.10) - -macro(set_globals) - set(CMAKE_BUILD_TYPE_INIT Release) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_DEBUG} --coverage") - set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_DEBUG} --coverage") - set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} --coverage") - set(CMAKE_MODULE_LINKER_FLAGS_COVERAGE "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} --coverage") -endmacro() - -# specify the C++ standard -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED True) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -# prohibit in-source-builds -IF (${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR}) - MESSAGE(STATUS "In-source-builds are not allowed") - MESSAGE(STATUS "Clean your source directory (e.g. delete the CMakeCache.txt file)") - MESSAGE(FATAL_ERROR "Please create a separate build directory and call CMake again") -ENDIF (${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR}) - - -# Look for required libraries -SET(requiredlibs) - -include("${CMAKE_CURRENT_LIST_DIR}/cmake/modules/FindPugiXML.cmake") - -find_package(CURL REQUIRED) -IF(CURL_FOUND) - INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) - SET(requiredlibs ${requiredlibs} CURL::libcurl) -ELSE(CURL_FOUND) - MESSAGE(FATAL_ERROR "Could not find the CURL library and development files.") -ENDIF(CURL_FOUND) - -find_package(unofficial-curlpp CONFIG REQUIRED) -SET(requiredlibs ${requiredlibs} unofficial::curlpp::curlpp) - -find_package(OpenSSL REQUIRED) -IF(OPENSSL_FOUND) - INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) - SET(requiredlibs ${requiredlibs} OpenSSL::SSL OpenSSL::Crypto) # bugfix, because libcrypto is not found automatically -ELSE(OPENSSL_FOUND) - MESSAGE(FATAL_ERROR "Could not find the OpenSSL library and development files.") -ENDIF(OPENSSL_FOUND) - -find_package(PugiXML REQUIRED) -IF(PUGIXML_FOUND) - INCLUDE_DIRECTORIES(${PUGIXML_INCLUDE_DIR}) - SET(requiredlibs ${requiredlibs} pugixml) -ELSE(PUGIXML_FOUND) - MESSAGE(FATAL_ERROR "Could not find the pugixml library and development files.") -ENDIF(PUGIXML_FOUND) - -message(STATUS "Found required libs: ${requiredlibs}") - -INCLUDE (CheckIncludeFiles) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) - -SET(MINIOCPP_MAJOR_VERSION "0") -SET(MINIOCPP_MINOR_VERSION "1") -SET(MINIOCPP_PATCH_VERSION "0") - -add_subdirectory(include) -add_subdirectory(src) - - -option(BUILD_EXAMPLES "Build examples" ON) -if (BUILD_EXAMPLES) - add_subdirectory(examples) -endif (BUILD_EXAMPLES) - -option(BUILD_TESTS "Build tests" ON) -if (BUILD_TESTS) - add_subdirectory(tests) -endif (BUILD_TESTS) - -option(BUILD_DOC "Build documentation" ON) - -# check if Doxygen is installed -find_package(Doxygen) -if (DOXYGEN_FOUND) - # set input and output files - set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in) - set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) - - # request to configure the file - configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) - message("Doxygen build started") - - # note the option ALL which allows to build the docs together with the application - add_custom_target(doc_doxygen ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" - VERBATIM ) -else (DOXYGEN_FOUND) - message("Doxygen need to be installed to generate the doxygen documentation") -endif (DOXYGEN_FOUND) - -configure_file(miniocpp.pc.in miniocpp.pc @ONLY) -install(FILES ${CMAKE_BINARY_DIR}/miniocpp.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d645695..0000000 --- a/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md deleted file mode 100644 index 0acd6f1..0000000 --- a/README.md +++ /dev/null @@ -1,99 +0,0 @@ -> NOTE: This project is work in progress. - -# MinIO C++ Client SDK for Amazon S3 Compatible Cloud Storage [![Slack](https://slack.min.io/slack?type=svg)](https://slack.min.io) [![Sourcegraph](https://sourcegraph.com/github.com/minio/minio-cpp/-/badge.svg)](https://sourcegraph.com/github.com/minio/minio-cpp?badge) [![Apache V2 License](https://img.shields.io/badge/license-Apache%20V2-blue.svg)](https://github.com/minio/minio-cpp/blob/master/LICENSE) - -MinIO C++ SDK is Simple Storage Service (aka S3) client to perform bucket and object operations to any Amazon S3 compatible object storage service. - -For a complete list of APIs and examples, please take a look at the [MinIO C++ Client API Reference](https://minio-cpp.min.io/) - -## Build requirements -* A working C++ development environment supporting C++17 standards. -* CMake 3.10 or higher. -* [vcpkg](https://vcpkg.io/en/index.html). - -## Install from `vcpkg` -``` -vcpkg install minio-cpp -``` - -## Building source -```bash -$ git clone https://github.com/minio/minio-cpp -$ cd minio-cpp -$ wget --quiet -O vcpkg-master.zip https://github.com/microsoft/vcpkg/archive/refs/heads/master.zip -$ unzip -qq vcpkg-master.zip -$ ./vcpkg-master/bootstrap-vcpkg.sh -$ ./vcpkg-master/vcpkg integrate install -$ cmake -B ./build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=./vcpkg-master/scripts/buildsystems/vcpkg.cmake -$ cmake --build ./build --config Debug -``` - -## Example:: file-uploader.cc -```c++ -#include - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - std::string bucket_name = "asiatrip"; - - // Check 'asiatrip' bucket exist or not. - bool exist; - { - minio::s3::BucketExistsArgs args; - args.bucket_ = bucket_name; - - minio::s3::BucketExistsResponse resp = client.BucketExists(args); - if (!resp) { - std::cout << "unable to do bucket existence check; " << resp.GetError() - << std::endl; - return EXIT_FAILURE; - } - - exist = resp.exist_; - } - - // Make 'asiatrip' bucket if not exist. - if (!exist) { - minio::s3::MakeBucketArgs args; - args.bucket_ = bucket_name; - - minio::s3::MakeBucketResponse resp = client.MakeBucket(args); - if (!resp) { - std::cout << "unable to create bucket; " << resp.GetError() << std::endl; - return EXIT_FAILURE; - } - } - - // Upload '/home/user/Photos/asiaphotos.zip' as object name - // 'asiaphotos-2015.zip' to bucket 'asiatrip'. - minio::s3::UploadObjectArgs args; - args.bucket_ = bucket_name; - args.object_ = "asiaphotos-2015.zip"; - args.filename_ = "/home/user/Photos/asiaphotos.zip"; - - minio::s3::UploadObjectResponse resp = client.UploadObject(args); - if (!resp) { - std::cout << "unable to upload object; " << resp.GetError() << std::endl; - return EXIT_FAILURE; - } - - std::cout << "'/home/user/Photos/asiaphotos.zip' is successfully uploaded as " - << "object 'asiaphotos-2015.zip' to bucket 'asiatrip'." - << std::endl; - - return EXIT_SUCCESS; -} -``` - -## License -This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0), see [LICENSE](https://github.com/minio/minio-cpp/blob/master/LICENSE) for more information. diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..281c02c --- /dev/null +++ b/annotated.html @@ -0,0 +1,143 @@ + + + + + + + +MinIO C++ SDK: Class List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
+ + + + diff --git a/args_8h_source.html b/args_8h_source.html new file mode 100644 index 0000000..dfcb241 --- /dev/null +++ b/args_8h_source.html @@ -0,0 +1,351 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/args.h Source File + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
args.h
+
+
+
1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
+
2 // Copyright 2022 MinIO, Inc.
+
3 //
+
4 // Licensed under the Apache License, Version 2.0 (the "License");
+
5 // you may not use this file except in compliance with the License.
+
6 // You may obtain a copy of the License at
+
7 //
+
8 // http://www.apache.org/licenses/LICENSE-2.0
+
9 //
+
10 // Unless required by applicable law or agreed to in writing, software
+
11 // distributed under the License is distributed on an "AS IS" BASIS,
+
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
13 // See the License for the specific language governing permissions and
+
14 // limitations under the License.
+
15 
+
16 #ifndef _MINIO_S3_ARGS_H
+
17 #define _MINIO_S3_ARGS_H
+
18 
+
19 #include <filesystem>
+
20 
+
21 #include "http.h"
+
22 #include "sse.h"
+
23 #include "types.h"
+
24 
+
25 namespace minio {
+
26 namespace s3 {
+
27 struct BaseArgs {
+
28  utils::Multimap extra_headers;
+
29  utils::Multimap extra_query_params;
+
30 }; // struct BaseArgs
+
31 
+
32 struct BucketArgs : public BaseArgs {
+
33  std::string bucket;
+
34  std::string region;
+
35 
+
36  error::Error Validate();
+
37 }; // struct BucketArgs
+
38 
+
39 struct ObjectArgs : public BucketArgs {
+
40  std::string object;
+
41 
+
42  error::Error Validate();
+
43 }; // struct ObjectArgs
+
44 
+
45 struct ObjectWriteArgs : public ObjectArgs {
+
46  utils::Multimap headers;
+
47  utils::Multimap user_metadata;
+
48  Sse *sse = NULL;
+
49  std::map<std::string, std::string> tags;
+
50  Retention *retention = NULL;
+
51  bool legal_hold = false;
+
52 
+
53  utils::Multimap Headers();
+
54 }; // struct ObjectWriteArgs
+
55 
+
56 struct ObjectVersionArgs : public ObjectArgs {
+
57  std::string version_id;
+
58 }; // struct ObjectVersionArgs
+
59 
+ +
61  SseCustomerKey *ssec = NULL;
+
62 }; // struct ObjectReadArgs
+
63 
+ +
65  size_t *offset = NULL;
+
66  size_t *length = NULL;
+
67  std::string match_etag;
+
68  std::string not_match_etag;
+
69  utils::Time modified_since;
+
70  utils::Time unmodified_since;
+
71 
+
72  utils::Multimap Headers();
+
73  utils::Multimap CopyHeaders();
+
74 }; // struct ObjectConditionalReadArgs
+
75 
+
76 struct MakeBucketArgs : public BucketArgs {
+
77  bool object_lock = false;
+
78 
+
79  error::Error Validate();
+
80 }; // struct MakeBucketArgs
+
81 
+ +
83 
+ +
85 
+ +
87 
+ +
89  std::string upload_id;
+
90 
+
91  error::Error Validate();
+
92 }; // struct AbortMultipartUploadArgs
+
93 
+ +
95  std::string upload_id;
+
96  std::list<Part> parts;
+
97 
+
98  error::Error Validate();
+
99 }; // struct CompleteMultipartUploadArgs
+
100 
+ +
102  utils::Multimap headers;
+
103 }; // struct CreateMultipartUploadArgs
+
104 
+ +
106  long object_size = -1;
+
107  size_t part_size = 0;
+
108  long part_count = 0;
+
109  std::string content_type;
+
110 }; // struct PutObjectBaseArgs
+
111 
+ +
113  std::string_view data;
+
114  utils::Multimap query_params;
+
115 }; // struct PutObjectApiArgs
+
116 
+ +
118  std::string upload_id;
+
119  unsigned int part_number;
+
120  std::string_view data;
+
121 
+
122  error::Error Validate();
+
123 }; // struct UploadPartArgs
+
124 
+ +
126  std::string upload_id;
+
127  unsigned int part_number;
+
128  utils::Multimap headers;
+
129 
+
130  error::Error Validate();
+
131 }; // struct UploadPartCopyArgs
+
132 
+ +
134 
+ +
136 
+ +
138  std::string filename;
+
139  bool overwrite;
+
140 
+
141  error::Error Validate();
+
142 }; // struct DownloadObjectArgs
+
143 
+ +
145  http::DataCallback data_callback;
+
146  void *user_arg = NULL;
+
147 
+
148  error::Error Validate();
+
149 }; // struct GetObjectArgs
+
150 
+
151 struct ListObjectsArgs : public BucketArgs {
+
152  std::string delimiter;
+
153  bool use_url_encoding_type = true;
+
154  std::string marker; // only for ListObjectsV1.
+
155  std::string start_after; // only for ListObjectsV2.
+
156  std::string key_marker; // only for GetObjectVersions.
+
157  unsigned int max_keys = 1000;
+
158  std::string prefix;
+
159  std::string continuation_token; // only for ListObjectsV2.
+
160  bool fetch_owner = false; // only for ListObjectsV2.
+
161  std::string version_id_marker; // only for GetObjectVersions.
+
162  bool include_user_metadata = false; // MinIO extension for ListObjectsV2.
+
163  bool recursive = false;
+
164  bool use_api_v1 = false;
+
165  bool include_versions = false;
+
166 }; // struct ListObjectsArgs
+
167 
+ +
169  std::string delimiter;
+
170  std::string encoding_type;
+
171  unsigned int max_keys = 1000;
+
172  std::string prefix;
+
173 }; // struct ListObjectsCommonArgs
+
174 
+ +
176  std::string marker;
+
177 
+ + +
180 }; // struct ListObjectsV1Args
+
181 
+ +
183  std::string start_after;
+
184  std::string continuation_token;
+
185  bool fetch_owner;
+
186  bool include_user_metadata;
+
187 
+ + +
190 }; // struct ListObjectsV2Args
+
191 
+ +
193  std::string key_marker;
+
194  std::string version_id_marker;
+
195 
+ + +
198 }; // struct ListObjectVersionsArgs
+
199 
+ +
201  std::istream &stream;
+
202 
+
203  PutObjectArgs(std::istream &stream, long objectsize, long partsize);
+
204  error::Error Validate();
+
205 }; // struct PutObjectArgs
+
206 
+ +
208 
+ +
210  CopySource source;
+
211  Directive *metadata_directive = NULL;
+
212  Directive *tagging_directive = NULL;
+
213 
+
214  error::Error Validate();
+
215 }; // struct CopyObjectArgs
+
216 
+ +
218  error::Error BuildHeaders(size_t object_size, std::string etag);
+
219  size_t ObjectSize();
+
220  utils::Multimap Headers();
+
221 
+
222  private:
+
223  long object_size_ = -1;
+
224  utils::Multimap headers_;
+
225 }; // struct ComposeSource
+
226 
+ +
228  std::list<ComposeSource> sources;
+
229 
+
230  error::Error Validate();
+
231 }; // struct ComposeObjectArgs
+
232 
+ +
234  std::string filename;
+
235 
+
236  error::Error Validate();
+
237 }; // struct PutObjectArgs
+
238 } // namespace s3
+
239 } // namespace minio
+
240 #endif // #ifndef __MINIO_S3_ARGS_H
+
Definition: error.h:23
+
Definition: sse.h:35
+
Definition: sse.h:23
+
Definition: utils.h:119
+
Definition: utils.h:97
+ +
Definition: args.h:27
+
Definition: args.h:32
+ +
Definition: args.h:227
+
Definition: args.h:217
+
Definition: args.h:209
+ +
Definition: args.h:137
+
Definition: args.h:144
+
Definition: args.h:192
+
Definition: args.h:151
+
Definition: args.h:168
+
Definition: args.h:175
+
Definition: args.h:182
+
Definition: args.h:76
+
Definition: args.h:39
+ +
Definition: args.h:60
+
Definition: args.h:56
+
Definition: args.h:45
+
Definition: args.h:112
+
Definition: args.h:200
+
Definition: args.h:105
+
Definition: types.h:118
+
Definition: args.h:233
+
Definition: args.h:117
+
Definition: args.h:125
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/bc_s.png differ diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/bdwn.png differ diff --git a/check-style.sh b/check-style.sh deleted file mode 100755 index 24ba6ad..0000000 --- a/check-style.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -function clang_format() { - if clang-format --output-replacements-xml --style=Google "$@" | grep -q ' + + + + + + +MinIO C++ SDK: Class Index + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
A | B | C | D | E | G | I | L | M | O | P | R | S | T | U
+
+
+
A
+
AbortMultipartUploadArgs (minio::s3)
+
+
B
+
BaseArgs (minio::s3)
BaseUrl (minio::http)
Bucket (minio::s3)
BucketArgs (minio::s3)
BucketExistsResponse (minio::s3)
+
+
C
+
CharBuffer (minio::utils)
Client (minio::s3)
CompleteMultipartUploadArgs (minio::s3)
CompleteMultipartUploadResponse (minio::s3)
ComposeObjectArgs (minio::s3)
ComposeSource (minio::s3)
CopyObjectArgs (minio::s3)
CreateMultipartUploadArgs (minio::s3)
CreateMultipartUploadResponse (minio::s3)
Credentials (minio::creds)
+
+
D
+
DataCallbackArgs (minio::http)
DownloadObjectArgs (minio::s3)
+
+
E
+
Error (minio::error)
+
+
G
+
GetObjectArgs (minio::s3)
GetRegionResponse (minio::s3)
+
+
I
+
Item (minio::s3)
+
+
L
+
ListBucketsResponse (minio::s3)
ListObjectsArgs (minio::s3)
ListObjectsCommonArgs (minio::s3)
ListObjectsResponse (minio::s3)
ListObjectsResult (minio::s3)
ListObjectsV1Args (minio::s3)
ListObjectsV2Args (minio::s3)
ListObjectVersionsArgs (minio::s3)
+
+
M
+
MakeBucketArgs (minio::s3)
Multimap (minio::utils)
+
+
O
+
ObjectArgs (minio::s3)
ObjectConditionalReadArgs (minio::s3)
ObjectReadArgs (minio::s3)
ObjectVersionArgs (minio::s3)
ObjectWriteArgs (minio::s3)
+
+
P
+
Part (minio::s3)
Provider (minio::creds)
PutObjectApiArgs (minio::s3)
PutObjectArgs (minio::s3)
PutObjectBaseArgs (minio::s3)
PutObjectResponse (minio::s3)
+
+
R
+
Request (minio::http)
RequestBuilder (minio::s3)
Response (minio::http)
Response (minio::s3)
Retention (minio::s3)
+
+
S
+
Sse (minio::s3)
SseCustomerKey (minio::s3)
SseKms (minio::s3)
SseS3 (minio::s3)
StaticProvider (minio::creds)
StatObjectResponse (minio::s3)
+
+
T
+
Time (minio::utils)
+
+
U
+
UploadObjectArgs (minio::s3)
UploadPartArgs (minio::s3)
UploadPartCopyArgs (minio::s3)
Url (minio::utils)
+
+
+ + + + diff --git a/classminio_1_1creds_1_1Credentials-members.html b/classminio_1_1creds_1_1Credentials-members.html new file mode 100644 index 0000000..13d8176 --- /dev/null +++ b/classminio_1_1creds_1_1Credentials-members.html @@ -0,0 +1,87 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::creds::Credentials Member List
+
+
+ +

This is the complete list of members for minio::creds::Credentials, including all inherited members.

+ + + + + + + +
AccessKey() (defined in minio::creds::Credentials)minio::creds::Credentials
Credentials(const Credentials &creds) (defined in minio::creds::Credentials)minio::creds::Credentials
Credentials(std::string_view access_key, std::string_view secret_key, std::string_view session_token="", unsigned int expiration=0) (defined in minio::creds::Credentials)minio::creds::Credentials
IsExpired() (defined in minio::creds::Credentials)minio::creds::Credentials
SecretKey() (defined in minio::creds::Credentials)minio::creds::Credentials
SessionToken() (defined in minio::creds::Credentials)minio::creds::Credentials
+ + + + diff --git a/classminio_1_1creds_1_1Credentials.html b/classminio_1_1creds_1_1Credentials.html new file mode 100644 index 0000000..87489e9 --- /dev/null +++ b/classminio_1_1creds_1_1Credentials.html @@ -0,0 +1,111 @@ + + + + + + + +MinIO C++ SDK: minio::creds::Credentials Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::creds::Credentials Class Reference
+
+
+ +

#include <creds.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

Credentials (const Credentials &creds)
 
Credentials (std::string_view access_key, std::string_view secret_key, std::string_view session_token="", unsigned int expiration=0)
 
+std::string AccessKey ()
 
+std::string SecretKey ()
 
+std::string SessionToken ()
 
+bool IsExpired ()
 
+

Detailed Description

+

Credentials contains access key and secret key with optional session token and expiration.

+

The documentation for this class was generated from the following files:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/creds.h
  • +
  • /home/bala/devel/github.com/minio/minio-cpp/src/creds.cc
  • +
+
+ + + + diff --git a/classminio_1_1creds_1_1Provider-members.html b/classminio_1_1creds_1_1Provider-members.html new file mode 100644 index 0000000..9e8d6d8 --- /dev/null +++ b/classminio_1_1creds_1_1Provider-members.html @@ -0,0 +1,84 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::creds::Provider Member List
+
+
+ +

This is the complete list of members for minio::creds::Provider, including all inherited members.

+ + + + +
Fetch()=0 (defined in minio::creds::Provider)minio::creds::Providerpure virtual
Provider() (defined in minio::creds::Provider)minio::creds::Providerinline
~Provider() (defined in minio::creds::Provider)minio::creds::Providerinlinevirtual
+ + + + diff --git a/classminio_1_1creds_1_1Provider.html b/classminio_1_1creds_1_1Provider.html new file mode 100644 index 0000000..38398dd --- /dev/null +++ b/classminio_1_1creds_1_1Provider.html @@ -0,0 +1,104 @@ + + + + + + + +MinIO C++ SDK: minio::creds::Provider Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::creds::Provider Class Referenceabstract
+
+
+ +

#include <creds.h>

+
+Inheritance diagram for minio::creds::Provider:
+
+
+ + +minio::creds::StaticProvider + +
+ + + + +

+Public Member Functions

+virtual Credentials Fetch ()=0
 
+

Detailed Description

+

Credential provider interface.

+

The documentation for this class was generated from the following file:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/creds.h
  • +
+
+ + + + diff --git a/classminio_1_1creds_1_1Provider.png b/classminio_1_1creds_1_1Provider.png new file mode 100644 index 0000000..785a2b3 Binary files /dev/null and b/classminio_1_1creds_1_1Provider.png differ diff --git a/classminio_1_1creds_1_1StaticProvider-members.html b/classminio_1_1creds_1_1StaticProvider-members.html new file mode 100644 index 0000000..e506cb9 --- /dev/null +++ b/classminio_1_1creds_1_1StaticProvider-members.html @@ -0,0 +1,86 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::creds::StaticProvider Member List
+
+
+ +

This is the complete list of members for minio::creds::StaticProvider, including all inherited members.

+ + + + + + +
Fetch() (defined in minio::creds::StaticProvider)minio::creds::StaticProvidervirtual
Provider() (defined in minio::creds::Provider)minio::creds::Providerinline
StaticProvider(std::string_view access_key, std::string_view secret_key, std::string_view session_token="") (defined in minio::creds::StaticProvider)minio::creds::StaticProvider
~Provider() (defined in minio::creds::Provider)minio::creds::Providerinlinevirtual
~StaticProvider() (defined in minio::creds::StaticProvider)minio::creds::StaticProvider
+ + + + diff --git a/classminio_1_1creds_1_1StaticProvider.html b/classminio_1_1creds_1_1StaticProvider.html new file mode 100644 index 0000000..d8b46a1 --- /dev/null +++ b/classminio_1_1creds_1_1StaticProvider.html @@ -0,0 +1,108 @@ + + + + + + + +MinIO C++ SDK: minio::creds::StaticProvider Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::creds::StaticProvider Class Reference
+
+
+ +

#include <creds.h>

+
+Inheritance diagram for minio::creds::StaticProvider:
+
+
+ + +minio::creds::Provider + +
+ + + + + + +

+Public Member Functions

StaticProvider (std::string_view access_key, std::string_view secret_key, std::string_view session_token="")
 
+Credentials Fetch ()
 
+

Detailed Description

+

Static credential provider.

+

The documentation for this class was generated from the following files:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/creds.h
  • +
  • /home/bala/devel/github.com/minio/minio-cpp/src/creds.cc
  • +
+
+ + + + diff --git a/classminio_1_1creds_1_1StaticProvider.png b/classminio_1_1creds_1_1StaticProvider.png new file mode 100644 index 0000000..57d7a31 Binary files /dev/null and b/classminio_1_1creds_1_1StaticProvider.png differ diff --git a/classminio_1_1error_1_1Error-members.html b/classminio_1_1error_1_1Error-members.html new file mode 100644 index 0000000..39d334c --- /dev/null +++ b/classminio_1_1error_1_1Error-members.html @@ -0,0 +1,85 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::error::Error Member List
+
+
+ +

This is the complete list of members for minio::error::Error, including all inherited members.

+ + + + + +
Error() (defined in minio::error::Error)minio::error::Errorinline
Error(std::string_view msg) (defined in minio::error::Error)minio::error::Errorinline
operator bool() const (defined in minio::error::Error)minio::error::Errorinline
String() (defined in minio::error::Error)minio::error::Errorinline
+ + + + diff --git a/classminio_1_1error_1_1Error.html b/classminio_1_1error_1_1Error.html new file mode 100644 index 0000000..67cc3c3 --- /dev/null +++ b/classminio_1_1error_1_1Error.html @@ -0,0 +1,97 @@ + + + + + + + +MinIO C++ SDK: minio::error::Error Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::error::Error Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

Error (std::string_view msg)
 
+std::string String ()
 
operator bool () const
 
+
The documentation for this class was generated from the following file:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/error.h
  • +
+
+ + + + diff --git a/classminio_1_1s3_1_1Client-members.html b/classminio_1_1s3_1_1Client-members.html new file mode 100644 index 0000000..1c7ff00 --- /dev/null +++ b/classminio_1_1s3_1_1Client-members.html @@ -0,0 +1,115 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::s3::Client Member List
+
+
+ +

This is the complete list of members for minio::s3::Client, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AbortMultipartUpload(AbortMultipartUploadArgs args) (defined in minio::s3::Client)minio::s3::Client
BucketExists(BucketExistsArgs args) (defined in minio::s3::Client)minio::s3::Client
CalculatePartCount(size_t &part_count, std::list< ComposeSource > sources) (defined in minio::s3::Client)minio::s3::Client
Client(http::BaseUrl &base_url, creds::Provider *provider=NULL) (defined in minio::s3::Client)minio::s3::Client
CompleteMultipartUpload(CompleteMultipartUploadArgs args) (defined in minio::s3::Client)minio::s3::Client
ComposeObject(ComposeObjectArgs args, std::string &upload_id) (defined in minio::s3::Client)minio::s3::Client
ComposeObject(ComposeObjectArgs args) (defined in minio::s3::Client)minio::s3::Client
CopyObject(CopyObjectArgs args) (defined in minio::s3::Client)minio::s3::Client
CreateMultipartUpload(CreateMultipartUploadArgs args) (defined in minio::s3::Client)minio::s3::Client
Debug(bool flag) (defined in minio::s3::Client)minio::s3::Clientinline
DownloadObject(DownloadObjectArgs args) (defined in minio::s3::Client)minio::s3::Client
Execute(RequestBuilder &builder) (defined in minio::s3::Client)minio::s3::Client
execute(RequestBuilder &builder) (defined in minio::s3::Client)minio::s3::Client
GetErrorResponse(http::Response resp, std::string_view resource, http::Method method, std::string_view bucket_name, std::string_view object_name) (defined in minio::s3::Client)minio::s3::Client
GetObject(GetObjectArgs args) (defined in minio::s3::Client)minio::s3::Client
GetRegion(std::string_view bucket_name, std::string_view region="") (defined in minio::s3::Client)minio::s3::Client
HandleRedirectResponse(std::string &code, std::string &message, int status_code, http::Method method, utils::Multimap headers, std::string_view bucket_name, bool retry=false) (defined in minio::s3::Client)minio::s3::Client
IgnoreCertCheck(bool flag) (defined in minio::s3::Client)minio::s3::Clientinline
ListBuckets(ListBucketsArgs args) (defined in minio::s3::Client)minio::s3::Client
ListBuckets() (defined in minio::s3::Client)minio::s3::Client
ListObjects(ListObjectsArgs args) (defined in minio::s3::Client)minio::s3::Client
ListObjectsV1(ListObjectsV1Args args) (defined in minio::s3::Client)minio::s3::Client
ListObjectsV2(ListObjectsV2Args args) (defined in minio::s3::Client)minio::s3::Client
ListObjectVersions(ListObjectVersionsArgs args) (defined in minio::s3::Client)minio::s3::Client
MakeBucket(MakeBucketArgs args) (defined in minio::s3::Client)minio::s3::Client
PutObject(PutObjectApiArgs args) (defined in minio::s3::Client)minio::s3::Client
PutObject(PutObjectArgs &args, std::string &upload_id, char *buf) (defined in minio::s3::Client)minio::s3::Client
PutObject(PutObjectArgs args) (defined in minio::s3::Client)minio::s3::Client
RemoveBucket(RemoveBucketArgs args) (defined in minio::s3::Client)minio::s3::Client
RemoveObject(RemoveObjectArgs args) (defined in minio::s3::Client)minio::s3::Client
StatObject(StatObjectArgs args) (defined in minio::s3::Client)minio::s3::Client
UploadObject(UploadObjectArgs args) (defined in minio::s3::Client)minio::s3::Client
UploadPart(UploadPartArgs args) (defined in minio::s3::Client)minio::s3::Client
UploadPartCopy(UploadPartCopyArgs args) (defined in minio::s3::Client)minio::s3::Client
+ + + + diff --git a/classminio_1_1s3_1_1Client.html b/classminio_1_1s3_1_1Client.html new file mode 100644 index 0000000..1b16d59 --- /dev/null +++ b/classminio_1_1s3_1_1Client.html @@ -0,0 +1,195 @@ + + + + + + + +MinIO C++ SDK: minio::s3::Client Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::s3::Client Class Reference
+
+
+ +

#include <client.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Client (http::BaseUrl &base_url, creds::Provider *provider=NULL)
 
+void Debug (bool flag)
 
+void IgnoreCertCheck (bool flag)
 
+void HandleRedirectResponse (std::string &code, std::string &message, int status_code, http::Method method, utils::Multimap headers, std::string_view bucket_name, bool retry=false)
 
+Response GetErrorResponse (http::Response resp, std::string_view resource, http::Method method, std::string_view bucket_name, std::string_view object_name)
 
+Response execute (RequestBuilder &builder)
 
+Response Execute (RequestBuilder &builder)
 
+ListObjectsResponse ListObjectsV1 (ListObjectsV1Args args)
 
+ListObjectsResponse ListObjectsV2 (ListObjectsV2Args args)
 
+ListObjectsResponse ListObjectVersions (ListObjectVersionsArgs args)
 
+GetRegionResponse GetRegion (std::string_view bucket_name, std::string_view region="")
 
+MakeBucketResponse MakeBucket (MakeBucketArgs args)
 
+ListBucketsResponse ListBuckets (ListBucketsArgs args)
 
+ListBucketsResponse ListBuckets ()
 
+BucketExistsResponse BucketExists (BucketExistsArgs args)
 
+RemoveBucketResponse RemoveBucket (RemoveBucketArgs args)
 
+AbortMultipartUploadResponse AbortMultipartUpload (AbortMultipartUploadArgs args)
 
+CompleteMultipartUploadResponse CompleteMultipartUpload (CompleteMultipartUploadArgs args)
 
+CreateMultipartUploadResponse CreateMultipartUpload (CreateMultipartUploadArgs args)
 
+PutObjectResponse PutObject (PutObjectApiArgs args)
 
+UploadPartResponse UploadPart (UploadPartArgs args)
 
+UploadPartCopyResponse UploadPartCopy (UploadPartCopyArgs args)
 
+StatObjectResponse StatObject (StatObjectArgs args)
 
+RemoveObjectResponse RemoveObject (RemoveObjectArgs args)
 
+DownloadObjectResponse DownloadObject (DownloadObjectArgs args)
 
+GetObjectResponse GetObject (GetObjectArgs args)
 
+ListObjectsResult ListObjects (ListObjectsArgs args)
 
+PutObjectResponse PutObject (PutObjectArgs &args, std::string &upload_id, char *buf)
 
+PutObjectResponse PutObject (PutObjectArgs args)
 
+CopyObjectResponse CopyObject (CopyObjectArgs args)
 
+StatObjectResponse CalculatePartCount (size_t &part_count, std::list< ComposeSource > sources)
 
+ComposeObjectResponse ComposeObject (ComposeObjectArgs args, std::string &upload_id)
 
+ComposeObjectResponse ComposeObject (ComposeObjectArgs args)
 
+UploadObjectResponse UploadObject (UploadObjectArgs args)
 
+

Detailed Description

+

Simple Storage Service (aka S3) client to perform bucket and object operations asynchronously.

+

The documentation for this class was generated from the following files:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/client.h
  • +
  • /home/bala/devel/github.com/minio/minio-cpp/src/client.cc
  • +
+
+ + + + diff --git a/classminio_1_1s3_1_1ListObjectsResult-members.html b/classminio_1_1s3_1_1ListObjectsResult-members.html new file mode 100644 index 0000000..137a57d --- /dev/null +++ b/classminio_1_1s3_1_1ListObjectsResult-members.html @@ -0,0 +1,87 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::s3::ListObjectsResult Member List
+
+
+ +

This is the complete list of members for minio::s3::ListObjectsResult, including all inherited members.

+ + + + + + + +
ListObjectsResult(error::Error err) (defined in minio::s3::ListObjectsResult)minio::s3::ListObjectsResult
ListObjectsResult(Client *client, ListObjectsArgs *args) (defined in minio::s3::ListObjectsResult)minio::s3::ListObjectsResult
operator bool() const (defined in minio::s3::ListObjectsResult)minio::s3::ListObjectsResultinline
operator*() const (defined in minio::s3::ListObjectsResult)minio::s3::ListObjectsResultinline
operator++() (defined in minio::s3::ListObjectsResult)minio::s3::ListObjectsResultinline
operator++(int) (defined in minio::s3::ListObjectsResult)minio::s3::ListObjectsResultinline
+ + + + diff --git a/classminio_1_1s3_1_1ListObjectsResult.html b/classminio_1_1s3_1_1ListObjectsResult.html new file mode 100644 index 0000000..5d68409 --- /dev/null +++ b/classminio_1_1s3_1_1ListObjectsResult.html @@ -0,0 +1,107 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ListObjectsResult Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::s3::ListObjectsResult Class Reference
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

ListObjectsResult (error::Error err)
 
ListObjectsResult (Client *client, ListObjectsArgs *args)
 
+Itemoperator* () const
 
operator bool () const
 
+ListObjectsResultoperator++ ()
 
+ListObjectsResult operator++ (int)
 
+
The documentation for this class was generated from the following files:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/client.h
  • +
  • /home/bala/devel/github.com/minio/minio-cpp/src/client.cc
  • +
+
+ + + + diff --git a/classminio_1_1s3_1_1Sse-members.html b/classminio_1_1s3_1_1Sse-members.html new file mode 100644 index 0000000..78e8fce --- /dev/null +++ b/classminio_1_1s3_1_1Sse-members.html @@ -0,0 +1,87 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::s3::Sse Member List
+
+
+ +

This is the complete list of members for minio::s3::Sse, including all inherited members.

+ + + + + + + +
CopyHeaders() (defined in minio::s3::Sse)minio::s3::Sseinline
empty_ (defined in minio::s3::Sse)minio::s3::Sse
Headers()=0 (defined in minio::s3::Sse)minio::s3::Ssepure virtual
Sse() (defined in minio::s3::Sse)minio::s3::Sseinline
TlsRequired() (defined in minio::s3::Sse)minio::s3::Sseinline
~Sse() (defined in minio::s3::Sse)minio::s3::Sseinlinevirtual
+ + + + diff --git a/classminio_1_1s3_1_1Sse.html b/classminio_1_1s3_1_1Sse.html new file mode 100644 index 0000000..794a590 --- /dev/null +++ b/classminio_1_1s3_1_1Sse.html @@ -0,0 +1,115 @@ + + + + + + + +MinIO C++ SDK: minio::s3::Sse Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::s3::Sse Class Referenceabstract
+
+
+
+Inheritance diagram for minio::s3::Sse:
+
+
+ + +minio::s3::SseCustomerKey +minio::s3::SseKms +minio::s3::SseS3 + +
+ + + + + + + + +

+Public Member Functions

+bool TlsRequired ()
 
+utils::Multimap CopyHeaders ()
 
+virtual utils::Multimap Headers ()=0
 
+ + + +

+Public Attributes

+utils::Multimap empty_
 
+
The documentation for this class was generated from the following file:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/sse.h
  • +
+
+ + + + diff --git a/classminio_1_1s3_1_1Sse.png b/classminio_1_1s3_1_1Sse.png new file mode 100644 index 0000000..81119ba Binary files /dev/null and b/classminio_1_1s3_1_1Sse.png differ diff --git a/classminio_1_1s3_1_1SseCustomerKey-members.html b/classminio_1_1s3_1_1SseCustomerKey-members.html new file mode 100644 index 0000000..437746d --- /dev/null +++ b/classminio_1_1s3_1_1SseCustomerKey-members.html @@ -0,0 +1,88 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::s3::SseCustomerKey Member List
+
+
+ +

This is the complete list of members for minio::s3::SseCustomerKey, including all inherited members.

+ + + + + + + + +
CopyHeaders() (defined in minio::s3::SseCustomerKey)minio::s3::SseCustomerKeyinline
empty_ (defined in minio::s3::Sse)minio::s3::Sse
Headers() (defined in minio::s3::SseCustomerKey)minio::s3::SseCustomerKeyinlinevirtual
Sse() (defined in minio::s3::Sse)minio::s3::Sseinline
SseCustomerKey(std::string_view key) (defined in minio::s3::SseCustomerKey)minio::s3::SseCustomerKey
TlsRequired() (defined in minio::s3::Sse)minio::s3::Sseinline
~Sse() (defined in minio::s3::Sse)minio::s3::Sseinlinevirtual
+ + + + diff --git a/classminio_1_1s3_1_1SseCustomerKey.html b/classminio_1_1s3_1_1SseCustomerKey.html new file mode 100644 index 0000000..9d2ec0b --- /dev/null +++ b/classminio_1_1s3_1_1SseCustomerKey.html @@ -0,0 +1,121 @@ + + + + + + + +MinIO C++ SDK: minio::s3::SseCustomerKey Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::s3::SseCustomerKey Class Reference
+
+
+
+Inheritance diagram for minio::s3::SseCustomerKey:
+
+
+ + +minio::s3::Sse + +
+ + + + + + + + + + + + + +

+Public Member Functions

SseCustomerKey (std::string_view key)
 
+utils::Multimap Headers ()
 
+utils::Multimap CopyHeaders ()
 
- Public Member Functions inherited from minio::s3::Sse
+bool TlsRequired ()
 
+utils::Multimap CopyHeaders ()
 
+ + + + +

+Additional Inherited Members

- Public Attributes inherited from minio::s3::Sse
+utils::Multimap empty_
 
+
The documentation for this class was generated from the following files:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/sse.h
  • +
  • /home/bala/devel/github.com/minio/minio-cpp/src/sse.cc
  • +
+
+ + + + diff --git a/classminio_1_1s3_1_1SseCustomerKey.png b/classminio_1_1s3_1_1SseCustomerKey.png new file mode 100644 index 0000000..b404e65 Binary files /dev/null and b/classminio_1_1s3_1_1SseCustomerKey.png differ diff --git a/classminio_1_1s3_1_1SseKms-members.html b/classminio_1_1s3_1_1SseKms-members.html new file mode 100644 index 0000000..1e8a98c --- /dev/null +++ b/classminio_1_1s3_1_1SseKms-members.html @@ -0,0 +1,88 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::s3::SseKms Member List
+
+
+ +

This is the complete list of members for minio::s3::SseKms, including all inherited members.

+ + + + + + + + +
CopyHeaders() (defined in minio::s3::Sse)minio::s3::Sseinline
empty_ (defined in minio::s3::Sse)minio::s3::Sse
Headers() (defined in minio::s3::SseKms)minio::s3::SseKmsinlinevirtual
Sse() (defined in minio::s3::Sse)minio::s3::Sseinline
SseKms(std::string_view key, std::string_view context) (defined in minio::s3::SseKms)minio::s3::SseKms
TlsRequired() (defined in minio::s3::Sse)minio::s3::Sseinline
~Sse() (defined in minio::s3::Sse)minio::s3::Sseinlinevirtual
+ + + + diff --git a/classminio_1_1s3_1_1SseKms.html b/classminio_1_1s3_1_1SseKms.html new file mode 100644 index 0000000..c369432 --- /dev/null +++ b/classminio_1_1s3_1_1SseKms.html @@ -0,0 +1,118 @@ + + + + + + + +MinIO C++ SDK: minio::s3::SseKms Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::s3::SseKms Class Reference
+
+
+
+Inheritance diagram for minio::s3::SseKms:
+
+
+ + +minio::s3::Sse + +
+ + + + + + + + + + + +

+Public Member Functions

SseKms (std::string_view key, std::string_view context)
 
+utils::Multimap Headers ()
 
- Public Member Functions inherited from minio::s3::Sse
+bool TlsRequired ()
 
+utils::Multimap CopyHeaders ()
 
+ + + + +

+Additional Inherited Members

- Public Attributes inherited from minio::s3::Sse
+utils::Multimap empty_
 
+
The documentation for this class was generated from the following files:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/sse.h
  • +
  • /home/bala/devel/github.com/minio/minio-cpp/src/sse.cc
  • +
+
+ + + + diff --git a/classminio_1_1s3_1_1SseKms.png b/classminio_1_1s3_1_1SseKms.png new file mode 100644 index 0000000..281fd02 Binary files /dev/null and b/classminio_1_1s3_1_1SseKms.png differ diff --git a/classminio_1_1s3_1_1SseS3-members.html b/classminio_1_1s3_1_1SseS3-members.html new file mode 100644 index 0000000..15211b8 --- /dev/null +++ b/classminio_1_1s3_1_1SseS3-members.html @@ -0,0 +1,88 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::s3::SseS3 Member List
+
+
+ +

This is the complete list of members for minio::s3::SseS3, including all inherited members.

+ + + + + + + + +
CopyHeaders() (defined in minio::s3::Sse)minio::s3::Sseinline
empty_ (defined in minio::s3::Sse)minio::s3::Sse
Headers() (defined in minio::s3::SseS3)minio::s3::SseS3inlinevirtual
Sse() (defined in minio::s3::Sse)minio::s3::Sseinline
SseS3() (defined in minio::s3::SseS3)minio::s3::SseS3
TlsRequired() (defined in minio::s3::SseS3)minio::s3::SseS3inline
~Sse() (defined in minio::s3::Sse)minio::s3::Sseinlinevirtual
+ + + + diff --git a/classminio_1_1s3_1_1SseS3.html b/classminio_1_1s3_1_1SseS3.html new file mode 100644 index 0000000..4fe4b6d --- /dev/null +++ b/classminio_1_1s3_1_1SseS3.html @@ -0,0 +1,118 @@ + + + + + + + +MinIO C++ SDK: minio::s3::SseS3 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::s3::SseS3 Class Reference
+
+
+
+Inheritance diagram for minio::s3::SseS3:
+
+
+ + +minio::s3::Sse + +
+ + + + + + + + + + + +

+Public Member Functions

+utils::Multimap Headers ()
 
+bool TlsRequired ()
 
- Public Member Functions inherited from minio::s3::Sse
+bool TlsRequired ()
 
+utils::Multimap CopyHeaders ()
 
+ + + + +

+Additional Inherited Members

- Public Attributes inherited from minio::s3::Sse
+utils::Multimap empty_
 
+
The documentation for this class was generated from the following files:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/sse.h
  • +
  • /home/bala/devel/github.com/minio/minio-cpp/src/sse.cc
  • +
+
+ + + + diff --git a/classminio_1_1s3_1_1SseS3.png b/classminio_1_1s3_1_1SseS3.png new file mode 100644 index 0000000..d407fc4 Binary files /dev/null and b/classminio_1_1s3_1_1SseS3.png differ diff --git a/classminio_1_1utils_1_1Multimap-members.html b/classminio_1_1utils_1_1Multimap-members.html new file mode 100644 index 0000000..98eb118 --- /dev/null +++ b/classminio_1_1utils_1_1Multimap-members.html @@ -0,0 +1,94 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::utils::Multimap Member List
+
+
+ +

This is the complete list of members for minio::utils::Multimap, including all inherited members.

+ + + + + + + + + + + + + + +
Add(std::string key, std::string value) (defined in minio::utils::Multimap)minio::utils::Multimap
AddAll(const Multimap &headers) (defined in minio::utils::Multimap)minio::utils::Multimap
Contains(std::string_view key) (defined in minio::utils::Multimap)minio::utils::Multimap
Get(std::string_view key) (defined in minio::utils::Multimap)minio::utils::Multimap
GetCanonicalHeaders(std::string &signed_headers, std::string &canonical_headers) (defined in minio::utils::Multimap)minio::utils::Multimap
GetCanonicalQueryString() (defined in minio::utils::Multimap)minio::utils::Multimap
GetFront(std::string_view key) (defined in minio::utils::Multimap)minio::utils::Multimap
Keys() (defined in minio::utils::Multimap)minio::utils::Multimap
Multimap() (defined in minio::utils::Multimap)minio::utils::Multimap
Multimap(const Multimap &headers) (defined in minio::utils::Multimap)minio::utils::Multimap
operator bool() const (defined in minio::utils::Multimap)minio::utils::Multimapinline
ToHttpHeaders() (defined in minio::utils::Multimap)minio::utils::Multimap
ToQueryString() (defined in minio::utils::Multimap)minio::utils::Multimap
+ + + + diff --git a/classminio_1_1utils_1_1Multimap.html b/classminio_1_1utils_1_1Multimap.html new file mode 100644 index 0000000..3b1d7f7 --- /dev/null +++ b/classminio_1_1utils_1_1Multimap.html @@ -0,0 +1,129 @@ + + + + + + + +MinIO C++ SDK: minio::utils::Multimap Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::utils::Multimap Class Reference
+
+
+ +

#include <utils.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Multimap (const Multimap &headers)
 
+void Add (std::string key, std::string value)
 
+void AddAll (const Multimap &headers)
 
+std::list< std::string > ToHttpHeaders ()
 
+std::string ToQueryString ()
 
operator bool () const
 
+bool Contains (std::string_view key)
 
+std::list< std::string > Get (std::string_view key)
 
+std::string GetFront (std::string_view key)
 
+std::list< std::string > Keys ()
 
+void GetCanonicalHeaders (std::string &signed_headers, std::string &canonical_headers)
 
+std::string GetCanonicalQueryString ()
 
+

Detailed Description

+

Multimap represents dictionary of keys and their multiple values.

+

The documentation for this class was generated from the following files:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/utils.h
  • +
  • /home/bala/devel/github.com/minio/minio-cpp/src/utils.cc
  • +
+
+ + + + diff --git a/classminio_1_1utils_1_1Time-members.html b/classminio_1_1utils_1_1Time-members.html new file mode 100644 index 0000000..5305c44 --- /dev/null +++ b/classminio_1_1utils_1_1Time-members.html @@ -0,0 +1,92 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
minio::utils::Time Member List
+
+
+ +

This is the complete list of members for minio::utils::Time, including all inherited members.

+ + + + + + + + + + + + +
FromHttpHeaderValue(const char *value) (defined in minio::utils::Time)minio::utils::Timestatic
FromISO8601UTC(const char *value) (defined in minio::utils::Time)minio::utils::Timestatic
Now() (defined in minio::utils::Time)minio::utils::Timestatic
operator bool() const (defined in minio::utils::Time)minio::utils::Timeinline
Time() (defined in minio::utils::Time)minio::utils::Time
Time(std::time_t tv_sec, suseconds_t tv_usec, bool utc) (defined in minio::utils::Time)minio::utils::Time
ToAmzDate() (defined in minio::utils::Time)minio::utils::Time
ToHttpHeaderValue() (defined in minio::utils::Time)minio::utils::Time
ToISO8601UTC() (defined in minio::utils::Time)minio::utils::Time
ToSignerDate() (defined in minio::utils::Time)minio::utils::Time
ToUTC() (defined in minio::utils::Time)minio::utils::Time
+ + + + diff --git a/classminio_1_1utils_1_1Time.html b/classminio_1_1utils_1_1Time.html new file mode 100644 index 0000000..de8b57b --- /dev/null +++ b/classminio_1_1utils_1_1Time.html @@ -0,0 +1,127 @@ + + + + + + + +MinIO C++ SDK: minio::utils::Time Class Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
minio::utils::Time Class Reference
+
+
+ +

#include <utils.h>

+ + + + + + + + + + + + + + + + +

+Public Member Functions

Time (std::time_t tv_sec, suseconds_t tv_usec, bool utc)
 
+std::tm * ToUTC ()
 
+std::string ToSignerDate ()
 
+std::string ToAmzDate ()
 
+std::string ToHttpHeaderValue ()
 
+std::string ToISO8601UTC ()
 
operator bool () const
 
+ + + + + + + +

+Static Public Member Functions

+static Time FromHttpHeaderValue (const char *value)
 
+static Time FromISO8601UTC (const char *value)
 
+static Time Now ()
 
+

Detailed Description

+

Time represents date and time with timezone.

+

The documentation for this class was generated from the following files:
    +
  • /home/bala/devel/github.com/minio/minio-cpp/include/utils.h
  • +
  • /home/bala/devel/github.com/minio/minio-cpp/src/utils.cc
  • +
+
+ + + + diff --git a/client_8h_source.html b/client_8h_source.html new file mode 100644 index 0000000..54c6225 --- /dev/null +++ b/client_8h_source.html @@ -0,0 +1,247 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/client.h Source File + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
client.h
+
+
+
1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
+
2 // Copyright 2022 MinIO, Inc.
+
3 //
+
4 // Licensed under the Apache License, Version 2.0 (the "License");
+
5 // you may not use this file except in compliance with the License.
+
6 // You may obtain a copy of the License at
+
7 //
+
8 // http://www.apache.org/licenses/LICENSE-2.0
+
9 //
+
10 // Unless required by applicable law or agreed to in writing, software
+
11 // distributed under the License is distributed on an "AS IS" BASIS,
+
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
13 // See the License for the specific language governing permissions and
+
14 // limitations under the License.
+
15 
+
16 #ifndef _MINIO_S3_CLIENT_H
+
17 #define _MINIO_S3_CLIENT_H
+
18 
+
19 #include <fstream>
+
20 
+
21 #include "args.h"
+
22 #include "request-builder.h"
+
23 #include "response.h"
+
24 
+
25 namespace minio {
+
26 namespace s3 {
+
27 utils::Multimap GetCommonListObjectsQueryParams(std::string delimiter,
+
28  std::string encoding_type,
+
29  unsigned int max_keys,
+
30  std::string prefix);
+
31 
+
32 class ListObjectsResult;
+
33 
+
38 class Client {
+
39  private:
+
40  http::BaseUrl& base_url_;
+
41  creds::Provider* provider_ = NULL;
+
42  std::map<std::string, std::string> region_map_;
+
43  bool debug_ = false;
+
44  bool ignore_cert_check_ = false;
+
45 
+
46  public:
+
47  Client(http::BaseUrl& base_url, creds::Provider* provider = NULL);
+
48 
+
49  void Debug(bool flag) { debug_ = flag; }
+
50 
+
51  void IgnoreCertCheck(bool flag) { ignore_cert_check_ = flag; }
+
52 
+
53  void HandleRedirectResponse(std::string& code, std::string& message,
+
54  int status_code, http::Method method,
+
55  utils::Multimap headers,
+
56  std::string_view bucket_name, bool retry = false);
+
57  Response GetErrorResponse(http::Response resp, std::string_view resource,
+
58  http::Method method, std::string_view bucket_name,
+
59  std::string_view object_name);
+
60  Response execute(RequestBuilder& builder);
+
61  Response Execute(RequestBuilder& builder);
+
62 
+
63  // S3 APIs
+
64  ListObjectsResponse ListObjectsV1(ListObjectsV1Args args);
+
65  ListObjectsResponse ListObjectsV2(ListObjectsV2Args args);
+
66  ListObjectsResponse ListObjectVersions(ListObjectVersionsArgs args);
+
67 
+
68  // Bucket operations
+
69  GetRegionResponse GetRegion(std::string_view bucket_name,
+
70  std::string_view region = "");
+
71  MakeBucketResponse MakeBucket(MakeBucketArgs args);
+
72  ListBucketsResponse ListBuckets(ListBucketsArgs args);
+
73  ListBucketsResponse ListBuckets();
+
74  BucketExistsResponse BucketExists(BucketExistsArgs args);
+
75  RemoveBucketResponse RemoveBucket(RemoveBucketArgs args);
+
76 
+
77  // Object operations
+
78  AbortMultipartUploadResponse AbortMultipartUpload(
+ +
80  CompleteMultipartUploadResponse CompleteMultipartUpload(
+ +
82  CreateMultipartUploadResponse CreateMultipartUpload(
+ +
84  PutObjectResponse PutObject(PutObjectApiArgs args);
+
85  UploadPartResponse UploadPart(UploadPartArgs args);
+
86  UploadPartCopyResponse UploadPartCopy(UploadPartCopyArgs args);
+
87  StatObjectResponse StatObject(StatObjectArgs args);
+
88  RemoveObjectResponse RemoveObject(RemoveObjectArgs args);
+
89  DownloadObjectResponse DownloadObject(DownloadObjectArgs args);
+
90  GetObjectResponse GetObject(GetObjectArgs args);
+
91  ListObjectsResult ListObjects(ListObjectsArgs args);
+
92  PutObjectResponse PutObject(PutObjectArgs& args, std::string& upload_id,
+
93  char* buf);
+
94  PutObjectResponse PutObject(PutObjectArgs args);
+
95  CopyObjectResponse CopyObject(CopyObjectArgs args);
+
96  StatObjectResponse CalculatePartCount(size_t& part_count,
+
97  std::list<ComposeSource> sources);
+
98  ComposeObjectResponse ComposeObject(ComposeObjectArgs args,
+
99  std::string& upload_id);
+
100  ComposeObjectResponse ComposeObject(ComposeObjectArgs args);
+
101  UploadObjectResponse UploadObject(UploadObjectArgs args);
+
102 }; // class Client
+
103 
+ +
105  private:
+
106  Client* client_ = NULL;
+
107  ListObjectsArgs* args_ = NULL;
+
108  bool failed_ = false;
+
109  ListObjectsResponse resp_;
+
110  std::list<Item>::iterator itr_;
+
111 
+
112  void Populate();
+
113 
+
114  public:
+ +
116  ListObjectsResult(Client* client, ListObjectsArgs* args);
+
117  Item& operator*() const { return *itr_; }
+
118  operator bool() const { return itr_ != resp_.contents.end(); }
+
119  ListObjectsResult& operator++() {
+
120  itr_++;
+
121  if (!failed_ && itr_ == resp_.contents.end() && resp_.is_truncated) {
+
122  Populate();
+
123  }
+
124  return *this;
+
125  }
+
126  ListObjectsResult operator++(int) {
+
127  ListObjectsResult curr = *this;
+
128  ++(*this);
+
129  return curr;
+
130  }
+
131 }; // class ListObjectsResult
+
132 } // namespace s3
+
133 } // namespace minio
+
134 #endif // #ifndef __MINIO_S3_CLIENT_H
+
Definition: creds.h:47
+
Definition: error.h:23
+
Definition: client.h:38
+
Definition: client.h:104
+
Definition: utils.h:119
+
Definition: http.h:53
+
Definition: http.h:108
+ +
Definition: args.h:27
+
Definition: args.h:32
+
Definition: response.h:71
+ + +
Definition: args.h:227
+
Definition: args.h:209
+ + +
Definition: args.h:137
+
Definition: args.h:144
+
Definition: response.h:52
+
Definition: response.h:138
+
Definition: response.h:62
+
Definition: args.h:192
+
Definition: args.h:151
+
Definition: response.h:158
+
Definition: args.h:175
+
Definition: args.h:182
+
Definition: args.h:76
+ +
Definition: args.h:56
+
Definition: args.h:112
+
Definition: args.h:200
+
Definition: response.h:103
+
Definition: request-builder.h:24
+
Definition: response.h:25
+
Definition: response.h:116
+
Definition: args.h:233
+
Definition: args.h:117
+
Definition: args.h:125
+
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/closed.png differ diff --git a/cmake/modules/FindPugiXML.cmake b/cmake/modules/FindPugiXML.cmake deleted file mode 100644 index d3a329f..0000000 --- a/cmake/modules/FindPugiXML.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# Find the pugixml XML parsing library. -# -# Sets the usual variables expected for find_package scripts: -# -# PUGIXML_INCLUDE_DIR - header location -# PUGIXML_LIBRARIES - library to link against -# PUGIXML_FOUND - true if pugixml was found. - -find_path (PUGIXML_INCLUDE_DIR - NAMES pugixml.hpp - PATHS ${PUGIXML_HOME}/include) -find_library (PUGIXML_LIBRARY - NAMES pugixml - PATHS ${PUGIXML_HOME}/lib) - -# Support the REQUIRED and QUIET arguments, and set PUGIXML_FOUND if found. -include (FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS (PugiXML DEFAULT_MSG PUGIXML_LIBRARY - PUGIXML_INCLUDE_DIR) - -if (PUGIXML_FOUND) - set (PUGIXML_LIBRARIES ${PUGIXML_LIBRARY}) - if (NOT PugiXML_FIND_QUIETLY) - message (STATUS "PugiXML include = ${PUGIXML_INCLUDE_DIR}") - message (STATUS "PugiXML library = ${PUGIXML_LIBRARY}") - endif () -else () - message (STATUS "No PugiXML found") -endif() - -mark_as_advanced (PUGIXML_LIBRARY PUGIXML_INCLUDE_DIR) diff --git a/creds_8h_source.html b/creds_8h_source.html new file mode 100644 index 0000000..a7541cf --- /dev/null +++ b/creds_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/creds.h Source File + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
creds.h
+
+
+
1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
+
2 // Copyright 2022 MinIO, Inc.
+
3 //
+
4 // Licensed under the Apache License, Version 2.0 (the "License");
+
5 // you may not use this file except in compliance with the License.
+
6 // You may obtain a copy of the License at
+
7 //
+
8 // http://www.apache.org/licenses/LICENSE-2.0
+
9 //
+
10 // Unless required by applicable law or agreed to in writing, software
+
11 // distributed under the License is distributed on an "AS IS" BASIS,
+
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
13 // See the License for the specific language governing permissions and
+
14 // limitations under the License.
+
15 
+
16 #ifndef _MINIO_CREDS_H
+
17 #define _MINIO_CREDS_H
+
18 
+
19 #include <string>
+
20 
+
21 namespace minio {
+
22 namespace creds {
+
27 class Credentials {
+
28  private:
+
29  std::string_view access_key_;
+
30  std::string_view secret_key_;
+
31  std::string_view session_token_;
+
32  unsigned int expiration_;
+
33 
+
34  public:
+
35  Credentials(const Credentials& creds);
+
36  Credentials(std::string_view access_key, std::string_view secret_key,
+
37  std::string_view session_token = "", unsigned int expiration = 0);
+
38  std::string AccessKey();
+
39  std::string SecretKey();
+
40  std::string SessionToken();
+
41  bool IsExpired();
+
42 }; // class Credentials
+
43 
+
47 class Provider {
+
48  public:
+
49  Provider() {}
+
50  virtual ~Provider() {}
+
51  virtual Credentials Fetch() = 0;
+
52 }; // class Provider
+
53 
+
57 class StaticProvider : public Provider {
+
58  private:
+
59  Credentials* creds_ = NULL;
+
60 
+
61  public:
+
62  StaticProvider(std::string_view access_key, std::string_view secret_key,
+
63  std::string_view session_token = "");
+
64  ~StaticProvider();
+
65  Credentials Fetch();
+
66 }; // class StaticProvider
+
67 } // namespace creds
+
68 } // namespace minio
+
69 
+
70 #endif // #ifndef _MINIO_CREDS_H
+
Definition: creds.h:27
+
Definition: creds.h:47
+
Definition: creds.h:57
+
+ + + + diff --git a/dir_49e56c817e5e54854c35e136979f97ca.html b/dir_49e56c817e5e54854c35e136979f97ca.html new file mode 100644 index 0000000..2026cb3 --- /dev/null +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -0,0 +1,78 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/docs Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
docs Directory Reference
+
+
+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..6dc778b --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,78 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..25b7ff9 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,78 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
include Directory Reference
+
+
+
+ + + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/doc.png differ diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index 87f6f45..0000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -minio-cpp.min.io \ No newline at end of file diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in deleted file mode 100644 index d4cab41..0000000 --- a/docs/Doxyfile.in +++ /dev/null @@ -1,7 +0,0 @@ -OUTPUT_DIRECTORY = @CMAKE_CURRENT_SOURCE_DIR@/docs -INPUT = @CMAKE_CURRENT_SOURCE_DIR@/docs/README.md @CMAKE_CURRENT_SOURCE_DIR@/src @CMAKE_CURRENT_SOURCE_DIR@/include -PROJECT_NAME = "MinIO C++ SDK" -GENERATE_LATEX = NO -WARN_IF_UNDOCUMENTED = NO -USE_MDFILE_AS_MAINPAGE = @CMAKE_CURRENT_SOURCE_DIR@/docs/README.md -HTML_OUTPUT = @CMAKE_CURRENT_SOURCE_DIR@/docs diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 915168b..0000000 --- a/docs/README.md +++ /dev/null @@ -1,97 +0,0 @@ -> NOTE: This project is work in progress. - -MinIO C++ SDK is Simple Storage Service (aka S3) client to perform bucket and object operations to any Amazon S3 compatible object storage service. - -For a complete list of APIs and examples, please take a look at the [MinIO C++ Client API Reference](https://minio-cpp.min.io/) - -## Build requirements -* A working C++ development environment supporting C++17 standards. -* CMake 3.10 or higher. -* [vcpkg](https://vcpkg.io/en/index.html). - -## Install from vcpkg -``` -vcpkg install minio-cpp -``` - -## Building source -``` -$ git clone https://github.com/minio/minio-cpp -$ cd minio-cpp -$ wget --quiet -O vcpkg-master.zip https://github.com/microsoft/vcpkg/archive/refs/heads/master.zip -$ unzip -qq vcpkg-master.zip -$ ./vcpkg-master/bootstrap-vcpkg.sh -$ ./vcpkg-master/vcpkg integrate install -$ cmake -B ./build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=./vcpkg-master/scripts/buildsystems/vcpkg.cmake -$ cmake --build ./build --config Debug -``` - -## Example:: file-uploader.cc -``` -#include - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - std::string bucket_name = "asiatrip"; - - // Check 'asiatrip' bucket exist or not. - bool exist; - { - minio::s3::BucketExistsArgs args; - args.bucket_ = bucket_name; - - minio::s3::BucketExistsResponse resp = client.BucketExists(args); - if (!resp) { - std::cout << "unable to do bucket existence check; " << resp.GetError() - << std::endl; - return EXIT_FAILURE; - } - - exist = resp.exist_; - } - - // Make 'asiatrip' bucket if not exist. - if (!exist) { - minio::s3::MakeBucketArgs args; - args.bucket_ = bucket_name; - - minio::s3::MakeBucketResponse resp = client.MakeBucket(args); - if (!resp) { - std::cout << "unable to create bucket; " << resp.GetError() << std::endl; - return EXIT_FAILURE; - } - } - - // Upload '/home/user/Photos/asiaphotos.zip' as object name - // 'asiaphotos-2015.zip' to bucket 'asiatrip'. - minio::s3::UploadObjectArgs args; - args.bucket_ = bucket_name; - args.object_ = "asiaphotos-2015.zip"; - args.filename_ = "/home/user/Photos/asiaphotos.zip"; - - minio::s3::UploadObjectResponse resp = client.UploadObject(args); - if (!resp) { - std::cout << "unable to upload object; " << resp.GetError() << std::endl; - return EXIT_FAILURE; - } - - std::cout << "'/home/user/Photos/asiaphotos.zip' is successfully uploaded as " - << "object 'asiaphotos-2015.zip' to bucket 'asiatrip'." - << std::endl; - - return EXIT_SUCCESS; -} -``` - -## License -This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0), see [LICENSE](https://github.com/minio/minio-cpp/blob/master/LICENSE) for more information. diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..ffbff02 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/error.h Source File + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
error.h
+
+
+
1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
+
2 // Copyright 2022 MinIO, Inc.
+
3 //
+
4 // Licensed under the Apache License, Version 2.0 (the "License");
+
5 // you may not use this file except in compliance with the License.
+
6 // You may obtain a copy of the License at
+
7 //
+
8 // http://www.apache.org/licenses/LICENSE-2.0
+
9 //
+
10 // Unless required by applicable law or agreed to in writing, software
+
11 // distributed under the License is distributed on an "AS IS" BASIS,
+
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
13 // See the License for the specific language governing permissions and
+
14 // limitations under the License.
+
15 
+
16 #ifndef _MINIO_ERROR_H
+
17 #define _MINIO_ERROR_H
+
18 
+
19 #include <string>
+
20 
+
21 namespace minio {
+
22 namespace error {
+
23 class Error {
+
24  private:
+
25  std::string msg_;
+
26 
+
27  public:
+
28  Error() {}
+
29  Error(std::string_view msg) { msg_ = std::string(msg); }
+
30  std::string String() { return msg_; }
+
31  operator bool() const { return !msg_.empty(); }
+
32 }; // class Error
+
33 
+
34 const static Error SUCCESS;
+
35 } // namespace error
+
36 } // namespace minio
+
37 
+
38 #endif // #ifndef _MINIO_ERROR_H
+
Definition: error.h:23
+
+ + + + diff --git a/examples/BucketExists.cc b/examples/BucketExists.cc deleted file mode 100644 index be54bcd..0000000 --- a/examples/BucketExists.cc +++ /dev/null @@ -1,50 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create bucket exists arguments. - minio::s3::BucketExistsArgs args; - args.bucket = "my-bucket"; - - // Call bucket exists. - minio::s3::BucketExistsResponse resp = client.BucketExists(args); - - // Handle response. - if (resp) { - if (resp.exist) { - std::cout << "my-bucket exists" << std::endl; - } else { - std::cout << "my-bucket does not exist" << std::endl; - } - } else { - std::cout << "unable to do bucket existence check; " << resp.GetError() - << std::endl; - } - - return 0; -} diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt deleted file mode 100644 index d8bf387..0000000 --- a/examples/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -SET(S3_LIBS ${requiredlibs}) - -ADD_EXECUTABLE(MakeBucket MakeBucket.cc) -TARGET_LINK_LIBRARIES(MakeBucket miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(RemoveBucket RemoveBucket.cc) -TARGET_LINK_LIBRARIES(RemoveBucket miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(BucketExists BucketExists.cc) -TARGET_LINK_LIBRARIES(BucketExists miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(ListBuckets ListBuckets.cc) -TARGET_LINK_LIBRARIES(ListBuckets miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(StatObject StatObject.cc) -TARGET_LINK_LIBRARIES(StatObject miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(RemoveObject RemoveObject.cc) -TARGET_LINK_LIBRARIES(RemoveObject miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(DownloadObject DownloadObject.cc) -TARGET_LINK_LIBRARIES(DownloadObject miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(UploadObject UploadObject.cc) -TARGET_LINK_LIBRARIES(UploadObject miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(GetObject GetObject.cc) -TARGET_LINK_LIBRARIES(GetObject miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(ListObjects ListObjects.cc) -TARGET_LINK_LIBRARIES(ListObjects miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(PutObject PutObject.cc) -TARGET_LINK_LIBRARIES(PutObject miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(CopyObject CopyObject.cc) -TARGET_LINK_LIBRARIES(CopyObject miniocpp ${S3_LIBS}) - -ADD_EXECUTABLE(ComposeObject ComposeObject.cc) -TARGET_LINK_LIBRARIES(ComposeObject miniocpp ${S3_LIBS}) diff --git a/examples/ComposeObject.cc b/examples/ComposeObject.cc deleted file mode 100644 index a86c7c5..0000000 --- a/examples/ComposeObject.cc +++ /dev/null @@ -1,60 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Composeright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a compose of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create compose object arguments. - minio::s3::ComposeObjectArgs args; - args.bucket = "my-bucket"; - args.object = "my-object"; - - std::list sources; - - minio::s3::ComposeSource source1; - source1.bucket = "my-src-bucket1"; - source1.object = "my-src-object1"; - sources.push_back(source1); - - minio::s3::ComposeSource source2; - source2.bucket = "my-src-bucket2"; - source2.object = "my-src-object2"; - sources.push_back(source2); - - args.sources = sources; - - // Call compose object. - minio::s3::ComposeObjectResponse resp = client.ComposeObject(args); - - // Handle response. - if (resp) { - std::cout << "my-object is successfully created" << std::endl; - } else { - std::cout << "unable to compose object; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/CopyObject.cc b/examples/CopyObject.cc deleted file mode 100644 index e001092..0000000 --- a/examples/CopyObject.cc +++ /dev/null @@ -1,52 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create copy object arguments. - minio::s3::CopyObjectArgs args; - args.bucket = "my-bucket"; - args.object = "my-object"; - - minio::s3::CopySource source; - source.bucket = "my-src-bucket"; - source.object = "my-src-object"; - args.source = source; - - // Call copy object. - minio::s3::CopyObjectResponse resp = client.CopyObject(args); - - // Handle response. - if (resp) { - std::cout << "my-object is successfully created from " - << "my-src-bucket/my-src-object" << std::endl; - } else { - std::cout << "unable to do copy object; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/DownloadObject.cc b/examples/DownloadObject.cc deleted file mode 100644 index 49a5e75..0000000 --- a/examples/DownloadObject.cc +++ /dev/null @@ -1,48 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create download object arguments. - minio::s3::DownloadObjectArgs args; - args.bucket = "my-bucket"; - args.object = "my-object"; - args.filename = "my-object.csv"; - - // Call download object. - minio::s3::DownloadObjectResponse resp = client.DownloadObject(args); - - // Handle response. - if (resp) { - std::cout << "my-object is successfully downloaded to my-object.csv" - << std::endl; - } else { - std::cout << "unable to download object; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/GetObject.cc b/examples/GetObject.cc deleted file mode 100644 index 6c6fd46..0000000 --- a/examples/GetObject.cc +++ /dev/null @@ -1,51 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create get object arguments. - minio::s3::GetObjectArgs args; - args.bucket = "my-bucket"; - args.object = "my-object"; - args.data_callback = [](minio::http::DataCallbackArgs args) -> size_t { - std::cout << std::string(args.buffer, args.length); - return args.size * args.length; - }; - - // Call get object. - minio::s3::GetObjectResponse resp = client.GetObject(args); - - // Handle response. - if (resp) { - std::cout << std::endl - << "data of my-object is received successfully" << std::endl; - } else { - std::cout << "unable to get object; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/ListBuckets.cc b/examples/ListBuckets.cc deleted file mode 100644 index 1aaa2ef..0000000 --- a/examples/ListBuckets.cc +++ /dev/null @@ -1,44 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Call list buckets. - minio::s3::ListBucketsResponse resp = client.ListBuckets(); - - // Handle response. - if (resp) { - for (auto& bucket : resp.buckets) { - std::cout << "Bucket: " << bucket.name << "; Creation date: " - << bucket.creation_date.ToHttpHeaderValue() << std::endl; - } - } else { - std::cout << "unable to list buckets; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/ListObjects.cc b/examples/ListObjects.cc deleted file mode 100644 index 3f5d973..0000000 --- a/examples/ListObjects.cc +++ /dev/null @@ -1,66 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create list objects arguments. - minio::s3::ListObjectsArgs args; - args.bucket = "my-bucket"; - - // Call list objects. - minio::s3::ListObjectsResult result = client.ListObjects(args); - for (; result; result++) { - minio::s3::Item item = *result; - if (item) { - std::cout << "Name: " << item.name << std::endl; - std::cout << "Version ID: " << item.version_id << std::endl; - std::cout << "ETag: " << item.etag << std::endl; - std::cout << "Size: " << item.size << std::endl; - std::cout << "Last Modified: " << item.last_modified << std::endl; - std::cout << "Delete Marker: " - << minio::utils::BoolToString(item.is_delete_marker) - << std::endl; - std::cout << "User Metadata: " << std::endl; - for (auto& [key, value] : item.user_metadata) { - std::cout << " " << key << ": " << value << std::endl; - } - std::cout << "Owner ID: " << item.owner_id << std::endl; - std::cout << "Owner Name: " << item.owner_name << std::endl; - std::cout << "Storage Class: " << item.storage_class << std::endl; - std::cout << "Is Latest: " << minio::utils::BoolToString(item.is_latest) - << std::endl; - std::cout << "Is Prefix: " << minio::utils::BoolToString(item.is_prefix) - << std::endl; - std::cout << "---" << std::endl; - } else { - std::cout << "unable to listobjects; " << item.GetError() << std::endl; - break; - } - } - - return 0; -} diff --git a/examples/MakeBucket.cc b/examples/MakeBucket.cc deleted file mode 100644 index 2823a5f..0000000 --- a/examples/MakeBucket.cc +++ /dev/null @@ -1,45 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create make bucket arguments. - minio::s3::MakeBucketArgs args; - args.bucket = "my-bucket"; - - // Call make bucket. - minio::s3::MakeBucketResponse resp = client.MakeBucket(args); - - // Handle response. - if (resp) { - std::cout << "my-bucket is created successfully" << std::endl; - } else { - std::cout << "unable to create bucket; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/PutObject.cc b/examples/PutObject.cc deleted file mode 100644 index de1ef2b..0000000 --- a/examples/PutObject.cc +++ /dev/null @@ -1,48 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create put object arguments. - std::ifstream file("my-object.csv"); - - minio::s3::PutObjectArgs args(file, 47615315, 0); - args.bucket = "my-bucket"; - args.object = "my-object"; - - // Call put object. - minio::s3::PutObjectResponse resp = client.PutObject(args); - - // Handle response. - if (resp) { - std::cout << "my-object is successfully created" << std::endl; - } else { - std::cout << "unable to do put object; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/RemoveBucket.cc b/examples/RemoveBucket.cc deleted file mode 100644 index 5b8983a..0000000 --- a/examples/RemoveBucket.cc +++ /dev/null @@ -1,45 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create remove bucket arguments. - minio::s3::RemoveBucketArgs args; - args.bucket = "my-bucket"; - - // Call remove bucket. - minio::s3::RemoveBucketResponse resp = client.RemoveBucket(args); - - // Handle response. - if (resp) { - std::cout << "my-bucket is removed successfully" << std::endl; - } else { - std::cout << "unable to remove bucket; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/RemoveObject.cc b/examples/RemoveObject.cc deleted file mode 100644 index c812236..0000000 --- a/examples/RemoveObject.cc +++ /dev/null @@ -1,46 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create remove object arguments. - minio::s3::RemoveObjectArgs args; - args.bucket = "my-bucket"; - args.object = "my-object"; - - // Call remove object. - minio::s3::RemoveObjectResponse resp = client.RemoveObject(args); - - // Handle response. - if (resp) { - std::cout << "my-object is removed successfully" << std::endl; - } else { - std::cout << "unable to remove object; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/StatObject.cc b/examples/StatObject.cc deleted file mode 100644 index b51d3e4..0000000 --- a/examples/StatObject.cc +++ /dev/null @@ -1,77 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create stat object arguments. - minio::s3::StatObjectArgs args; - args.bucket = "my-bucket"; - args.object = "my-object"; - - // Call stat object. - minio::s3::StatObjectResponse resp = client.StatObject(args); - - // Handle response. - if (resp) { - std::cout << "Version ID: " << resp.version_id << std::endl; - std::cout << "ETag: " << resp.etag << std::endl; - std::cout << "Size: " << resp.size << std::endl; - std::cout << "Last Modified: " << resp.last_modified << std::endl; - std::cout << "Retention Mode: "; - if (minio::s3::IsRetentionModeValid(resp.retention_mode)) { - std::cout << minio::s3::RetentionModeToString(resp.retention_mode) - << std::endl; - } else { - std::cout << "-" << std::endl; - } - std::cout << "Retention Retain Until Date: "; - if (resp.retention_retain_until_date) { - std::cout << resp.retention_retain_until_date.ToHttpHeaderValue() - << std::endl; - } else { - std::cout << "-" << std::endl; - } - std::cout << "Legal Hold: "; - if (minio::s3::IsLegalHoldValid(resp.legal_hold)) { - std::cout << minio::s3::LegalHoldToString(resp.legal_hold) << std::endl; - } else { - std::cout << "-" << std::endl; - } - std::cout << "Delete Marker: " - << minio::utils::BoolToString(resp.delete_marker) << std::endl; - std::cout << "User Metadata: " << std::endl; - std::list keys = resp.user_metadata.Keys(); - for (auto& key : keys) { - std::cout << " " << key << ": " << resp.user_metadata.GetFront(key) - << std::endl; - } - } else { - std::cout << "unable to get stat object; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/examples/UploadObject.cc b/examples/UploadObject.cc deleted file mode 100644 index 31891cb..0000000 --- a/examples/UploadObject.cc +++ /dev/null @@ -1,48 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -int main(int argc, char* argv[]) { - // Create S3 base URL. - minio::http::BaseUrl base_url; - base_url.SetHost("play.min.io"); - - // Create credential provider. - minio::creds::StaticProvider provider( - "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); - - // Create S3 client. - minio::s3::Client client(base_url, &provider); - - // Create upload object arguments. - minio::s3::UploadObjectArgs args; - args.bucket = "my-bucket"; - args.object = "my-object"; - args.filename = "my-object.csv"; - - // Call upload object. - minio::s3::UploadObjectResponse resp = client.UploadObject(args); - - // Handle response. - if (resp) { - std::cout << "my-object.csv is successfully uploaded to my-object" - << std::endl; - } else { - std::cout << "unable to upload object; " << resp.GetError() << std::endl; - } - - return 0; -} diff --git a/files.html b/files.html new file mode 100644 index 0000000..651dee3 --- /dev/null +++ b/files.html @@ -0,0 +1,90 @@ + + + + + + + +MinIO C++ SDK: File List + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + +
  include
 args.h
 client.h
 creds.h
 error.h
 http.h
 request-builder.h
 response.h
 signer.h
 sse.h
 types.h
 utils.h
+
+
+ + + + diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/folderclosed.png differ diff --git a/folderopen.png b/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/folderopen.png differ diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..4a3160a --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,138 @@ + + + + + + + +MinIO C++ SDK: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 1234567]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cminio::s3::BaseArgs
 Cminio::s3::BucketArgs
 Cminio::s3::ListObjectsArgs
 Cminio::s3::ListObjectsCommonArgs
 Cminio::s3::ListObjectVersionsArgs
 Cminio::s3::ListObjectsV1Args
 Cminio::s3::ListObjectsV2Args
 Cminio::s3::MakeBucketArgs
 Cminio::s3::ObjectArgs
 Cminio::s3::AbortMultipartUploadArgs
 Cminio::s3::CompleteMultipartUploadArgs
 Cminio::s3::CreateMultipartUploadArgs
 Cminio::s3::ObjectVersionArgs
 Cminio::s3::ObjectReadArgs
 Cminio::s3::DownloadObjectArgs
 Cminio::s3::ObjectConditionalReadArgs
 Cminio::s3::ComposeSource
 Cminio::s3::GetObjectArgs
 Cminio::s3::ObjectWriteArgs
 Cminio::s3::ComposeObjectArgs
 Cminio::s3::CopyObjectArgs
 Cminio::s3::PutObjectBaseArgs
 Cminio::s3::PutObjectApiArgs
 Cminio::s3::PutObjectArgs
 Cminio::s3::UploadObjectArgs
 Cminio::s3::UploadPartArgs
 Cminio::s3::UploadPartCopyArgs
 Cminio::http::BaseUrl
 Cminio::s3::Bucket
 Cminio::s3::Client
 Cminio::creds::Credentials
 Cminio::http::DataCallbackArgs
 Cminio::error::Error
 Cminio::s3::ListObjectsResult
 Cminio::utils::Multimap
 Cminio::s3::Part
 Cminio::creds::Provider
 Cminio::creds::StaticProvider
 Cminio::http::Request
 Cminio::s3::RequestBuilder
 Cminio::http::Response
 Cminio::s3::Response
 Cminio::s3::BucketExistsResponse
 Cminio::s3::CompleteMultipartUploadResponse
 Cminio::s3::CreateMultipartUploadResponse
 Cminio::s3::GetRegionResponse
 Cminio::s3::Item
 Cminio::s3::ListBucketsResponse
 Cminio::s3::ListObjectsResponse
 Cminio::s3::PutObjectResponse
 Cminio::s3::StatObjectResponse
 Cminio::s3::Retention
 Cminio::s3::Sse
 Cminio::s3::SseCustomerKey
 Cminio::s3::SseKms
 Cminio::s3::SseS3
 Cstd::streambuf
 Cminio::utils::CharBuffer
 Cminio::utils::Time
 Cminio::utils::Url
+
+
+ + + + diff --git a/http_8h_source.html b/http_8h_source.html new file mode 100644 index 0000000..e10c6a8 --- /dev/null +++ b/http_8h_source.html @@ -0,0 +1,219 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/http.h Source File + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
http.h
+
+
+
1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
+
2 // Copyright 2022 MinIO, Inc.
+
3 //
+
4 // Licensed under the Apache License, Version 2.0 (the "License");
+
5 // you may not use this file except in compliance with the License.
+
6 // You may obtain a copy of the License at
+
7 //
+
8 // http://www.apache.org/licenses/LICENSE-2.0
+
9 //
+
10 // Unless required by applicable law or agreed to in writing, software
+
11 // distributed under the License is distributed on an "AS IS" BASIS,
+
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
13 // See the License for the specific language governing permissions and
+
14 // limitations under the License.
+
15 
+
16 #ifndef _MINIO_HTTP_H
+
17 #define _MINIO_HTTP_H
+
18 
+
19 #include <curlpp/Easy.hpp>
+
20 #include <curlpp/Options.hpp>
+
21 
+
22 #include "utils.h"
+
23 
+
24 namespace minio {
+
25 namespace http {
+
26 enum class Method { kGet, kHead, kPost, kPut, kDelete };
+
27 
+
28 // MethodToString converts http Method enum to string.
+
29 constexpr const char* MethodToString(Method& method) throw() {
+
30  switch (method) {
+
31  case Method::kGet:
+
32  return "GET";
+
33  case Method::kHead:
+
34  return "HEAD";
+
35  case Method::kPost:
+
36  return "POST";
+
37  case Method::kPut:
+
38  return "PUT";
+
39  case Method::kDelete:
+
40  return "DELETE";
+
41  default: {
+
42  std::cerr << "ABORT: Unimplemented HTTP method. This should not happen."
+
43  << std::endl;
+
44  std::terminate();
+
45  }
+
46  }
+
47  return NULL;
+
48 }
+
49 
+
50 // ExtractRegion extracts region value from AWS S3 host string.
+
51 std::string ExtractRegion(std::string host);
+
52 
+
53 struct BaseUrl {
+
54  std::string host;
+
55  bool is_https = true;
+
56  unsigned int port = 0;
+
57  std::string region;
+
58  bool aws_host = false;
+
59  bool accelerate_host = false;
+
60  bool dualstack_host = false;
+
61  bool virtual_style = false;
+
62 
+
63  error::Error SetHost(std::string hostvalue);
+
64  std::string GetHostHeaderValue();
+
65  error::Error BuildUrl(utils::Url& url, Method method, std::string region,
+
66  utils::Multimap query_params,
+
67  std::string bucket_name = "",
+
68  std::string object_name = "");
+
69  operator bool() const { return !host.empty(); }
+
70 }; // struct BaseUrl
+
71 
+
72 struct DataCallbackArgs;
+
73 
+
74 typedef size_t (*DataCallback)(DataCallbackArgs args);
+
75 
+
76 struct Response;
+
77 
+ +
79  curlpp::Easy* handle = NULL;
+
80  Response* response = NULL;
+
81  char* buffer = NULL;
+
82  size_t size = 0;
+
83  size_t length = 0;
+
84  void* user_arg = NULL;
+
85 }; // struct DataCallbackArgs
+
86 
+
87 struct Request {
+
88  Method method;
+
89  utils::Url url;
+
90  utils::Multimap headers;
+
91  std::string_view body = "";
+
92  DataCallback data_callback = NULL;
+
93  void* user_arg = NULL;
+
94  bool debug = false;
+
95  bool ignore_cert_check = false;
+
96 
+
97  Request(Method httpmethod, utils::Url httpurl);
+
98  Response Execute();
+
99  operator bool() const {
+
100  if (method < Method::kGet || method > Method::kDelete) return false;
+
101  return url;
+
102  }
+
103 
+
104  private:
+
105  Response execute();
+
106 }; // struct Request
+
107 
+
108 struct Response {
+
109  std::string error;
+
110  DataCallback data_callback = NULL;
+
111  void* user_arg = NULL;
+
112  int status_code = 0;
+
113  utils::Multimap headers;
+
114  std::string body;
+
115 
+
116  size_t ResponseCallback(curlpp::Easy* handle, char* buffer, size_t size,
+
117  size_t length);
+
118  operator bool() const {
+
119  return error.empty() && status_code >= 200 && status_code <= 299;
+
120  }
+
121 
+
122  private:
+
123  std::string response_;
+
124  bool continue100_ = false;
+
125  bool status_code_read_ = false;
+
126  bool headers_read_ = false;
+
127 
+
128  size_t ReadStatusCode(char* buffer, size_t size, size_t length);
+
129  size_t ReadHeaders(curlpp::Easy* handle, char* buffer, size_t size,
+
130  size_t length);
+
131 }; // struct Response
+
132 } // namespace http
+
133 } // namespace minio
+
134 #endif // #ifndef _MINIO_HTTP_H
+
Definition: error.h:23
+
Definition: utils.h:119
+
Definition: http.h:53
+
Definition: http.h:78
+
Definition: http.h:87
+
Definition: http.h:108
+
Definition: utils.h:144
+
+ + + + diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt deleted file mode 100644 index ad18354..0000000 --- a/include/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# MinIO C++ Library for Amazon S3 Compatible Cloud Storage -# Copyright 2021 MinIO, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -INCLUDE (CheckIncludeFiles) -INCLUDE (CheckFunctionExists) - -CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H) -CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H) -CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H) -CHECK_INCLUDE_FILES(limits.h HAVE_LIMITS_H) -CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H) - -CHECK_FUNCTION_EXISTS(strtoimax HAVE_STRTOIMAX_F) -CHECK_FUNCTION_EXISTS(strptime HAVE_STRPTIME_F) - -# install all the headers -FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -INSTALL(FILES ${files} DESTINATION include/miniocpp) - -INSTALL(FILES DESTINATION include) diff --git a/include/args.h b/include/args.h deleted file mode 100644 index c966f05..0000000 --- a/include/args.h +++ /dev/null @@ -1,240 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_S3_ARGS_H -#define _MINIO_S3_ARGS_H - -#include - -#include "http.h" -#include "sse.h" -#include "types.h" - -namespace minio { -namespace s3 { -struct BaseArgs { - utils::Multimap extra_headers; - utils::Multimap extra_query_params; -}; // struct BaseArgs - -struct BucketArgs : public BaseArgs { - std::string bucket; - std::string region; - - error::Error Validate(); -}; // struct BucketArgs - -struct ObjectArgs : public BucketArgs { - std::string object; - - error::Error Validate(); -}; // struct ObjectArgs - -struct ObjectWriteArgs : public ObjectArgs { - utils::Multimap headers; - utils::Multimap user_metadata; - Sse *sse = NULL; - std::map tags; - Retention *retention = NULL; - bool legal_hold = false; - - utils::Multimap Headers(); -}; // struct ObjectWriteArgs - -struct ObjectVersionArgs : public ObjectArgs { - std::string version_id; -}; // struct ObjectVersionArgs - -struct ObjectReadArgs : public ObjectVersionArgs { - SseCustomerKey *ssec = NULL; -}; // struct ObjectReadArgs - -struct ObjectConditionalReadArgs : public ObjectReadArgs { - size_t *offset = NULL; - size_t *length = NULL; - std::string match_etag; - std::string not_match_etag; - utils::Time modified_since; - utils::Time unmodified_since; - - utils::Multimap Headers(); - utils::Multimap CopyHeaders(); -}; // struct ObjectConditionalReadArgs - -struct MakeBucketArgs : public BucketArgs { - bool object_lock = false; - - error::Error Validate(); -}; // struct MakeBucketArgs - -using ListBucketsArgs = BaseArgs; - -using BucketExistsArgs = BucketArgs; - -using RemoveBucketArgs = BucketArgs; - -struct AbortMultipartUploadArgs : public ObjectArgs { - std::string upload_id; - - error::Error Validate(); -}; // struct AbortMultipartUploadArgs - -struct CompleteMultipartUploadArgs : public ObjectArgs { - std::string upload_id; - std::list parts; - - error::Error Validate(); -}; // struct CompleteMultipartUploadArgs - -struct CreateMultipartUploadArgs : public ObjectArgs { - utils::Multimap headers; -}; // struct CreateMultipartUploadArgs - -struct PutObjectBaseArgs : public ObjectWriteArgs { - long object_size = -1; - size_t part_size = 0; - long part_count = 0; - std::string content_type; -}; // struct PutObjectBaseArgs - -struct PutObjectApiArgs : public PutObjectBaseArgs { - std::string_view data; - utils::Multimap query_params; -}; // struct PutObjectApiArgs - -struct UploadPartArgs : public ObjectWriteArgs { - std::string upload_id; - unsigned int part_number; - std::string_view data; - - error::Error Validate(); -}; // struct UploadPartArgs - -struct UploadPartCopyArgs : public ObjectWriteArgs { - std::string upload_id; - unsigned int part_number; - utils::Multimap headers; - - error::Error Validate(); -}; // struct UploadPartCopyArgs - -using StatObjectArgs = ObjectConditionalReadArgs; - -using RemoveObjectArgs = ObjectVersionArgs; - -struct DownloadObjectArgs : public ObjectReadArgs { - std::string filename; - bool overwrite; - - error::Error Validate(); -}; // struct DownloadObjectArgs - -struct GetObjectArgs : public ObjectConditionalReadArgs { - http::DataCallback data_callback; - void *user_arg = NULL; - - error::Error Validate(); -}; // struct GetObjectArgs - -struct ListObjectsArgs : public BucketArgs { - std::string delimiter; - bool use_url_encoding_type = true; - std::string marker; // only for ListObjectsV1. - std::string start_after; // only for ListObjectsV2. - std::string key_marker; // only for GetObjectVersions. - unsigned int max_keys = 1000; - std::string prefix; - std::string continuation_token; // only for ListObjectsV2. - bool fetch_owner = false; // only for ListObjectsV2. - std::string version_id_marker; // only for GetObjectVersions. - bool include_user_metadata = false; // MinIO extension for ListObjectsV2. - bool recursive = false; - bool use_api_v1 = false; - bool include_versions = false; -}; // struct ListObjectsArgs - -struct ListObjectsCommonArgs : public BucketArgs { - std::string delimiter; - std::string encoding_type; - unsigned int max_keys = 1000; - std::string prefix; -}; // struct ListObjectsCommonArgs - -struct ListObjectsV1Args : public ListObjectsCommonArgs { - std::string marker; - - ListObjectsV1Args(); - ListObjectsV1Args(ListObjectsArgs args); -}; // struct ListObjectsV1Args - -struct ListObjectsV2Args : public ListObjectsCommonArgs { - std::string start_after; - std::string continuation_token; - bool fetch_owner; - bool include_user_metadata; - - ListObjectsV2Args(); - ListObjectsV2Args(ListObjectsArgs args); -}; // struct ListObjectsV2Args - -struct ListObjectVersionsArgs : public ListObjectsCommonArgs { - std::string key_marker; - std::string version_id_marker; - - ListObjectVersionsArgs(); - ListObjectVersionsArgs(ListObjectsArgs args); -}; // struct ListObjectVersionsArgs - -struct PutObjectArgs : public PutObjectBaseArgs { - std::istream &stream; - - PutObjectArgs(std::istream &stream, long objectsize, long partsize); - error::Error Validate(); -}; // struct PutObjectArgs - -using CopySource = ObjectConditionalReadArgs; - -struct CopyObjectArgs : public ObjectWriteArgs { - CopySource source; - Directive *metadata_directive = NULL; - Directive *tagging_directive = NULL; - - error::Error Validate(); -}; // struct CopyObjectArgs - -struct ComposeSource : public ObjectConditionalReadArgs { - error::Error BuildHeaders(size_t object_size, std::string etag); - size_t ObjectSize(); - utils::Multimap Headers(); - - private: - long object_size_ = -1; - utils::Multimap headers_; -}; // struct ComposeSource - -struct ComposeObjectArgs : public ObjectWriteArgs { - std::list sources; - - error::Error Validate(); -}; // struct ComposeObjectArgs - -struct UploadObjectArgs : public PutObjectBaseArgs { - std::string filename; - - error::Error Validate(); -}; // struct PutObjectArgs -} // namespace s3 -} // namespace minio -#endif // #ifndef __MINIO_S3_ARGS_H diff --git a/include/client.h b/include/client.h deleted file mode 100644 index 40bb64b..0000000 --- a/include/client.h +++ /dev/null @@ -1,134 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_S3_CLIENT_H -#define _MINIO_S3_CLIENT_H - -#include - -#include "args.h" -#include "request-builder.h" -#include "response.h" - -namespace minio { -namespace s3 { -utils::Multimap GetCommonListObjectsQueryParams(std::string delimiter, - std::string encoding_type, - unsigned int max_keys, - std::string prefix); - -class ListObjectsResult; - -/** - * Simple Storage Service (aka S3) client to perform bucket and object - * operations asynchronously. - */ -class Client { - private: - http::BaseUrl& base_url_; - creds::Provider* provider_ = NULL; - std::map region_map_; - bool debug_ = false; - bool ignore_cert_check_ = false; - - public: - Client(http::BaseUrl& base_url, creds::Provider* provider = NULL); - - void Debug(bool flag) { debug_ = flag; } - - void IgnoreCertCheck(bool flag) { ignore_cert_check_ = flag; } - - void HandleRedirectResponse(std::string& code, std::string& message, - int status_code, http::Method method, - utils::Multimap headers, - std::string_view bucket_name, bool retry = false); - Response GetErrorResponse(http::Response resp, std::string_view resource, - http::Method method, std::string_view bucket_name, - std::string_view object_name); - Response execute(RequestBuilder& builder); - Response Execute(RequestBuilder& builder); - - // S3 APIs - ListObjectsResponse ListObjectsV1(ListObjectsV1Args args); - ListObjectsResponse ListObjectsV2(ListObjectsV2Args args); - ListObjectsResponse ListObjectVersions(ListObjectVersionsArgs args); - - // Bucket operations - GetRegionResponse GetRegion(std::string_view bucket_name, - std::string_view region = ""); - MakeBucketResponse MakeBucket(MakeBucketArgs args); - ListBucketsResponse ListBuckets(ListBucketsArgs args); - ListBucketsResponse ListBuckets(); - BucketExistsResponse BucketExists(BucketExistsArgs args); - RemoveBucketResponse RemoveBucket(RemoveBucketArgs args); - - // Object operations - AbortMultipartUploadResponse AbortMultipartUpload( - AbortMultipartUploadArgs args); - CompleteMultipartUploadResponse CompleteMultipartUpload( - CompleteMultipartUploadArgs args); - CreateMultipartUploadResponse CreateMultipartUpload( - CreateMultipartUploadArgs args); - PutObjectResponse PutObject(PutObjectApiArgs args); - UploadPartResponse UploadPart(UploadPartArgs args); - UploadPartCopyResponse UploadPartCopy(UploadPartCopyArgs args); - StatObjectResponse StatObject(StatObjectArgs args); - RemoveObjectResponse RemoveObject(RemoveObjectArgs args); - DownloadObjectResponse DownloadObject(DownloadObjectArgs args); - GetObjectResponse GetObject(GetObjectArgs args); - ListObjectsResult ListObjects(ListObjectsArgs args); - PutObjectResponse PutObject(PutObjectArgs& args, std::string& upload_id, - char* buf); - PutObjectResponse PutObject(PutObjectArgs args); - CopyObjectResponse CopyObject(CopyObjectArgs args); - StatObjectResponse CalculatePartCount(size_t& part_count, - std::list sources); - ComposeObjectResponse ComposeObject(ComposeObjectArgs args, - std::string& upload_id); - ComposeObjectResponse ComposeObject(ComposeObjectArgs args); - UploadObjectResponse UploadObject(UploadObjectArgs args); -}; // class Client - -class ListObjectsResult { - private: - Client* client_ = NULL; - ListObjectsArgs* args_ = NULL; - bool failed_ = false; - ListObjectsResponse resp_; - std::list::iterator itr_; - - void Populate(); - - public: - ListObjectsResult(error::Error err); - ListObjectsResult(Client* client, ListObjectsArgs* args); - Item& operator*() const { return *itr_; } - operator bool() const { return itr_ != resp_.contents.end(); } - ListObjectsResult& operator++() { - itr_++; - if (!failed_ && itr_ == resp_.contents.end() && resp_.is_truncated) { - Populate(); - } - return *this; - } - ListObjectsResult operator++(int) { - ListObjectsResult curr = *this; - ++(*this); - return curr; - } -}; // class ListObjectsResult -} // namespace s3 -} // namespace minio -#endif // #ifndef __MINIO_S3_CLIENT_H diff --git a/include/creds.h b/include/creds.h deleted file mode 100644 index db323cb..0000000 --- a/include/creds.h +++ /dev/null @@ -1,70 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_CREDS_H -#define _MINIO_CREDS_H - -#include - -namespace minio { -namespace creds { -/** - * Credentials contains access key and secret key with optional session token - * and expiration. - */ -class Credentials { - private: - std::string_view access_key_; - std::string_view secret_key_; - std::string_view session_token_; - unsigned int expiration_; - - public: - Credentials(const Credentials& creds); - Credentials(std::string_view access_key, std::string_view secret_key, - std::string_view session_token = "", unsigned int expiration = 0); - std::string AccessKey(); - std::string SecretKey(); - std::string SessionToken(); - bool IsExpired(); -}; // class Credentials - -/** - * Credential provider interface. - */ -class Provider { - public: - Provider() {} - virtual ~Provider() {} - virtual Credentials Fetch() = 0; -}; // class Provider - -/** - * Static credential provider. - */ -class StaticProvider : public Provider { - private: - Credentials* creds_ = NULL; - - public: - StaticProvider(std::string_view access_key, std::string_view secret_key, - std::string_view session_token = ""); - ~StaticProvider(); - Credentials Fetch(); -}; // class StaticProvider -} // namespace creds -} // namespace minio - -#endif // #ifndef _MINIO_CREDS_H diff --git a/include/error.h b/include/error.h deleted file mode 100644 index 09e1030..0000000 --- a/include/error.h +++ /dev/null @@ -1,38 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_ERROR_H -#define _MINIO_ERROR_H - -#include - -namespace minio { -namespace error { -class Error { - private: - std::string msg_; - - public: - Error() {} - Error(std::string_view msg) { msg_ = std::string(msg); } - std::string String() { return msg_; } - operator bool() const { return !msg_.empty(); } -}; // class Error - -const static Error SUCCESS; -} // namespace error -} // namespace minio - -#endif // #ifndef _MINIO_ERROR_H diff --git a/include/http.h b/include/http.h deleted file mode 100644 index a6fe110..0000000 --- a/include/http.h +++ /dev/null @@ -1,134 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_HTTP_H -#define _MINIO_HTTP_H - -#include -#include - -#include "utils.h" - -namespace minio { -namespace http { -enum class Method { kGet, kHead, kPost, kPut, kDelete }; - -// MethodToString converts http Method enum to string. -constexpr const char* MethodToString(Method& method) throw() { - switch (method) { - case Method::kGet: - return "GET"; - case Method::kHead: - return "HEAD"; - case Method::kPost: - return "POST"; - case Method::kPut: - return "PUT"; - case Method::kDelete: - return "DELETE"; - default: { - std::cerr << "ABORT: Unimplemented HTTP method. This should not happen." - << std::endl; - std::terminate(); - } - } - return NULL; -} - -// ExtractRegion extracts region value from AWS S3 host string. -std::string ExtractRegion(std::string host); - -struct BaseUrl { - std::string host; - bool is_https = true; - unsigned int port = 0; - std::string region; - bool aws_host = false; - bool accelerate_host = false; - bool dualstack_host = false; - bool virtual_style = false; - - error::Error SetHost(std::string hostvalue); - std::string GetHostHeaderValue(); - error::Error BuildUrl(utils::Url& url, Method method, std::string region, - utils::Multimap query_params, - std::string bucket_name = "", - std::string object_name = ""); - operator bool() const { return !host.empty(); } -}; // struct BaseUrl - -struct DataCallbackArgs; - -typedef size_t (*DataCallback)(DataCallbackArgs args); - -struct Response; - -struct DataCallbackArgs { - curlpp::Easy* handle = NULL; - Response* response = NULL; - char* buffer = NULL; - size_t size = 0; - size_t length = 0; - void* user_arg = NULL; -}; // struct DataCallbackArgs - -struct Request { - Method method; - utils::Url url; - utils::Multimap headers; - std::string_view body = ""; - DataCallback data_callback = NULL; - void* user_arg = NULL; - bool debug = false; - bool ignore_cert_check = false; - - Request(Method httpmethod, utils::Url httpurl); - Response Execute(); - operator bool() const { - if (method < Method::kGet || method > Method::kDelete) return false; - return url; - } - - private: - Response execute(); -}; // struct Request - -struct Response { - std::string error; - DataCallback data_callback = NULL; - void* user_arg = NULL; - int status_code = 0; - utils::Multimap headers; - std::string body; - - size_t ResponseCallback(curlpp::Easy* handle, char* buffer, size_t size, - size_t length); - operator bool() const { - return error.empty() && status_code >= 200 && status_code <= 299; - } - - private: - std::string response_; - bool continue100_ = false; - bool status_code_read_ = false; - bool headers_read_ = false; - - size_t ReadStatusCode(char* buffer, size_t size, size_t length); - size_t ReadHeaders(curlpp::Easy* handle, char* buffer, size_t size, - size_t length); -}; // struct Response -} // namespace http -} // namespace minio -#endif // #ifndef _MINIO_HTTP_H diff --git a/include/request-builder.h b/include/request-builder.h deleted file mode 100644 index ed2a39c..0000000 --- a/include/request-builder.h +++ /dev/null @@ -1,57 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_REQUEST_BUILDER_H -#define _MINIO_REQUEST_BUILDER_H - -#include "creds.h" -#include "signer.h" - -namespace minio { -namespace s3 { -struct RequestBuilder { - http::Method method; - std::string region; - http::BaseUrl& base_url; - - std::string user_agent; - - utils::Multimap headers; - utils::Multimap query_params; - - std::string bucket_name; - std::string object_name; - - std::string_view body = ""; - - http::DataCallback data_callback = NULL; - void* user_arg = NULL; - - std::string sha256; - utils::Time date; - - bool debug = false; - bool ignore_cert_check = false; - - RequestBuilder(http::Method httpmethod, std::string regionvalue, - http::BaseUrl& baseurl); - http::Request Build(creds::Provider* provider = NULL); - - private: - void BuildHeaders(utils::Url& url, creds::Provider* provider); -}; // struct RequestBuilder -} // namespace s3 -} // namespace minio -#endif // #ifndef __MINIO_REQUEST_BUILDER_H diff --git a/include/response.h b/include/response.h deleted file mode 100644 index 8b99ba7..0000000 --- a/include/response.h +++ /dev/null @@ -1,198 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_S3_RESPONSE_H -#define _MINIO_S3_RESPONSE_H - -#include - -#include "types.h" - -namespace minio { -namespace s3 { -struct Response { - std::string error; - - int status_code = 0; - utils::Multimap headers; - std::string data; - - std::string code; - std::string message; - std::string resource; - std::string request_id; - std::string host_id; - std::string bucket_name; - std::string object_name; - - Response(); - Response(error::Error err); - Response(const Response& response); - operator bool() const { - return error.empty() && code.empty() && message.empty() && - (status_code == 0 || status_code >= 200 && status_code <= 299); - } - std::string GetError(); - static Response ParseXML(std::string_view data, int status_code, - utils::Multimap headers); -}; // struct Response - -struct GetRegionResponse : public Response { - std::string region; - - GetRegionResponse(std::string regionvalue); - GetRegionResponse(error::Error err); - GetRegionResponse(const Response& response); -}; // struct GetRegionResponse - -using MakeBucketResponse = Response; - -struct ListBucketsResponse : public Response { - std::list buckets; - - ListBucketsResponse(std::list bucketlist); - ListBucketsResponse(error::Error err); - ListBucketsResponse(const Response& response); - static ListBucketsResponse ParseXML(std::string_view data); -}; // struct ListBucketsResponse - -struct BucketExistsResponse : public Response { - bool exist = false; - - BucketExistsResponse(bool existflag); - BucketExistsResponse(error::Error err); - BucketExistsResponse(const Response& response); -}; // struct BucketExistsResponse - -using RemoveBucketResponse = Response; - -using AbortMultipartUploadResponse = Response; - -struct CompleteMultipartUploadResponse : public Response { - std::string location; - std::string etag; - std::string version_id; - - CompleteMultipartUploadResponse(); - CompleteMultipartUploadResponse(error::Error err); - CompleteMultipartUploadResponse(const Response& response); - static CompleteMultipartUploadResponse ParseXML(std::string_view data, - std::string version_id); -}; // struct CompleteMultipartUploadResponse - -struct CreateMultipartUploadResponse : public Response { - std::string upload_id; - - CreateMultipartUploadResponse(std::string uploadid); - CreateMultipartUploadResponse(error::Error err); - CreateMultipartUploadResponse(const Response& response); -}; // struct CreateMultipartUploadResponse - -struct PutObjectResponse : public Response { - std::string etag; - std::string version_id; - - PutObjectResponse(); - PutObjectResponse(error::Error err); - PutObjectResponse(const Response& response); -}; // struct PutObjectResponse - -using UploadPartResponse = PutObjectResponse; - -using UploadPartCopyResponse = PutObjectResponse; - -struct StatObjectResponse : public Response { - std::string version_id; - std::string etag; - size_t size = 0; - utils::Time last_modified; - RetentionMode retention_mode; - utils::Time retention_retain_until_date; - LegalHold legal_hold; - bool delete_marker; - utils::Multimap user_metadata; - - StatObjectResponse(); - StatObjectResponse(error::Error err); - StatObjectResponse(const Response& response); -}; // struct StatObjectResponse - -using RemoveObjectResponse = Response; - -using DownloadObjectResponse = Response; - -using GetObjectResponse = Response; - -struct Item : public Response { - std::string etag; // except DeleteMarker - std::string name; - utils::Time last_modified; - std::string owner_id; - std::string owner_name; - size_t size = 0; // except DeleteMarker - std::string storage_class; - bool is_latest = false; // except ListObjects V1/V2 - std::string version_id; // except ListObjects V1/V2 - std::map user_metadata; - bool is_prefix = false; - bool is_delete_marker = false; - std::string encoding_type; - - Item(); - Item(error::Error err); - Item(const Response& response); -}; // struct Item - -struct ListObjectsResponse : public Response { - // Common - std::string name; - std::string encoding_type; - std::string prefix; - std::string delimiter; - bool is_truncated; - unsigned int max_keys; - std::list contents; - - // ListObjectsV1 - std::string marker; - std::string next_marker; - - // ListObjectsV2 - unsigned int key_count; - std::string start_after; - std::string continuation_token; - std::string next_continuation_token; - - // ListObjectVersions - std::string key_marker; - std::string next_key_marker; - std::string version_id_marker; - std::string next_version_id_marker; - - ListObjectsResponse(); - ListObjectsResponse(error::Error err); - ListObjectsResponse(const Response& response); - static ListObjectsResponse ParseXML(std::string_view data, bool version); -}; // struct ListObjectsResponse - -using CopyObjectResponse = PutObjectResponse; - -using ComposeObjectResponse = PutObjectResponse; - -using UploadObjectResponse = PutObjectResponse; -} // namespace s3 -} // namespace minio - -#endif // #ifndef _MINIO_S3_RESPONSE_H diff --git a/include/signer.h b/include/signer.h deleted file mode 100644 index bfa9f04..0000000 --- a/include/signer.h +++ /dev/null @@ -1,65 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_SIGNER_H -#define _MINIO_SIGNER_H - -#include - -#include "http.h" - -namespace minio { -namespace signer { -std::string GetScope(utils::Time& time, std::string_view region, - std::string_view service_name); -std::string GetCanonicalRequestHash(std::string_view method, - std::string_view uri, - std::string_view query_string, - std::string_view headers, - std::string_view signed_headers, - std::string_view content_sha256); -std::string GetStringToSign(utils::Time& date, std::string_view scope, - std::string_view canonical_request_hash); -std::string HmacHash(std::string_view key, std::string_view data); -std::string GetSigningKey(std::string_view secret_key, utils::Time& date, - std::string_view region, - std::string_view service_name); -std::string GetSignature(std::string_view signing_key, - std::string_view string_to_sign); -std::string GetAuthorization(std::string_view access_key, - std::string_view scope, - std::string_view signed_headers, - std::string_view signature); -utils::Multimap& SignV4(std::string_view service_name, http::Method& method, - std::string_view uri, std::string_view region, - utils::Multimap& headers, utils::Multimap& query_params, - std::string_view access_key, - std::string_view secret_key, - std::string_view content_sha256, utils::Time& date); -utils::Multimap& SignV4S3(http::Method& method, std::string_view uri, - std::string_view region, utils::Multimap& headers, - utils::Multimap& query_params, - std::string_view access_key, - std::string_view secret_key, - std::string_view content_sha256, utils::Time& date); -utils::Multimap& SignV4STS(http::Method& method, std::string_view uri, - std::string_view region, utils::Multimap& headers, - utils::Multimap& query_params, - std::string_view access_key, - std::string_view secret_key, - std::string_view content_sha256, utils::Time& date); -} // namespace signer -} // namespace minio -#endif // #ifndef __MINIO_SIGNER_H diff --git a/include/sse.h b/include/sse.h deleted file mode 100644 index 6f386b2..0000000 --- a/include/sse.h +++ /dev/null @@ -1,67 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_S3_SSE_H -#define _MINIO_S3_SSE_H - -#include "utils.h" - -namespace minio { -namespace s3 { -class Sse { - public: - utils::Multimap empty_; - - public: - Sse() {} - virtual ~Sse() {} - bool TlsRequired() { return true; } - utils::Multimap CopyHeaders() { return empty_; } - virtual utils::Multimap Headers() = 0; -}; // class Sse - -class SseCustomerKey : public Sse { - private: - utils::Multimap headers; - utils::Multimap copy_headers; - - public: - SseCustomerKey(std::string_view key); - utils::Multimap Headers() { return headers; } - utils::Multimap CopyHeaders() { return copy_headers; } -}; // class SseCustomerKey - -class SseKms : public Sse { - private: - utils::Multimap headers; - - public: - SseKms(std::string_view key, std::string_view context); - utils::Multimap Headers() { return headers; } -}; // class SseKms - -class SseS3 : public Sse { - private: - utils::Multimap headers; - - public: - SseS3(); - utils::Multimap Headers() { return headers; } - bool TlsRequired() { return false; } -}; // class SseS3 -} // namespace s3 -} // namespace minio - -#endif // #ifndef __MINIO_S3_SSE_H diff --git a/include/types.h b/include/types.h deleted file mode 100644 index 9c394b8..0000000 --- a/include/types.h +++ /dev/null @@ -1,124 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_S3_TYPES_H -#define _MINIO_S3_TYPES_H - -#include - -#include "utils.h" - -namespace minio { -namespace s3 { -enum class RetentionMode { kGovernance, kCompliance }; - -// StringToRetentionMode converts string to retention mode enum. -RetentionMode StringToRetentionMode(std::string_view str) throw(); - -constexpr bool IsRetentionModeValid(RetentionMode& retention) { - switch (retention) { - case RetentionMode::kGovernance: - case RetentionMode::kCompliance: - return true; - } - return false; -} - -// RetentionModeToString converts retention mode enum to string. -constexpr const char* RetentionModeToString(RetentionMode& retention) throw() { - switch (retention) { - case RetentionMode::kGovernance: - return "GOVERNANCE"; - case RetentionMode::kCompliance: - return "COMPLIANCE"; - default: { - std::cerr << "ABORT: Unknown retention mode. This should not happen." - << std::endl; - std::terminate(); - } - } - return NULL; -} - -enum class LegalHold { kOn, kOff }; - -// StringToLegalHold converts string to legal hold enum. -LegalHold StringToLegalHold(std::string_view str) throw(); - -constexpr bool IsLegalHoldValid(LegalHold& legal_hold) { - switch (legal_hold) { - case LegalHold::kOn: - case LegalHold::kOff: - return true; - } - return false; -} - -// LegalHoldToString converts legal hold enum to string. -constexpr const char* LegalHoldToString(LegalHold& legal_hold) throw() { - switch (legal_hold) { - case LegalHold::kOn: - return "ON"; - case LegalHold::kOff: - return "OFF"; - default: { - std::cerr << "ABORT: Unknown legal hold. This should not happen." - << std::endl; - std::terminate(); - } - } - return NULL; -} - -enum class Directive { kCopy, kReplace }; - -// StringToDirective converts string to directive enum. -Directive StringToDirective(std::string_view str) throw(); - -// DirectiveToString converts directive enum to string. -constexpr const char* DirectiveToString(Directive& directive) throw() { - switch (directive) { - case Directive::kCopy: - return "COPY"; - case Directive::kReplace: - return "REPLACE"; - default: { - std::cerr << "ABORT: Unknown directive. This should not happen." - << std::endl; - std::terminate(); - } - } - return NULL; -} - -struct Bucket { - std::string name; - utils::Time creation_date; -}; // struct Bucket - -struct Part { - unsigned int number; - std::string etag; - utils::Time last_modified; - size_t size; -}; // struct Part - -struct Retention { - RetentionMode mode; - utils::Time retain_until_date; -}; // struct Retention -} // namespace s3 -} // namespace minio -#endif // #ifndef __MINIO_S3_TYPES_H diff --git a/include/utils.h b/include/utils.h deleted file mode 100644 index dd5b0a0..0000000 --- a/include/utils.h +++ /dev/null @@ -1,178 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef _MINIO_UTILS_H -#define _MINIO_UTILS_H - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "error.h" - -namespace minio { -namespace utils { -inline constexpr unsigned int kMaxMultipartCount = 10000; // 10000 parts -inline constexpr unsigned long kMaxObjectSize = - 5L * 1024 * 1024 * 1024 * 1024; // 5TiB -inline constexpr unsigned long kMaxPartSize = 5L * 1024 * 1024 * 1024; // 5GiB -inline constexpr unsigned int kMinPartSize = 5 * 1024 * 1024; // 5MiB - -// FormatTime formats time as per format. -std::string FormatTime(const std::tm* time, const char* format); - -// StringToBool converts string to bool. -bool StringToBool(std::string_view str); - -// BoolToString converts bool to string. -inline const char* const BoolToString(bool b) { return b ? "true" : "false"; } - -// Trim trims leading and trailing character of a string. -std::string Trim(std::string_view str, char ch = ' '); - -// CheckNonemptystring checks whether string is not empty after trimming -// whitespaces. -bool CheckNonEmptyString(std::string_view str); - -// ToLower converts string to lower case. -std::string ToLower(std::string str); - -// StartsWith returns whether str starts with prefix or not. -bool StartsWith(std::string_view str, std::string_view prefix); - -// EndsWith returns whether str ends with suffix or not. -bool EndsWith(std::string_view str, std::string_view suffix); - -// Contains returns whether str has ch. -bool Contains(std::string_view str, char ch); - -// Contains returns whether str has substr. -bool Contains(std::string_view str, std::string_view substr); - -// Join returns a string of joined values by delimiter. -std::string Join(std::list values, std::string delimiter); - -// Join returns a string of joined values by delimiter. -std::string Join(std::vector values, std::string delimiter); - -// EncodePath does URL encoding of path. It also normalizes multiple slashes. -std::string EncodePath(std::string_view path); - -// Sha256hash computes SHA-256 of data and return hash as hex encoded value. -std::string Sha256Hash(std::string_view str); - -// Base64Encode encodes string to base64. -std::string Base64Encode(std::string_view str); - -// Md5sumHash computes MD5 of data and return hash as Base64 encoded value. -std::string Md5sumHash(std::string_view str); - -error::Error CheckBucketName(std::string_view bucket_name, bool strict = false); -error::Error ReadPart(std::istream& stream, char* buf, size_t size, - size_t& bytes_read); -error::Error CalcPartInfo(long object_size, size_t& part_size, - long& part_count); - -/** - * Time represents date and time with timezone. - */ -class Time { - private: - struct timeval tv_; - bool utc_; - - public: - Time(); - Time(std::time_t tv_sec, suseconds_t tv_usec, bool utc); - std::tm* ToUTC(); - std::string ToSignerDate(); - std::string ToAmzDate(); - std::string ToHttpHeaderValue(); - static Time FromHttpHeaderValue(const char* value); - std::string ToISO8601UTC(); - static Time FromISO8601UTC(const char* value); - static Time Now(); - operator bool() const { return tv_.tv_sec != 0 && tv_.tv_usec != 0; } -}; // class Time - -/** - * Multimap represents dictionary of keys and their multiple values. - */ -class Multimap { - private: - std::map> map_; - std::map> keys_; - - public: - Multimap(); - Multimap(const Multimap& headers); - void Add(std::string key, std::string value); - void AddAll(const Multimap& headers); - std::list ToHttpHeaders(); - std::string ToQueryString(); - operator bool() const { return !map_.empty(); } - bool Contains(std::string_view key); - std::list Get(std::string_view key); - std::string GetFront(std::string_view key); - std::list Keys(); - void GetCanonicalHeaders(std::string& signed_headers, - std::string& canonical_headers); - std::string GetCanonicalQueryString(); -}; // class Multimap - -/** - * Url represents HTTP URL and it's components. - */ -struct Url { - bool is_https; - std::string host; - std::string path; - std::string query_string; - - operator bool() const { return !host.empty(); } - std::string String(); -}; // struct Url - -/** - * CharBuffer represents stream buffer wrapping character array and its size. - */ -struct CharBuffer : std::streambuf { - CharBuffer(char* buf, size_t size) { this->setg(buf, buf, buf + size); } - - pos_type seekoff(off_type off, std::ios_base::seekdir dir, - std::ios_base::openmode which = std::ios_base::in) override { - if (dir == std::ios_base::cur) - gbump(off); - else if (dir == std::ios_base::end) - setg(eback(), egptr() + off, egptr()); - else if (dir == std::ios_base::beg) - setg(eback(), eback() + off, egptr()); - return gptr() - eback(); - } - - pos_type seekpos(pos_type sp, std::ios_base::openmode which) override { - return seekoff(sp - pos_type(off_type(0)), std::ios_base::beg, which); - } -}; // struct CharBuffer -} // namespace utils -} // namespace minio - -#endif // #ifndef _MINIO_UTILS_H diff --git a/index.html b/index.html new file mode 100644 index 0000000..be47fd5 --- /dev/null +++ b/index.html @@ -0,0 +1,168 @@ + + + + + + + +MinIO C++ SDK: Main Page + + + + + + + + + +
+
+ + + + + + +
+
MinIO C++ SDK +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
MinIO C++ SDK Documentation
+
+
+

+

NOTE: This project is work in progress.

+
+

MinIO C++ SDK is Simple Storage Service (aka S3) client to perform bucket and object operations to any Amazon S3 compatible object storage service.

+

For a complete list of APIs and examples, please take a look at the MinIO C++ Client API Reference

+

+Build requirements

+
    +
  • A working C++ development environment supporting C++17 standards.
  • +
  • CMake 3.10 or higher.
  • +
  • vcpkg.
  • +
+

+Install from vcpkg

+
vcpkg install minio-cpp
+

+Building source

+
$ git clone https://github.com/minio/minio-cpp
+
$ cd minio-cpp
+
$ wget --quiet -O vcpkg-master.zip https://github.com/microsoft/vcpkg/archive/refs/heads/master.zip
+
$ unzip -qq vcpkg-master.zip
+
$ ./vcpkg-master/bootstrap-vcpkg.sh
+
$ ./vcpkg-master/vcpkg integrate install
+
$ cmake -B ./build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=./vcpkg-master/scripts/buildsystems/vcpkg.cmake
+
$ cmake --build ./build --config Debug
+

+Example:: file-uploader.cc

+
#include <client.h>
+
+
int main(int argc, char* argv[]) {
+
// Create S3 base URL.
+
minio::http::BaseUrl base_url;
+
base_url.SetHost("play.min.io");
+
+
// Create credential provider.
+
minio::creds::StaticProvider provider(
+
"Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");
+
+
// Create S3 client.
+
minio::s3::Client client(base_url, &provider);
+
+
std::string bucket_name = "asiatrip";
+
+
// Check 'asiatrip' bucket exist or not.
+
bool exist;
+
{
+
minio::s3::BucketExistsArgs args;
+
args.bucket_ = bucket_name;
+
+
minio::s3::BucketExistsResponse resp = client.BucketExists(args);
+
if (!resp) {
+
std::cout << "unable to do bucket existence check; " << resp.GetError()
+
<< std::endl;
+
return EXIT_FAILURE;
+
}
+
+
exist = resp.exist_;
+
}
+
+
// Make 'asiatrip' bucket if not exist.
+
if (!exist) {
+
minio::s3::MakeBucketArgs args;
+
args.bucket_ = bucket_name;
+
+
minio::s3::MakeBucketResponse resp = client.MakeBucket(args);
+
if (!resp) {
+
std::cout << "unable to create bucket; " << resp.GetError() << std::endl;
+
return EXIT_FAILURE;
+
}
+
}
+
+
// Upload '/home/user/Photos/asiaphotos.zip' as object name
+
// 'asiaphotos-2015.zip' to bucket 'asiatrip'.
+
minio::s3::UploadObjectArgs args;
+
args.bucket_ = bucket_name;
+
args.object_ = "asiaphotos-2015.zip";
+
args.filename_ = "/home/user/Photos/asiaphotos.zip";
+
+
minio::s3::UploadObjectResponse resp = client.UploadObject(args);
+
if (!resp) {
+
std::cout << "unable to upload object; " << resp.GetError() << std::endl;
+
return EXIT_FAILURE;
+
}
+
+
std::cout << "'/home/user/Photos/asiaphotos.zip' is successfully uploaded as "
+
<< "object 'asiaphotos-2015.zip' to bucket 'asiatrip'."
+
<< std::endl;
+
+
return EXIT_SUCCESS;
+
}
+

+License

+

This SDK is distributed under the Apache License, Version 2.0, see LICENSE for more information.

+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/menu.js b/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 0000000..e4d9d70 --- /dev/null +++ b/menudata.js @@ -0,0 +1,32 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/miniocpp.pc.in b/miniocpp.pc.in deleted file mode 100644 index ef7d572..0000000 --- a/miniocpp.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ -includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ - -Name: @PROJECT_NAME@ -Description: @PROJECT_DESCRIPTION@ -Version: @PROJECT_VERSION@ - -Requires: -Libs: -L${libdir} -lminiocpp -Cflags: -I${includedir} \ No newline at end of file diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/nav_h.png differ diff --git a/open.png b/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/open.png differ diff --git a/request-builder_8h_source.html b/request-builder_8h_source.html new file mode 100644 index 0000000..c6f2401 --- /dev/null +++ b/request-builder_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/request-builder.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    request-builder.h
    +
    +
    +
    1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
    +
    2 // Copyright 2022 MinIO, Inc.
    +
    3 //
    +
    4 // Licensed under the Apache License, Version 2.0 (the "License");
    +
    5 // you may not use this file except in compliance with the License.
    +
    6 // You may obtain a copy of the License at
    +
    7 //
    +
    8 // http://www.apache.org/licenses/LICENSE-2.0
    +
    9 //
    +
    10 // Unless required by applicable law or agreed to in writing, software
    +
    11 // distributed under the License is distributed on an "AS IS" BASIS,
    +
    12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +
    13 // See the License for the specific language governing permissions and
    +
    14 // limitations under the License.
    +
    15 
    +
    16 #ifndef _MINIO_REQUEST_BUILDER_H
    +
    17 #define _MINIO_REQUEST_BUILDER_H
    +
    18 
    +
    19 #include "creds.h"
    +
    20 #include "signer.h"
    +
    21 
    +
    22 namespace minio {
    +
    23 namespace s3 {
    + +
    25  http::Method method;
    +
    26  std::string region;
    +
    27  http::BaseUrl& base_url;
    +
    28 
    +
    29  std::string user_agent;
    +
    30 
    +
    31  utils::Multimap headers;
    +
    32  utils::Multimap query_params;
    +
    33 
    +
    34  std::string bucket_name;
    +
    35  std::string object_name;
    +
    36 
    +
    37  std::string_view body = "";
    +
    38 
    +
    39  http::DataCallback data_callback = NULL;
    +
    40  void* user_arg = NULL;
    +
    41 
    +
    42  std::string sha256;
    +
    43  utils::Time date;
    +
    44 
    +
    45  bool debug = false;
    +
    46  bool ignore_cert_check = false;
    +
    47 
    +
    48  RequestBuilder(http::Method httpmethod, std::string regionvalue,
    +
    49  http::BaseUrl& baseurl);
    +
    50  http::Request Build(creds::Provider* provider = NULL);
    +
    51 
    +
    52  private:
    +
    53  void BuildHeaders(utils::Url& url, creds::Provider* provider);
    +
    54 }; // struct RequestBuilder
    +
    55 } // namespace s3
    +
    56 } // namespace minio
    +
    57 #endif // #ifndef __MINIO_REQUEST_BUILDER_H
    +
    Definition: creds.h:47
    +
    Definition: utils.h:119
    +
    Definition: utils.h:97
    +
    Definition: http.h:53
    +
    Definition: http.h:87
    +
    Definition: request-builder.h:24
    +
    Definition: utils.h:144
    +
    + + + + diff --git a/response_8h_source.html b/response_8h_source.html new file mode 100644 index 0000000..61406b7 --- /dev/null +++ b/response_8h_source.html @@ -0,0 +1,289 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/response.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    response.h
    +
    +
    +
    1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
    +
    2 // Copyright 2022 MinIO, Inc.
    +
    3 //
    +
    4 // Licensed under the Apache License, Version 2.0 (the "License");
    +
    5 // you may not use this file except in compliance with the License.
    +
    6 // You may obtain a copy of the License at
    +
    7 //
    +
    8 // http://www.apache.org/licenses/LICENSE-2.0
    +
    9 //
    +
    10 // Unless required by applicable law or agreed to in writing, software
    +
    11 // distributed under the License is distributed on an "AS IS" BASIS,
    +
    12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +
    13 // See the License for the specific language governing permissions and
    +
    14 // limitations under the License.
    +
    15 
    +
    16 #ifndef _MINIO_S3_RESPONSE_H
    +
    17 #define _MINIO_S3_RESPONSE_H
    +
    18 
    +
    19 #include <pugixml.hpp>
    +
    20 
    +
    21 #include "types.h"
    +
    22 
    +
    23 namespace minio {
    +
    24 namespace s3 {
    +
    25 struct Response {
    +
    26  std::string error;
    +
    27 
    +
    28  int status_code = 0;
    +
    29  utils::Multimap headers;
    +
    30  std::string data;
    +
    31 
    +
    32  std::string code;
    +
    33  std::string message;
    +
    34  std::string resource;
    +
    35  std::string request_id;
    +
    36  std::string host_id;
    +
    37  std::string bucket_name;
    +
    38  std::string object_name;
    +
    39 
    +
    40  Response();
    + +
    42  Response(const Response& response);
    +
    43  operator bool() const {
    +
    44  return error.empty() && code.empty() && message.empty() &&
    +
    45  (status_code == 0 || status_code >= 200 && status_code <= 299);
    +
    46  }
    +
    47  std::string GetError();
    +
    48  static Response ParseXML(std::string_view data, int status_code,
    +
    49  utils::Multimap headers);
    +
    50 }; // struct Response
    +
    51 
    +
    52 struct GetRegionResponse : public Response {
    +
    53  std::string region;
    +
    54 
    +
    55  GetRegionResponse(std::string regionvalue);
    + +
    57  GetRegionResponse(const Response& response);
    +
    58 }; // struct GetRegionResponse
    +
    59 
    + +
    61 
    +
    62 struct ListBucketsResponse : public Response {
    +
    63  std::list<Bucket> buckets;
    +
    64 
    +
    65  ListBucketsResponse(std::list<Bucket> bucketlist);
    + +
    67  ListBucketsResponse(const Response& response);
    +
    68  static ListBucketsResponse ParseXML(std::string_view data);
    +
    69 }; // struct ListBucketsResponse
    +
    70 
    +
    71 struct BucketExistsResponse : public Response {
    +
    72  bool exist = false;
    +
    73 
    +
    74  BucketExistsResponse(bool existflag);
    + +
    76  BucketExistsResponse(const Response& response);
    +
    77 }; // struct BucketExistsResponse
    +
    78 
    + +
    80 
    + +
    82 
    + +
    84  std::string location;
    +
    85  std::string etag;
    +
    86  std::string version_id;
    +
    87 
    + + + +
    91  static CompleteMultipartUploadResponse ParseXML(std::string_view data,
    +
    92  std::string version_id);
    +
    93 }; // struct CompleteMultipartUploadResponse
    +
    94 
    + +
    96  std::string upload_id;
    +
    97 
    +
    98  CreateMultipartUploadResponse(std::string uploadid);
    + +
    100  CreateMultipartUploadResponse(const Response& response);
    +
    101 }; // struct CreateMultipartUploadResponse
    +
    102 
    +
    103 struct PutObjectResponse : public Response {
    +
    104  std::string etag;
    +
    105  std::string version_id;
    +
    106 
    + + +
    109  PutObjectResponse(const Response& response);
    +
    110 }; // struct PutObjectResponse
    +
    111 
    + +
    113 
    + +
    115 
    +
    116 struct StatObjectResponse : public Response {
    +
    117  std::string version_id;
    +
    118  std::string etag;
    +
    119  size_t size = 0;
    +
    120  utils::Time last_modified;
    +
    121  RetentionMode retention_mode;
    +
    122  utils::Time retention_retain_until_date;
    +
    123  LegalHold legal_hold;
    +
    124  bool delete_marker;
    +
    125  utils::Multimap user_metadata;
    +
    126 
    + + +
    129  StatObjectResponse(const Response& response);
    +
    130 }; // struct StatObjectResponse
    +
    131 
    + +
    133 
    + +
    135 
    + +
    137 
    +
    138 struct Item : public Response {
    +
    139  std::string etag; // except DeleteMarker
    +
    140  std::string name;
    +
    141  utils::Time last_modified;
    +
    142  std::string owner_id;
    +
    143  std::string owner_name;
    +
    144  size_t size = 0; // except DeleteMarker
    +
    145  std::string storage_class;
    +
    146  bool is_latest = false; // except ListObjects V1/V2
    +
    147  std::string version_id; // except ListObjects V1/V2
    +
    148  std::map<std::string, std::string> user_metadata;
    +
    149  bool is_prefix = false;
    +
    150  bool is_delete_marker = false;
    +
    151  std::string encoding_type;
    +
    152 
    +
    153  Item();
    +
    154  Item(error::Error err);
    +
    155  Item(const Response& response);
    +
    156 }; // struct Item
    +
    157 
    +
    158 struct ListObjectsResponse : public Response {
    +
    159  // Common
    +
    160  std::string name;
    +
    161  std::string encoding_type;
    +
    162  std::string prefix;
    +
    163  std::string delimiter;
    +
    164  bool is_truncated;
    +
    165  unsigned int max_keys;
    +
    166  std::list<Item> contents;
    +
    167 
    +
    168  // ListObjectsV1
    +
    169  std::string marker;
    +
    170  std::string next_marker;
    +
    171 
    +
    172  // ListObjectsV2
    +
    173  unsigned int key_count;
    +
    174  std::string start_after;
    +
    175  std::string continuation_token;
    +
    176  std::string next_continuation_token;
    +
    177 
    +
    178  // ListObjectVersions
    +
    179  std::string key_marker;
    +
    180  std::string next_key_marker;
    +
    181  std::string version_id_marker;
    +
    182  std::string next_version_id_marker;
    +
    183 
    + + +
    186  ListObjectsResponse(const Response& response);
    +
    187  static ListObjectsResponse ParseXML(std::string_view data, bool version);
    +
    188 }; // struct ListObjectsResponse
    +
    189 
    + +
    191 
    + +
    193 
    + +
    195 } // namespace s3
    +
    196 } // namespace minio
    +
    197 
    +
    198 #endif // #ifndef _MINIO_S3_RESPONSE_H
    +
    Definition: error.h:23
    +
    Definition: utils.h:119
    +
    Definition: utils.h:97
    +
    Definition: response.h:71
    + + +
    Definition: response.h:52
    +
    Definition: response.h:138
    +
    Definition: response.h:62
    +
    Definition: response.h:158
    +
    Definition: response.h:103
    +
    Definition: response.h:25
    +
    Definition: response.h:116
    +
    + + + + diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 0000000..1ec5b2d --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..891883d --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['abortmultipartuploadargs_0',['AbortMultipartUploadArgs',['../structminio_1_1s3_1_1AbortMultipartUploadArgs.html',1,'minio::s3']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 0000000..9f80e90 --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..c5f3a35 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['baseargs_1',['BaseArgs',['../structminio_1_1s3_1_1BaseArgs.html',1,'minio::s3']]], + ['baseurl_2',['BaseUrl',['../structminio_1_1http_1_1BaseUrl.html',1,'minio::http']]], + ['bucket_3',['Bucket',['../structminio_1_1s3_1_1Bucket.html',1,'minio::s3']]], + ['bucketargs_4',['BucketArgs',['../structminio_1_1s3_1_1BucketArgs.html',1,'minio::s3']]], + ['bucketexistsresponse_5',['BucketExistsResponse',['../structminio_1_1s3_1_1BucketExistsResponse.html',1,'minio::s3']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 0000000..02cfffc --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..39c838e --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['charbuffer_6',['CharBuffer',['../structminio_1_1utils_1_1CharBuffer.html',1,'minio::utils']]], + ['client_7',['Client',['../classminio_1_1s3_1_1Client.html',1,'minio::s3']]], + ['completemultipartuploadargs_8',['CompleteMultipartUploadArgs',['../structminio_1_1s3_1_1CompleteMultipartUploadArgs.html',1,'minio::s3']]], + ['completemultipartuploadresponse_9',['CompleteMultipartUploadResponse',['../structminio_1_1s3_1_1CompleteMultipartUploadResponse.html',1,'minio::s3']]], + ['composeobjectargs_10',['ComposeObjectArgs',['../structminio_1_1s3_1_1ComposeObjectArgs.html',1,'minio::s3']]], + ['composesource_11',['ComposeSource',['../structminio_1_1s3_1_1ComposeSource.html',1,'minio::s3']]], + ['copyobjectargs_12',['CopyObjectArgs',['../structminio_1_1s3_1_1CopyObjectArgs.html',1,'minio::s3']]], + ['createmultipartuploadargs_13',['CreateMultipartUploadArgs',['../structminio_1_1s3_1_1CreateMultipartUploadArgs.html',1,'minio::s3']]], + ['createmultipartuploadresponse_14',['CreateMultipartUploadResponse',['../structminio_1_1s3_1_1CreateMultipartUploadResponse.html',1,'minio::s3']]], + ['credentials_15',['Credentials',['../classminio_1_1creds_1_1Credentials.html',1,'minio::creds']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 0000000..39767b8 --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..6a6e309 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['datacallbackargs_16',['DataCallbackArgs',['../structminio_1_1http_1_1DataCallbackArgs.html',1,'minio::http']]], + ['downloadobjectargs_17',['DownloadObjectArgs',['../structminio_1_1s3_1_1DownloadObjectArgs.html',1,'minio::s3']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 0000000..fc40463 --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..3103625 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_18',['Error',['../classminio_1_1error_1_1Error.html',1,'minio::error']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 0000000..9dd9344 --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..893b3ac --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['getobjectargs_19',['GetObjectArgs',['../structminio_1_1s3_1_1GetObjectArgs.html',1,'minio::s3']]], + ['getregionresponse_20',['GetRegionResponse',['../structminio_1_1s3_1_1GetRegionResponse.html',1,'minio::s3']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 0000000..f1e516d --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..e6a70cb --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['item_21',['Item',['../structminio_1_1s3_1_1Item.html',1,'minio::s3']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 0000000..8ddbf6c --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..eb8d60c --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['listbucketsresponse_22',['ListBucketsResponse',['../structminio_1_1s3_1_1ListBucketsResponse.html',1,'minio::s3']]], + ['listobjectsargs_23',['ListObjectsArgs',['../structminio_1_1s3_1_1ListObjectsArgs.html',1,'minio::s3']]], + ['listobjectscommonargs_24',['ListObjectsCommonArgs',['../structminio_1_1s3_1_1ListObjectsCommonArgs.html',1,'minio::s3']]], + ['listobjectsresponse_25',['ListObjectsResponse',['../structminio_1_1s3_1_1ListObjectsResponse.html',1,'minio::s3']]], + ['listobjectsresult_26',['ListObjectsResult',['../classminio_1_1s3_1_1ListObjectsResult.html',1,'minio::s3']]], + ['listobjectsv1args_27',['ListObjectsV1Args',['../structminio_1_1s3_1_1ListObjectsV1Args.html',1,'minio::s3']]], + ['listobjectsv2args_28',['ListObjectsV2Args',['../structminio_1_1s3_1_1ListObjectsV2Args.html',1,'minio::s3']]], + ['listobjectversionsargs_29',['ListObjectVersionsArgs',['../structminio_1_1s3_1_1ListObjectVersionsArgs.html',1,'minio::s3']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 0000000..83c55ae --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..259c9d1 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['makebucketargs_30',['MakeBucketArgs',['../structminio_1_1s3_1_1MakeBucketArgs.html',1,'minio::s3']]], + ['multimap_31',['Multimap',['../classminio_1_1utils_1_1Multimap.html',1,'minio::utils']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 0000000..1e263c1 --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..d6b8e0c --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['objectargs_32',['ObjectArgs',['../structminio_1_1s3_1_1ObjectArgs.html',1,'minio::s3']]], + ['objectconditionalreadargs_33',['ObjectConditionalReadArgs',['../structminio_1_1s3_1_1ObjectConditionalReadArgs.html',1,'minio::s3']]], + ['objectreadargs_34',['ObjectReadArgs',['../structminio_1_1s3_1_1ObjectReadArgs.html',1,'minio::s3']]], + ['objectversionargs_35',['ObjectVersionArgs',['../structminio_1_1s3_1_1ObjectVersionArgs.html',1,'minio::s3']]], + ['objectwriteargs_36',['ObjectWriteArgs',['../structminio_1_1s3_1_1ObjectWriteArgs.html',1,'minio::s3']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 0000000..3a6cac1 --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..0989a6f --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['part_37',['Part',['../structminio_1_1s3_1_1Part.html',1,'minio::s3']]], + ['provider_38',['Provider',['../classminio_1_1creds_1_1Provider.html',1,'minio::creds']]], + ['putobjectapiargs_39',['PutObjectApiArgs',['../structminio_1_1s3_1_1PutObjectApiArgs.html',1,'minio::s3']]], + ['putobjectargs_40',['PutObjectArgs',['../structminio_1_1s3_1_1PutObjectArgs.html',1,'minio::s3']]], + ['putobjectbaseargs_41',['PutObjectBaseArgs',['../structminio_1_1s3_1_1PutObjectBaseArgs.html',1,'minio::s3']]], + ['putobjectresponse_42',['PutObjectResponse',['../structminio_1_1s3_1_1PutObjectResponse.html',1,'minio::s3']]] +]; diff --git a/search/all_b.html b/search/all_b.html new file mode 100644 index 0000000..130deb4 --- /dev/null +++ b/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 0000000..f0b5425 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['request_43',['Request',['../structminio_1_1http_1_1Request.html',1,'minio::http']]], + ['requestbuilder_44',['RequestBuilder',['../structminio_1_1s3_1_1RequestBuilder.html',1,'minio::s3']]], + ['response_45',['Response',['../structminio_1_1http_1_1Response.html',1,'minio::http::Response'],['../structminio_1_1s3_1_1Response.html',1,'minio::s3::Response']]], + ['retention_46',['Retention',['../structminio_1_1s3_1_1Retention.html',1,'minio::s3']]] +]; diff --git a/search/all_c.html b/search/all_c.html new file mode 100644 index 0000000..3dd5af0 --- /dev/null +++ b/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 0000000..3fd6819 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['sse_47',['Sse',['../classminio_1_1s3_1_1Sse.html',1,'minio::s3']]], + ['ssecustomerkey_48',['SseCustomerKey',['../classminio_1_1s3_1_1SseCustomerKey.html',1,'minio::s3']]], + ['ssekms_49',['SseKms',['../classminio_1_1s3_1_1SseKms.html',1,'minio::s3']]], + ['sses3_50',['SseS3',['../classminio_1_1s3_1_1SseS3.html',1,'minio::s3']]], + ['staticprovider_51',['StaticProvider',['../classminio_1_1creds_1_1StaticProvider.html',1,'minio::creds']]], + ['statobjectresponse_52',['StatObjectResponse',['../structminio_1_1s3_1_1StatObjectResponse.html',1,'minio::s3']]] +]; diff --git a/search/all_d.html b/search/all_d.html new file mode 100644 index 0000000..af7f2f0 --- /dev/null +++ b/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 0000000..aa00332 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['time_53',['Time',['../classminio_1_1utils_1_1Time.html',1,'minio::utils']]] +]; diff --git a/search/all_e.html b/search/all_e.html new file mode 100644 index 0000000..e25df42 --- /dev/null +++ b/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 0000000..5daaeb8 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['uploadobjectargs_54',['UploadObjectArgs',['../structminio_1_1s3_1_1UploadObjectArgs.html',1,'minio::s3']]], + ['uploadpartargs_55',['UploadPartArgs',['../structminio_1_1s3_1_1UploadPartArgs.html',1,'minio::s3']]], + ['uploadpartcopyargs_56',['UploadPartCopyArgs',['../structminio_1_1s3_1_1UploadPartCopyArgs.html',1,'minio::s3']]], + ['url_57',['Url',['../structminio_1_1utils_1_1Url.html',1,'minio::utils']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 0000000..af8159e --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..dc2ae24 --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['abortmultipartuploadargs_58',['AbortMultipartUploadArgs',['../structminio_1_1s3_1_1AbortMultipartUploadArgs.html',1,'minio::s3']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 0000000..576e916 --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..7e7a3f1 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['baseargs_59',['BaseArgs',['../structminio_1_1s3_1_1BaseArgs.html',1,'minio::s3']]], + ['baseurl_60',['BaseUrl',['../structminio_1_1http_1_1BaseUrl.html',1,'minio::http']]], + ['bucket_61',['Bucket',['../structminio_1_1s3_1_1Bucket.html',1,'minio::s3']]], + ['bucketargs_62',['BucketArgs',['../structminio_1_1s3_1_1BucketArgs.html',1,'minio::s3']]], + ['bucketexistsresponse_63',['BucketExistsResponse',['../structminio_1_1s3_1_1BucketExistsResponse.html',1,'minio::s3']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 0000000..956405e --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..1cb8b29 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['charbuffer_64',['CharBuffer',['../structminio_1_1utils_1_1CharBuffer.html',1,'minio::utils']]], + ['client_65',['Client',['../classminio_1_1s3_1_1Client.html',1,'minio::s3']]], + ['completemultipartuploadargs_66',['CompleteMultipartUploadArgs',['../structminio_1_1s3_1_1CompleteMultipartUploadArgs.html',1,'minio::s3']]], + ['completemultipartuploadresponse_67',['CompleteMultipartUploadResponse',['../structminio_1_1s3_1_1CompleteMultipartUploadResponse.html',1,'minio::s3']]], + ['composeobjectargs_68',['ComposeObjectArgs',['../structminio_1_1s3_1_1ComposeObjectArgs.html',1,'minio::s3']]], + ['composesource_69',['ComposeSource',['../structminio_1_1s3_1_1ComposeSource.html',1,'minio::s3']]], + ['copyobjectargs_70',['CopyObjectArgs',['../structminio_1_1s3_1_1CopyObjectArgs.html',1,'minio::s3']]], + ['createmultipartuploadargs_71',['CreateMultipartUploadArgs',['../structminio_1_1s3_1_1CreateMultipartUploadArgs.html',1,'minio::s3']]], + ['createmultipartuploadresponse_72',['CreateMultipartUploadResponse',['../structminio_1_1s3_1_1CreateMultipartUploadResponse.html',1,'minio::s3']]], + ['credentials_73',['Credentials',['../classminio_1_1creds_1_1Credentials.html',1,'minio::creds']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 0000000..d33343b --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..a153e2d --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['datacallbackargs_74',['DataCallbackArgs',['../structminio_1_1http_1_1DataCallbackArgs.html',1,'minio::http']]], + ['downloadobjectargs_75',['DownloadObjectArgs',['../structminio_1_1s3_1_1DownloadObjectArgs.html',1,'minio::s3']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 0000000..8430b07 --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 0000000..7cfa54a --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_76',['Error',['../classminio_1_1error_1_1Error.html',1,'minio::error']]] +]; diff --git a/search/classes_5.html b/search/classes_5.html new file mode 100644 index 0000000..c2f1b76 --- /dev/null +++ b/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 0000000..0a0c044 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['getobjectargs_77',['GetObjectArgs',['../structminio_1_1s3_1_1GetObjectArgs.html',1,'minio::s3']]], + ['getregionresponse_78',['GetRegionResponse',['../structminio_1_1s3_1_1GetRegionResponse.html',1,'minio::s3']]] +]; diff --git a/search/classes_6.html b/search/classes_6.html new file mode 100644 index 0000000..e39847c --- /dev/null +++ b/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 0000000..cb4c3b1 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['item_79',['Item',['../structminio_1_1s3_1_1Item.html',1,'minio::s3']]] +]; diff --git a/search/classes_7.html b/search/classes_7.html new file mode 100644 index 0000000..a2c4d1a --- /dev/null +++ b/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 0000000..4853aef --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['listbucketsresponse_80',['ListBucketsResponse',['../structminio_1_1s3_1_1ListBucketsResponse.html',1,'minio::s3']]], + ['listobjectsargs_81',['ListObjectsArgs',['../structminio_1_1s3_1_1ListObjectsArgs.html',1,'minio::s3']]], + ['listobjectscommonargs_82',['ListObjectsCommonArgs',['../structminio_1_1s3_1_1ListObjectsCommonArgs.html',1,'minio::s3']]], + ['listobjectsresponse_83',['ListObjectsResponse',['../structminio_1_1s3_1_1ListObjectsResponse.html',1,'minio::s3']]], + ['listobjectsresult_84',['ListObjectsResult',['../classminio_1_1s3_1_1ListObjectsResult.html',1,'minio::s3']]], + ['listobjectsv1args_85',['ListObjectsV1Args',['../structminio_1_1s3_1_1ListObjectsV1Args.html',1,'minio::s3']]], + ['listobjectsv2args_86',['ListObjectsV2Args',['../structminio_1_1s3_1_1ListObjectsV2Args.html',1,'minio::s3']]], + ['listobjectversionsargs_87',['ListObjectVersionsArgs',['../structminio_1_1s3_1_1ListObjectVersionsArgs.html',1,'minio::s3']]] +]; diff --git a/search/classes_8.html b/search/classes_8.html new file mode 100644 index 0000000..17003e4 --- /dev/null +++ b/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 0000000..81db6ab --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['makebucketargs_88',['MakeBucketArgs',['../structminio_1_1s3_1_1MakeBucketArgs.html',1,'minio::s3']]], + ['multimap_89',['Multimap',['../classminio_1_1utils_1_1Multimap.html',1,'minio::utils']]] +]; diff --git a/search/classes_9.html b/search/classes_9.html new file mode 100644 index 0000000..b8afa8c --- /dev/null +++ b/search/classes_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 0000000..19865f6 --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['objectargs_90',['ObjectArgs',['../structminio_1_1s3_1_1ObjectArgs.html',1,'minio::s3']]], + ['objectconditionalreadargs_91',['ObjectConditionalReadArgs',['../structminio_1_1s3_1_1ObjectConditionalReadArgs.html',1,'minio::s3']]], + ['objectreadargs_92',['ObjectReadArgs',['../structminio_1_1s3_1_1ObjectReadArgs.html',1,'minio::s3']]], + ['objectversionargs_93',['ObjectVersionArgs',['../structminio_1_1s3_1_1ObjectVersionArgs.html',1,'minio::s3']]], + ['objectwriteargs_94',['ObjectWriteArgs',['../structminio_1_1s3_1_1ObjectWriteArgs.html',1,'minio::s3']]] +]; diff --git a/search/classes_a.html b/search/classes_a.html new file mode 100644 index 0000000..6788af2 --- /dev/null +++ b/search/classes_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 0000000..7f2d1cd --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['part_95',['Part',['../structminio_1_1s3_1_1Part.html',1,'minio::s3']]], + ['provider_96',['Provider',['../classminio_1_1creds_1_1Provider.html',1,'minio::creds']]], + ['putobjectapiargs_97',['PutObjectApiArgs',['../structminio_1_1s3_1_1PutObjectApiArgs.html',1,'minio::s3']]], + ['putobjectargs_98',['PutObjectArgs',['../structminio_1_1s3_1_1PutObjectArgs.html',1,'minio::s3']]], + ['putobjectbaseargs_99',['PutObjectBaseArgs',['../structminio_1_1s3_1_1PutObjectBaseArgs.html',1,'minio::s3']]], + ['putobjectresponse_100',['PutObjectResponse',['../structminio_1_1s3_1_1PutObjectResponse.html',1,'minio::s3']]] +]; diff --git a/search/classes_b.html b/search/classes_b.html new file mode 100644 index 0000000..3fcb498 --- /dev/null +++ b/search/classes_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 0000000..87d8988 --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['request_101',['Request',['../structminio_1_1http_1_1Request.html',1,'minio::http']]], + ['requestbuilder_102',['RequestBuilder',['../structminio_1_1s3_1_1RequestBuilder.html',1,'minio::s3']]], + ['response_103',['Response',['../structminio_1_1http_1_1Response.html',1,'minio::http::Response'],['../structminio_1_1s3_1_1Response.html',1,'minio::s3::Response']]], + ['retention_104',['Retention',['../structminio_1_1s3_1_1Retention.html',1,'minio::s3']]] +]; diff --git a/search/classes_c.html b/search/classes_c.html new file mode 100644 index 0000000..2f7b1f3 --- /dev/null +++ b/search/classes_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 0000000..2764285 --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['sse_105',['Sse',['../classminio_1_1s3_1_1Sse.html',1,'minio::s3']]], + ['ssecustomerkey_106',['SseCustomerKey',['../classminio_1_1s3_1_1SseCustomerKey.html',1,'minio::s3']]], + ['ssekms_107',['SseKms',['../classminio_1_1s3_1_1SseKms.html',1,'minio::s3']]], + ['sses3_108',['SseS3',['../classminio_1_1s3_1_1SseS3.html',1,'minio::s3']]], + ['staticprovider_109',['StaticProvider',['../classminio_1_1creds_1_1StaticProvider.html',1,'minio::creds']]], + ['statobjectresponse_110',['StatObjectResponse',['../structminio_1_1s3_1_1StatObjectResponse.html',1,'minio::s3']]] +]; diff --git a/search/classes_d.html b/search/classes_d.html new file mode 100644 index 0000000..f9011e7 --- /dev/null +++ b/search/classes_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 0000000..f791c37 --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['time_111',['Time',['../classminio_1_1utils_1_1Time.html',1,'minio::utils']]] +]; diff --git a/search/classes_e.html b/search/classes_e.html new file mode 100644 index 0000000..bb33dcf --- /dev/null +++ b/search/classes_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 0000000..a79b5e0 --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['uploadobjectargs_112',['UploadObjectArgs',['../structminio_1_1s3_1_1UploadObjectArgs.html',1,'minio::s3']]], + ['uploadpartargs_113',['UploadPartArgs',['../structminio_1_1s3_1_1UploadPartArgs.html',1,'minio::s3']]], + ['uploadpartcopyargs_114',['UploadPartCopyArgs',['../structminio_1_1s3_1_1UploadPartCopyArgs.html',1,'minio::s3']]], + ['url_115',['Url',['../structminio_1_1utils_1_1Url.html',1,'minio::utils']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..9074198 --- /dev/null +++ b/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..fb226f7 --- /dev/null +++ b/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/signer.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    signer.h
    +
    +
    +
    1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
    +
    2 // Copyright 2022 MinIO, Inc.
    +
    3 //
    +
    4 // Licensed under the Apache License, Version 2.0 (the "License");
    +
    5 // you may not use this file except in compliance with the License.
    +
    6 // You may obtain a copy of the License at
    +
    7 //
    +
    8 // http://www.apache.org/licenses/LICENSE-2.0
    +
    9 //
    +
    10 // Unless required by applicable law or agreed to in writing, software
    +
    11 // distributed under the License is distributed on an "AS IS" BASIS,
    +
    12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +
    13 // See the License for the specific language governing permissions and
    +
    14 // limitations under the License.
    +
    15 
    +
    16 #ifndef _MINIO_SIGNER_H
    +
    17 #define _MINIO_SIGNER_H
    +
    18 
    +
    19 #include <openssl/hmac.h>
    +
    20 
    +
    21 #include "http.h"
    +
    22 
    +
    23 namespace minio {
    +
    24 namespace signer {
    +
    25 std::string GetScope(utils::Time& time, std::string_view region,
    +
    26  std::string_view service_name);
    +
    27 std::string GetCanonicalRequestHash(std::string_view method,
    +
    28  std::string_view uri,
    +
    29  std::string_view query_string,
    +
    30  std::string_view headers,
    +
    31  std::string_view signed_headers,
    +
    32  std::string_view content_sha256);
    +
    33 std::string GetStringToSign(utils::Time& date, std::string_view scope,
    +
    34  std::string_view canonical_request_hash);
    +
    35 std::string HmacHash(std::string_view key, std::string_view data);
    +
    36 std::string GetSigningKey(std::string_view secret_key, utils::Time& date,
    +
    37  std::string_view region,
    +
    38  std::string_view service_name);
    +
    39 std::string GetSignature(std::string_view signing_key,
    +
    40  std::string_view string_to_sign);
    +
    41 std::string GetAuthorization(std::string_view access_key,
    +
    42  std::string_view scope,
    +
    43  std::string_view signed_headers,
    +
    44  std::string_view signature);
    +
    45 utils::Multimap& SignV4(std::string_view service_name, http::Method& method,
    +
    46  std::string_view uri, std::string_view region,
    +
    47  utils::Multimap& headers, utils::Multimap& query_params,
    +
    48  std::string_view access_key,
    +
    49  std::string_view secret_key,
    +
    50  std::string_view content_sha256, utils::Time& date);
    +
    51 utils::Multimap& SignV4S3(http::Method& method, std::string_view uri,
    +
    52  std::string_view region, utils::Multimap& headers,
    +
    53  utils::Multimap& query_params,
    +
    54  std::string_view access_key,
    +
    55  std::string_view secret_key,
    +
    56  std::string_view content_sha256, utils::Time& date);
    +
    57 utils::Multimap& SignV4STS(http::Method& method, std::string_view uri,
    +
    58  std::string_view region, utils::Multimap& headers,
    +
    59  utils::Multimap& query_params,
    +
    60  std::string_view access_key,
    +
    61  std::string_view secret_key,
    +
    62  std::string_view content_sha256, utils::Time& date);
    +
    63 } // namespace signer
    +
    64 } // namespace minio
    +
    65 #endif // #ifndef __MINIO_SIGNER_H
    +
    + + + + diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/splitbar.png differ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 640f276..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# MinIO C++ Library for Amazon S3 Compatible Cloud Storage -# Copyright 2021 MinIO, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -SET(SRCS args.cc client.cc creds.cc http.cc response.cc signer.cc sse.cc types.cc utils.cc request-builder.cc) -SET(S3CLIENT_INSTALL_LIST) - -add_library(miniocpp STATIC ${SRCS}) -target_link_libraries(miniocpp ${requiredlibs}) - -SET(S3CLIENT_INSTALL_LIST ${S3CLIENT_INSTALL_LIST} miniocpp) - -SET_TARGET_PROPERTIES(miniocpp PROPERTIES VERSION ${MINIOCPP_MAJOR_VERSION}.${MINIOCPP_MINOR_VERSION}.${MINIOCPP_PATCH_VERSION}) -SET_TARGET_PROPERTIES(miniocpp PROPERTIES CLEAN_DIRECT_OUTPUT 1) - -# install the library -INSTALL(TARGETS ${S3CLIENT_INSTALL_LIST} - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) diff --git a/src/args.cc b/src/args.cc deleted file mode 100644 index 801c9d1..0000000 --- a/src/args.cc +++ /dev/null @@ -1,363 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "args.h" - -minio::error::Error minio::s3::BucketArgs::Validate() { - return utils::CheckBucketName(bucket); -} - -minio::error::Error minio::s3::ObjectArgs::Validate() { - if (error::Error err = BucketArgs::Validate()) return err; - if (!utils::CheckNonEmptyString(object)) { - return error::Error("object name cannot be empty"); - } - - return error::SUCCESS; -} - -minio::utils::Multimap minio::s3::ObjectWriteArgs::Headers() { - utils::Multimap headers; - headers.AddAll(extra_headers); - headers.AddAll(headers); - headers.AddAll(user_metadata); - - if (sse != NULL) headers.AddAll(sse->Headers()); - - std::string tagging; - for (auto& [key, value] : tags) { - std::string tag = curlpp::escape(key) + "=" + curlpp::escape(value); - if (!tagging.empty()) tagging += "&"; - tagging += tag; - } - if (!tagging.empty()) headers.Add("x-amz-tagging", tagging); - - if (retention != NULL) { - headers.Add("x-amz-object-lock-mode", - RetentionModeToString(retention->mode)); - headers.Add("x-amz-object-lock-retain-until-date", - retention->retain_until_date.ToISO8601UTC()); - } - - if (legal_hold) headers.Add("x-amz-object-lock-legal-hold", "ON"); - - return headers; -} - -minio::utils::Multimap minio::s3::ObjectConditionalReadArgs::Headers() { - size_t* off = offset; - size_t* len = length; - - size_t zero = 0; - if (len != NULL && off == NULL) { - off = &zero; - } - - std::string range; - if (off != NULL) { - range = std::string("bytes=") + std::to_string(*off) + "-"; - if (len != NULL) { - range += std::to_string(*off + *len - 1); - } - } - - utils::Multimap headers; - if (!range.empty()) headers.Add("Range", range); - if (!match_etag.empty()) headers.Add("if-match", match_etag); - if (!not_match_etag.empty()) headers.Add("if-none-match", not_match_etag); - if (modified_since) { - headers.Add("if-modified-since", modified_since.ToHttpHeaderValue()); - } - if (unmodified_since) { - headers.Add("if-unmodified-since", unmodified_since.ToHttpHeaderValue()); - } - if (ssec != NULL) headers.AddAll(ssec->Headers()); - - return headers; -} - -minio::utils::Multimap minio::s3::ObjectConditionalReadArgs::CopyHeaders() { - utils::Multimap headers; - - std::string copy_source = curlpp::escape("/" + bucket + "/" + object); - if (!version_id.empty()) { - copy_source += "?versionId=" + curlpp::escape(version_id); - } - - headers.Add("x-amz-copy-source", copy_source); - - if (ssec != NULL) headers.AddAll(ssec->CopyHeaders()); - if (!match_etag.empty()) { - headers.Add("x-amz-copy-source-if-match", match_etag); - } - if (!not_match_etag.empty()) { - headers.Add("x-amz-copy-source-if-none-match", not_match_etag); - } - if (modified_since) { - headers.Add("x-amz-copy-source-if-modified-since", - modified_since.ToHttpHeaderValue()); - } - if (unmodified_since) { - headers.Add("x-amz-copy-source-if-unmodified-since", - unmodified_since.ToHttpHeaderValue()); - } - - return headers; -} - -minio::error::Error minio::s3::MakeBucketArgs::Validate() { - return utils::CheckBucketName(bucket, true); -} - -minio::error::Error minio::s3::AbortMultipartUploadArgs::Validate() { - if (error::Error err = ObjectArgs::Validate()) return err; - if (!utils::CheckNonEmptyString(upload_id)) { - return error::Error("upload ID cannot be empty"); - } - - return error::SUCCESS; -} - -minio::error::Error minio::s3::CompleteMultipartUploadArgs::Validate() { - if (error::Error err = ObjectArgs::Validate()) return err; - if (!utils::CheckNonEmptyString(upload_id)) { - return error::Error("upload ID cannot be empty"); - } - - return error::SUCCESS; -} - -minio::error::Error minio::s3::UploadPartArgs::Validate() { - if (error::Error err = ObjectArgs::Validate()) return err; - if (!utils::CheckNonEmptyString(upload_id)) { - return error::Error("upload ID cannot be empty"); - } - if (part_number < 1 || part_number > 10000) { - return error::Error("part number must be between 1 and 10000"); - } - - return error::SUCCESS; -} - -minio::error::Error minio::s3::UploadPartCopyArgs::Validate() { - if (error::Error err = ObjectArgs::Validate()) return err; - if (!utils::CheckNonEmptyString(upload_id)) { - return error::Error("upload ID cannot be empty"); - } - if (part_number < 1 || part_number > 10000) { - return error::Error("part number must be between 1 and 10000"); - } - - return error::SUCCESS; -} - -minio::error::Error minio::s3::DownloadObjectArgs::Validate() { - if (error::Error err = ObjectReadArgs::Validate()) return err; - if (!utils::CheckNonEmptyString(filename)) { - return error::Error("filename cannot be empty"); - } - - if (!overwrite && std::filesystem::exists(filename)) { - return error::Error("file " + filename + " already exists"); - } - - return error::SUCCESS; -} - -minio::error::Error minio::s3::GetObjectArgs::Validate() { - if (error::Error err = ObjectConditionalReadArgs::Validate()) return err; - if (data_callback == NULL) { - return error::Error("data callback must be set"); - } - - return error::SUCCESS; -} - -minio::s3::ListObjectsV1Args::ListObjectsV1Args() {} - -minio::s3::ListObjectsV1Args::ListObjectsV1Args(ListObjectsArgs args) { - extra_headers = args.extra_headers; - extra_query_params = args.extra_query_params; - bucket = args.bucket; - region = args.region; - - delimiter = args.delimiter; - encoding_type = args.use_url_encoding_type ? "url" : ""; - max_keys = args.max_keys; - prefix = args.prefix; - - marker = args.marker; -} - -minio::s3::ListObjectsV2Args::ListObjectsV2Args() {} - -minio::s3::ListObjectsV2Args::ListObjectsV2Args(ListObjectsArgs args) { - extra_headers = args.extra_headers; - extra_query_params = args.extra_query_params; - bucket = args.bucket; - region = args.region; - - delimiter = args.delimiter; - encoding_type = args.use_url_encoding_type ? "url" : ""; - max_keys = args.max_keys; - prefix = args.prefix; - - start_after = args.start_after; - continuation_token = args.continuation_token; - fetch_owner = args.fetch_owner; - include_user_metadata = args.include_user_metadata; -} - -minio::s3::ListObjectVersionsArgs::ListObjectVersionsArgs() {} - -minio::s3::ListObjectVersionsArgs::ListObjectVersionsArgs( - ListObjectsArgs args) { - extra_headers = args.extra_headers; - extra_query_params = args.extra_query_params; - bucket = args.bucket; - region = args.region; - - delimiter = args.delimiter; - encoding_type = args.use_url_encoding_type ? "url" : ""; - max_keys = args.max_keys; - prefix = args.prefix; - - key_marker = args.key_marker; - version_id_marker = args.version_id_marker; -} - -minio::s3::PutObjectArgs::PutObjectArgs(std::istream& istream, long objectsize, - long partsize) - : stream(istream) { - object_size = objectsize; - part_size = partsize; -} - -minio::error::Error minio::s3::PutObjectArgs::Validate() { - if (error::Error err = ObjectArgs::Validate()) return err; - return utils::CalcPartInfo(object_size, part_size, part_count); -} - -minio::error::Error minio::s3::CopyObjectArgs::Validate() { - if (error::Error err = ObjectArgs::Validate()) return err; - if (error::Error err = source.Validate()) return err; - - if (source.offset != NULL || source.length != NULL) { - if (metadata_directive != NULL && *metadata_directive == Directive::kCopy) { - return error::Error( - "COPY metadata directive is not applicable to source object with " - "range"); - } - - if (tagging_directive != NULL && *tagging_directive == Directive::kCopy) { - return error::Error( - "COPY tagging directive is not applicable to source object with " - "range"); - } - } - - return error::SUCCESS; -} - -minio::error::Error minio::s3::ComposeSource::BuildHeaders(size_t object_size, - std::string etag) { - std::string msg = "source " + bucket + "/" + object; - if (!version_id.empty()) msg += "?versionId=" + version_id; - msg += ": "; - - if (offset != NULL && *offset >= object_size) { - return error::Error(msg + "offset " + std::to_string(*offset) + - " is beyond object size " + - std::to_string(object_size)); - } - - if (length != NULL) { - if (*length > object_size) { - return error::Error(msg + "length " + std::to_string(*length) + - " is beyond object size " + - std::to_string(object_size)); - } - - size_t off = 0; - if (offset != NULL) off = *offset; - if ((off + *length) > object_size) { - return error::Error( - msg + "compose size " + std::to_string(off + *length) + - " is beyond object size " + std::to_string(object_size)); - } - } - - object_size_ = object_size; - headers_ = CopyHeaders(); - if (!headers_.Contains("x-amz-copy-source-if-match")) { - headers_.Add("x-amz-copy-source-if-match", etag); - } - - return error::SUCCESS; -} - -size_t minio::s3::ComposeSource::ObjectSize() { - if (object_size_ == -1) { - std::cerr << "ABORT: ComposeSource::BuildHeaders() must be called prior to " - "this method invocation. This shoud not happen." - << std::endl; - std::terminate(); - } - - return object_size_; -} - -minio::utils::Multimap minio::s3::ComposeSource::Headers() { - if (!headers_) { - std::cerr << "ABORT: ComposeSource::BuildHeaders() must be called prior to " - "this method invocation. This shoud not happen." - << std::endl; - std::terminate(); - } - - return headers_; -} - -minio::error::Error minio::s3::ComposeObjectArgs::Validate() { - if (error::Error err = ObjectArgs::Validate()) return err; - if (sources.empty()) return error::Error("compose sources cannot be empty"); - - int i = 1; - for (auto& source : sources) { - if (error::Error err = source.Validate()) { - return error::Error("source " + std::to_string(i) + ": " + err.String()); - } - i++; - } - - return error::SUCCESS; -} - -minio::error::Error minio::s3::UploadObjectArgs::Validate() { - if (error::Error err = ObjectArgs::Validate()) return err; - - if (!utils::CheckNonEmptyString(filename)) { - return error::Error("filename cannot be empty"); - } - - if (!std::filesystem::exists(filename)) { - return error::Error("file " + filename + " does not exist"); - } - - std::filesystem::path file_path = filename; - size_t obj_size = std::filesystem::file_size(file_path); - object_size = obj_size; - return utils::CalcPartInfo(object_size, part_size, part_count); -} diff --git a/src/client.cc b/src/client.cc deleted file mode 100644 index 4d8756e..0000000 --- a/src/client.cc +++ /dev/null @@ -1,1402 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -minio::utils::Multimap minio::s3::GetCommonListObjectsQueryParams( - std::string delimiter, std::string encoding_type, unsigned int max_keys, - std::string prefix) { - utils::Multimap query_params; - query_params.Add("delimiter", delimiter); - query_params.Add("max-keys", std::to_string(max_keys > 0 ? max_keys : 1000)); - query_params.Add("prefix", prefix); - if (!encoding_type.empty()) query_params.Add("encoding-type", encoding_type); - return query_params; -} - -minio::s3::Client::Client(http::BaseUrl& base_url, creds::Provider* provider) - : base_url_(base_url) { - if (!base_url_) { - std::cerr << "base URL must not be empty" << std::endl; - std::terminate(); - } - - provider_ = provider; -} - -void minio::s3::Client::HandleRedirectResponse( - std::string& code, std::string& message, int status_code, - http::Method method, utils::Multimap headers, std::string_view bucket_name, - bool retry) { - switch (status_code) { - case 301: - code = "PermanentRedirect"; - message = "Moved Permanently"; - break; - case 307: - code = "Redirect"; - message = "Temporary redirect"; - break; - case 400: - code = "BadRequest"; - message = "Bad request"; - break; - default: - code = ""; - message = ""; - break; - } - - std::string region = headers.GetFront("x-amz-bucket-region"); - - if (!message.empty() && !region.empty()) { - message += "; use region " + region; - } - - if (retry && !region.empty() && method == http::Method::kHead && - !bucket_name.empty() && !region_map_[std::string(bucket_name)].empty()) { - code = "RetryHead"; - message = ""; - } -} - -minio::s3::Response minio::s3::Client::GetErrorResponse( - http::Response resp, std::string_view resource, http::Method method, - std::string_view bucket_name, std::string_view object_name) { - if (!resp.error.empty()) return error::Error(resp.error); - - Response response; - response.status_code = resp.status_code; - response.headers = resp.headers; - std::string data = resp.body; - if (!data.empty()) { - std::list values = resp.headers.Get("Content-Type"); - for (auto& value : values) { - if (utils::Contains(utils::ToLower(value), "application/xml")) { - return Response::ParseXML(resp.body, resp.status_code, resp.headers); - } - } - - response.error = "invalid response received; status code: " + - std::to_string(resp.status_code) + - "; content-type: " + utils::Join(values, ","); - return response; - } - - switch (resp.status_code) { - case 301: - case 307: - case 400: - HandleRedirectResponse(response.code, response.message, resp.status_code, - method, resp.headers, bucket_name, true); - break; - case 403: - response.code = "AccessDenied"; - response.message = "Access denied"; - break; - case 404: - if (!object_name.empty()) { - response.code = "NoSuchKey"; - response.message = "Object does not exist"; - } else if (bucket_name.empty()) { - response.code = "NoSuchBucket"; - response.message = "Bucket does not exist"; - } else { - response.code = "ResourceNotFound"; - response.message = "Request resource not found"; - } - break; - case 405: - response.code = "MethodNotAllowed"; - response.message = - "The specified method is not allowed against this resource"; - break; - case 409: - if (bucket_name.empty()) { - response.code = "NoSuchBucket"; - response.message = "Bucket does not exist"; - } else { - response.code = "ResourceConflict"; - response.message = "Request resource conflicts"; - } - break; - case 501: - response.code = "MethodNotAllowed"; - response.message = - "The specified method is not allowed against this resource"; - break; - default: - response.error = "server failed with HTTP status code " + - std::to_string(resp.status_code); - return response; - } - - response.resource = resource; - response.request_id = response.headers.GetFront("x-amz-request-id"); - response.host_id = response.headers.GetFront("x-amz-id-2"); - response.bucket_name = bucket_name; - response.object_name = object_name; - - return response; -} - -minio::s3::Response minio::s3::Client::execute(RequestBuilder& builder) { - http::Request request = builder.Build(provider_); - http::Response resp = request.Execute(); - if (resp) { - Response response; - response.status_code = resp.status_code; - response.headers = resp.headers; - response.data = resp.body; - return response; - } - - Response response = - GetErrorResponse(resp, request.url.path, request.method, - builder.bucket_name, builder.object_name); - if (response.code == "NoSuchBucket" || response.code == "RetryHead") { - region_map_.erase(builder.bucket_name); - } - - return response; -} - -minio::s3::Response minio::s3::Client::Execute(RequestBuilder& builder) { - Response resp = execute(builder); - if (resp || resp.code != "RetryHead") return resp; - - // Retry only once on RetryHead error. - resp = execute(builder); - if (resp || resp.code != "RetryHead") return resp; - - std::string code; - std::string message; - HandleRedirectResponse(code, message, resp.status_code, builder.method, - resp.headers, builder.bucket_name); - resp.code = code; - resp.message = message; - - return resp; -} - -minio::s3::GetRegionResponse minio::s3::Client::GetRegion( - std::string_view bucket_name, std::string_view region) { - std::string base_region = base_url_.region; - if (!region.empty()) { - if (!base_region.empty() && base_region != region) { - return error::Error("region must be " + base_region + ", but passed " + - std::string(region)); - } - - return std::string(region); - } - - if (!base_region.empty()) return base_region; - - if (bucket_name.empty() || provider_ == NULL) return std::string("us-east-1"); - - std::string stored_region = region_map_[std::string(bucket_name)]; - if (!stored_region.empty()) return stored_region; - - RequestBuilder builder(http::Method::kGet, "us-east-1", base_url_); - utils::Multimap query_params; - query_params.Add("location", ""); - builder.query_params = query_params; - builder.bucket_name = bucket_name; - - Response response = Execute(builder); - if (!response) return response; - - pugi::xml_document xdoc; - pugi::xml_parse_result result = xdoc.load_string(response.data.data()); - if (!result) return error::Error("unable to parse XML"); - auto text = xdoc.select_node("/LocationConstraint/text()"); - std::string value = text.node().value(); - - if (value.empty()) { - value = "us-east-1"; - } else if (value == "EU") { - if (base_url_.aws_host) value = "eu-west-1"; - } - - region_map_[std::string(bucket_name)] = value; - - return value; -} - -minio::s3::MakeBucketResponse minio::s3::Client::MakeBucket( - MakeBucketArgs args) { - if (error::Error err = args.Validate()) return err; - - std::string region = args.region; - std::string base_region = base_url_.region; - if (!base_region.empty() && !region.empty() && base_region != region) { - return error::Error("region must be " + base_region + ", but passed " + - region); - } - - if (region.empty()) region = base_region; - if (region.empty()) region = "us-east-1"; - - RequestBuilder builder(http::Method::kPut, region, base_url_); - builder.bucket_name = args.bucket; - - utils::Multimap headers; - if (args.object_lock) headers.Add("x-amz-bucket-object-lock-enabled", "true"); - builder.headers = headers; - - std::string body; - if (region != "us-east-1") { - std::stringstream ss; - ss << "" - << "" << region << "" - << ""; - body = ss.str(); - builder.body = body; - } - - Response response = Execute(builder); - if (response) region_map_[std::string(args.bucket)] = region; - - return response; -} - -minio::s3::ListBucketsResponse minio::s3::Client::ListBuckets( - ListBucketsArgs args) { - RequestBuilder builder(http::Method::kGet, base_url_.region, base_url_); - builder.headers = args.extra_headers; - builder.query_params = args.extra_query_params; - Response resp = Execute(builder); - if (!resp) return resp; - return ListBucketsResponse::ParseXML(resp.data); -} - -minio::s3::ListBucketsResponse minio::s3::Client::ListBuckets() { - return ListBuckets(ListBucketsArgs()); -} - -minio::s3::BucketExistsResponse minio::s3::Client::BucketExists( - BucketExistsArgs args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return (resp.code == "NoSuchBucket") ? false : resp; - } - - RequestBuilder builder(http::Method::kHead, region, base_url_); - builder.bucket_name = args.bucket; - if (Response resp = Execute(builder)) { - return true; - } else { - return (resp.code == "NoSuchBucket") ? false : resp; - } -} - -minio::s3::RemoveBucketResponse minio::s3::Client::RemoveBucket( - RemoveBucketArgs args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kDelete, region, base_url_); - builder.bucket_name = args.bucket; - - return Execute(builder); -} - -minio::s3::AbortMultipartUploadResponse minio::s3::Client::AbortMultipartUpload( - AbortMultipartUploadArgs args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kDelete, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - utils::Multimap query_params; - query_params.Add("uploadId", args.upload_id); - builder.query_params = query_params; - - return Execute(builder); -} - -minio::s3::CompleteMultipartUploadResponse -minio::s3::Client::CompleteMultipartUpload(CompleteMultipartUploadArgs args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kPost, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - utils::Multimap query_params; - query_params.Add("uploadId", args.upload_id); - builder.query_params = query_params; - - std::stringstream ss; - ss << ""; - for (auto& part : args.parts) { - ss << "" - << "" << part.number << "" - << "" - << "\"" << part.etag << "\"" - << "" - << ""; - } - ss << ""; - std::string body = ss.str(); - builder.body = body; - - utils::Multimap headers; - headers.Add("Content-Type", "application/xml"); - headers.Add("Content-MD5", utils::Md5sumHash(body)); - builder.headers = headers; - - Response response = Execute(builder); - if (!response) return response; - return CompleteMultipartUploadResponse::ParseXML( - response.data, response.headers.GetFront("x-amz-version-id")); -} - -minio::s3::CreateMultipartUploadResponse -minio::s3::Client::CreateMultipartUpload(CreateMultipartUploadArgs args) { - if (error::Error err = args.Validate()) return err; - - if (!args.headers.Contains("Content-Type")) { - args.headers.Add("Content-Type", "application/octet-stream"); - } - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kPost, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - utils::Multimap query_params; - query_params.Add("uploads", ""); - builder.query_params = query_params; - - builder.headers = args.headers; - - if (Response resp = Execute(builder)) { - pugi::xml_document xdoc; - pugi::xml_parse_result result = xdoc.load_string(resp.data.data()); - if (!result) return error::Error("unable to parse XML"); - auto text = - xdoc.select_node("/InitiateMultipartUploadResult/UploadId/text()"); - return std::string(text.node().value()); - } else { - return resp; - } -} - -minio::s3::PutObjectResponse minio::s3::Client::PutObject( - PutObjectApiArgs args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kPut, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - builder.query_params = args.query_params; - builder.headers = args.headers; - builder.body = args.data; - - Response response = Execute(builder); - if (!response) return response; - - PutObjectResponse resp; - resp.etag = utils::Trim(response.headers.GetFront("etag"), '"'); - resp.version_id = response.headers.GetFront("x-amz-version-id"); - - return resp; -} - -minio::s3::UploadPartResponse minio::s3::Client::UploadPart( - UploadPartArgs args) { - if (error::Error err = args.Validate()) return err; - - utils::Multimap query_params; - query_params.Add("partNumber", std::to_string(args.part_number)); - query_params.Add("uploadId", args.upload_id); - - PutObjectApiArgs api_args; - api_args.extra_headers = args.extra_headers; - api_args.extra_query_params = args.extra_query_params; - api_args.bucket = args.bucket; - api_args.region = args.region; - api_args.object = args.object; - api_args.data = args.data; - api_args.query_params = query_params; - - return PutObject(api_args); -} - -minio::s3::UploadPartCopyResponse minio::s3::Client::UploadPartCopy( - UploadPartCopyArgs args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kPut, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - - utils::Multimap query_params; - query_params.AddAll(args.extra_query_params); - query_params.Add("partNumber", std::to_string(args.part_number)); - query_params.Add("uploadId", args.upload_id); - builder.query_params = query_params; - - builder.headers = args.headers; - - Response response = Execute(builder); - if (!response) return response; - - UploadPartCopyResponse resp; - resp.etag = utils::Trim(response.headers.GetFront("etag"), '"'); - - return resp; -} - -minio::s3::StatObjectResponse minio::s3::Client::StatObject( - StatObjectArgs args) { - if (error::Error err = args.Validate()) return err; - - if (args.ssec != NULL && !base_url_.is_https) { - return error::Error( - "SSE-C operation must be performed over a secure connection"); - } - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kHead, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - utils::Multimap query_params; - if (!args.version_id.empty()) { - query_params.Add("versionId", args.version_id); - builder.query_params = query_params; - } - builder.headers = args.Headers(); - - Response response = Execute(builder); - if (!response) return response; - - StatObjectResponse resp = response; - resp.bucket_name = args.bucket; - resp.object_name = args.object; - resp.version_id = response.headers.GetFront("x-amz-version-id"); - - resp.etag = utils::Trim(response.headers.GetFront("etag"), '"'); - - std::string value = response.headers.GetFront("content-length"); - if (!value.empty()) resp.size = std::stoi(value); - - value = response.headers.GetFront("last-modified"); - if (!value.empty()) { - resp.last_modified = utils::Time::FromHttpHeaderValue(value.c_str()); - } - - value = response.headers.GetFront("x-amz-object-lock-mode"); - if (!value.empty()) resp.retention_mode = StringToRetentionMode(value); - - value = response.headers.GetFront("x-amz-object-lock-retain-until-date"); - if (!value.empty()) { - resp.retention_retain_until_date = - utils::Time::FromISO8601UTC(value.c_str()); - } - - value = response.headers.GetFront("x-amz-object-lock-legal-hold"); - if (!value.empty()) resp.legal_hold = StringToLegalHold(value); - - value = response.headers.GetFront("x-amz-delete-marker"); - if (!value.empty()) resp.delete_marker = utils::StringToBool(value); - - utils::Multimap user_metadata; - std::list keys = response.headers.Keys(); - for (auto key : keys) { - if (utils::StartsWith(key, "x-amz-meta-")) { - std::list values = response.headers.Get(key); - key.erase(0, 11); - for (auto value : values) user_metadata.Add(key, value); - } - } - resp.user_metadata = user_metadata; - - return resp; -} - -minio::s3::RemoveObjectResponse minio::s3::Client::RemoveObject( - RemoveObjectArgs args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kDelete, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - utils::Multimap query_params; - if (!args.version_id.empty()) { - query_params.Add("versionId", args.version_id); - builder.query_params = query_params; - } - - return Execute(builder); -} - -minio::s3::DownloadObjectResponse minio::s3::Client::DownloadObject( - DownloadObjectArgs args) { - if (error::Error err = args.Validate()) return err; - - if (args.ssec != NULL && !base_url_.is_https) { - return error::Error( - "SSE-C operation must be performed over a secure connection"); - } - - std::string etag; - size_t size; - { - StatObjectArgs soargs; - soargs.bucket = args.bucket; - soargs.region = args.region; - soargs.object = args.object; - soargs.version_id = args.version_id; - soargs.ssec = args.ssec; - StatObjectResponse resp = StatObject(soargs); - if (!resp) return resp; - etag = resp.etag; - size = resp.size; - } - - std::string temp_filename = - args.filename + "." + curlpp::escape(etag) + ".part.minio"; - std::ofstream fout(temp_filename, fout.trunc | fout.out); - if (!fout.is_open()) { - DownloadObjectResponse resp; - resp.error = "unable to open file " + temp_filename; - return resp; - } - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kGet, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - utils::Multimap query_params; - if (!args.version_id.empty()) { - query_params.Add("versionId", std::string(args.version_id)); - builder.query_params = query_params; - } - builder.data_callback = [](http::DataCallbackArgs args) -> size_t { - std::ofstream* fout = (std::ofstream*)args.user_arg; - *fout << std::string(args.buffer, args.length); - return args.size * args.length; - }; - builder.user_arg = &fout; - - Response response = Execute(builder); - fout.close(); - if (response) std::filesystem::rename(temp_filename, args.filename); - return response; -} - -minio::s3::GetObjectResponse minio::s3::Client::GetObject(GetObjectArgs args) { - if (error::Error err = args.Validate()) return err; - - if (args.ssec != NULL && !base_url_.is_https) { - return error::Error( - "SSE-C operation must be performed over a secure connection"); - } - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kGet, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - utils::Multimap query_params; - if (!args.version_id.empty()) { - query_params.Add("versionId", args.version_id); - builder.query_params = query_params; - } - builder.data_callback = args.data_callback; - builder.user_arg = args.user_arg; - if (args.ssec != NULL) { - builder.headers = args.ssec->Headers(); - } - - return Execute(builder); -} - -minio::s3::ListObjectsResponse minio::s3::Client::ListObjectsV1( - ListObjectsV1Args args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - utils::Multimap query_params; - query_params.AddAll(args.extra_query_params); - query_params.AddAll(GetCommonListObjectsQueryParams( - args.delimiter, args.encoding_type, args.max_keys, args.prefix)); - if (!args.marker.empty()) query_params.Add("marker", args.marker); - - RequestBuilder builder(http::Method::kGet, region, base_url_); - builder.bucket_name = args.bucket; - builder.query_params = query_params; - builder.headers = args.extra_headers; - - Response resp = Execute(builder); - if (!resp) resp; - - return ListObjectsResponse::ParseXML(resp.data, false); -} - -minio::s3::ListObjectsResponse minio::s3::Client::ListObjectsV2( - ListObjectsV2Args args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - utils::Multimap query_params; - query_params.Add("list-type", "2"); - query_params.AddAll(args.extra_query_params); - query_params.AddAll(GetCommonListObjectsQueryParams( - args.delimiter, args.encoding_type, args.max_keys, args.prefix)); - if (!args.continuation_token.empty()) - query_params.Add("continuation-token", args.continuation_token); - if (args.fetch_owner) query_params.Add("fetch-owner", "true"); - if (!args.start_after.empty()) { - query_params.Add("start-after", args.start_after); - } - if (args.include_user_metadata) query_params.Add("metadata", "true"); - - RequestBuilder builder(http::Method::kGet, region, base_url_); - builder.bucket_name = args.bucket; - builder.query_params = query_params; - builder.headers = args.extra_headers; - - Response resp = Execute(builder); - if (!resp) resp; - - return ListObjectsResponse::ParseXML(resp.data, false); -} - -minio::s3::ListObjectsResponse minio::s3::Client::ListObjectVersions( - ListObjectVersionsArgs args) { - if (error::Error err = args.Validate()) return err; - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - utils::Multimap query_params; - query_params.Add("versions", ""); - query_params.AddAll(args.extra_query_params); - query_params.AddAll(GetCommonListObjectsQueryParams( - args.delimiter, args.encoding_type, args.max_keys, args.prefix)); - if (!args.key_marker.empty()) query_params.Add("key-marker", args.key_marker); - if (!args.version_id_marker.empty()) { - query_params.Add("version-id-marker", args.version_id_marker); - } - - RequestBuilder builder(http::Method::kGet, region, base_url_); - builder.bucket_name = args.bucket; - builder.query_params = query_params; - builder.headers = args.extra_headers; - - Response resp = Execute(builder); - if (!resp) resp; - - return ListObjectsResponse::ParseXML(resp.data, true); -} - -minio::s3::ListObjectsResult::ListObjectsResult(error::Error err) { - failed_ = true; - resp_.contents.push_back(Item(err)); - itr_ = resp_.contents.begin(); -} - -minio::s3::ListObjectsResult::ListObjectsResult(Client* client, - ListObjectsArgs* args) { - client_ = client; - args_ = args; - Populate(); -} - -void minio::s3::ListObjectsResult::Populate() { - if (args_->include_versions) { - args_->key_marker = resp_.next_key_marker; - args_->version_id_marker = resp_.next_version_id_marker; - } else if (args_->use_api_v1) { - args_->marker = resp_.next_marker; - } else { - args_->start_after = resp_.start_after; - args_->continuation_token = resp_.next_continuation_token; - } - - std::string region; - if (GetRegionResponse resp = - client_->GetRegion(args_->bucket, args_->region)) { - region = resp.region; - if (args_->recursive) { - args_->delimiter = ""; - } else if (args_->delimiter.empty()) { - args_->delimiter = "/"; - } - - if (args_->include_versions || !args_->version_id_marker.empty()) { - resp_ = client_->ListObjectVersions(*args_); - } else if (args_->use_api_v1) { - resp_ = client_->ListObjectsV1(*args_); - } else { - resp_ = client_->ListObjectsV2(*args_); - } - - if (!resp_) { - failed_ = true; - resp_.contents.push_back(Item(resp_)); - } - } else { - failed_ = true; - resp_.contents.push_back(Item(resp)); - } - - itr_ = resp_.contents.begin(); -} - -minio::s3::ListObjectsResult minio::s3::Client::ListObjects( - ListObjectsArgs args) { - if (error::Error err = args.Validate()) return err; - return ListObjectsResult(this, &args); -} - -minio::s3::PutObjectResponse minio::s3::Client::PutObject( - PutObjectArgs& args, std::string& upload_id, char* buf) { - utils::Multimap headers = args.Headers(); - if (!headers.Contains("Content-Type")) { - if (args.content_type.empty()) { - headers.Add("Content-Type", "application/octet-stream"); - } else { - headers.Add("Content-Type", args.content_type); - } - } - - long object_size = args.object_size; - size_t part_size = args.part_size; - size_t uploaded_size = 0; - unsigned int part_number = 0; - std::string one_byte; - bool stop = false; - std::list parts; - long part_count = args.part_count; - - while (!stop) { - part_number++; - - size_t bytes_read = 0; - if (part_count > 0) { - if (part_number == part_count) { - part_size = object_size - uploaded_size; - stop = true; - } - - if (error::Error err = - utils::ReadPart(args.stream, buf, part_size, bytes_read)) { - return err; - } - - if (bytes_read != part_size) { - return error::Error("not enough data in the stream; expected: " + - std::to_string(part_size) + - ", got: " + std::to_string(bytes_read) + " bytes"); - } - } else { - char* b = buf; - size_t size = part_size + 1; - - if (!one_byte.empty()) { - buf[0] = one_byte.front(); - b = buf + 1; - size--; - bytes_read = 1; - one_byte = ""; - } - - size_t n = 0; - if (error::Error err = utils::ReadPart(args.stream, b, size, n)) { - return err; - } - - bytes_read += n; - - // If bytes read is less than or equals to part size, then we have reached - // last part. - if (bytes_read <= part_size) { - part_count = part_number; - part_size = bytes_read; - stop = true; - } else { - one_byte = buf[part_size + 1]; - } - } - - std::string_view data(buf, part_size); - - uploaded_size += part_size; - - if (part_count == 1) { - PutObjectApiArgs api_args; - api_args.extra_query_params = args.extra_query_params; - api_args.bucket = args.bucket; - api_args.region = args.region; - api_args.object = args.object; - api_args.data = data; - api_args.headers = headers; - - return PutObject(api_args); - } - - if (upload_id.empty()) { - CreateMultipartUploadArgs cmu_args; - cmu_args.extra_query_params = args.extra_query_params; - cmu_args.bucket = args.bucket; - cmu_args.region = args.region; - cmu_args.object = args.object; - cmu_args.headers = headers; - if (CreateMultipartUploadResponse resp = - CreateMultipartUpload(cmu_args)) { - upload_id = resp.upload_id; - } else { - return resp; - } - } - - UploadPartArgs up_args; - up_args.bucket = args.bucket; - up_args.region = args.region; - up_args.object = args.object; - up_args.upload_id = upload_id; - up_args.part_number = part_number; - up_args.data = data; - if (args.sse != NULL) { - if (SseCustomerKey* ssec = dynamic_cast(args.sse)) { - up_args.headers = ssec->Headers(); - } - } - - if (UploadPartResponse resp = UploadPart(up_args)) { - parts.push_back(Part{part_number, resp.etag}); - } else { - return resp; - } - } - - CompleteMultipartUploadArgs cmu_args; - cmu_args.bucket = args.bucket; - cmu_args.region = args.region; - cmu_args.object = args.object; - cmu_args.upload_id = upload_id; - cmu_args.parts = parts; - return CompleteMultipartUpload(cmu_args); -} - -minio::s3::PutObjectResponse minio::s3::Client::PutObject(PutObjectArgs args) { - if (error::Error err = args.Validate()) return err; - - if (args.sse != NULL && args.sse->TlsRequired() && !base_url_.is_https) { - return error::Error( - "SSE operation must be performed over a secure connection"); - } - - char* buf = NULL; - if (args.part_count > 0) { - buf = new char[args.part_size]; - } else { - buf = new char[args.part_size + 1]; - } - - std::string upload_id; - PutObjectResponse resp = PutObject(args, upload_id, buf); - delete buf; - - if (!resp && !upload_id.empty()) { - AbortMultipartUploadArgs amu_args; - amu_args.bucket = args.bucket; - amu_args.region = args.region; - amu_args.object = args.object; - amu_args.upload_id = upload_id; - AbortMultipartUpload(amu_args); - } - - return resp; -} - -minio::s3::CopyObjectResponse minio::s3::Client::CopyObject( - CopyObjectArgs args) { - if (error::Error err = args.Validate()) return err; - - if (args.sse != NULL && args.sse->TlsRequired() && !base_url_.is_https) { - return error::Error( - "SSE operation must be performed over a secure connection"); - } - - if (args.source.ssec != NULL && !base_url_.is_https) { - return error::Error( - "SSE-C operation must be performed over a secure connection"); - } - - std::string etag; - size_t size; - { - StatObjectArgs soargs; - soargs.extra_headers = args.source.extra_headers; - soargs.extra_query_params = args.source.extra_query_params; - soargs.bucket = args.source.bucket; - soargs.region = args.source.region; - soargs.object = args.source.object; - soargs.version_id = args.source.version_id; - soargs.ssec = args.source.ssec; - StatObjectResponse resp = StatObject(soargs); - if (!resp) return resp; - etag = resp.etag; - size = resp.size; - } - - if (args.source.offset != NULL || args.source.length != NULL || - size > utils::kMaxPartSize) { - if (args.metadata_directive != NULL && - *args.metadata_directive == Directive::kCopy) { - return error::Error( - "COPY metadata directive is not applicable to source object size " - "greater than 5 GiB"); - } - - if (args.tagging_directive != NULL && - *args.tagging_directive == Directive::kCopy) { - return error::Error( - "COPY tagging directive is not applicable to source object size " - "greater than 5 GiB"); - } - - ComposeSource src; - src.extra_headers = args.source.extra_headers; - src.extra_query_params = args.source.extra_query_params; - src.bucket = args.source.bucket; - src.region = args.source.region; - src.object = args.source.object; - src.ssec = args.source.ssec; - src.offset = args.source.offset; - src.length = args.source.length; - src.match_etag = args.source.match_etag; - src.not_match_etag = args.source.not_match_etag; - src.modified_since = args.source.modified_since; - src.unmodified_since = args.source.unmodified_since; - - ComposeObjectArgs coargs; - coargs.extra_headers = args.extra_headers; - coargs.extra_query_params = args.extra_query_params; - coargs.bucket = args.bucket; - coargs.region = args.region; - coargs.object = args.object; - coargs.sse = args.sse; - coargs.sources.push_back(src); - - return ComposeObject(coargs); - } - - utils::Multimap headers; - headers.AddAll(args.extra_headers); - headers.AddAll(args.Headers()); - if (args.metadata_directive != NULL) { - headers.Add("x-amz-metadata-directive", - DirectiveToString(*args.metadata_directive)); - } - if (args.tagging_directive != NULL) { - headers.Add("x-amz-tagging-directive", - DirectiveToString(*args.tagging_directive)); - } - headers.AddAll(args.source.CopyHeaders()); - - std::string region; - if (GetRegionResponse resp = GetRegion(args.bucket, args.region)) { - region = resp.region; - } else { - return resp; - } - - RequestBuilder builder(http::Method::kPut, region, base_url_); - builder.bucket_name = args.bucket; - builder.object_name = args.object; - builder.query_params = args.extra_query_params; - builder.headers = headers; - - Response response = Execute(builder); - if (!response) return response; - - CopyObjectResponse resp; - resp.etag = utils::Trim(response.headers.GetFront("etag"), '"'); - resp.version_id = response.headers.GetFront("x-amz-version-id"); - - return resp; -} - -minio::s3::StatObjectResponse minio::s3::Client::CalculatePartCount( - size_t& part_count, std::list sources) { - size_t object_size = 0; - int i = 0; - for (auto& source : sources) { - if (source.ssec != NULL && !base_url_.is_https) { - std::string msg = "source " + source.bucket + "/" + source.object; - if (!source.version_id.empty()) msg += "?versionId=" + source.version_id; - msg += ": SSE-C operation must be performed over a secure connection"; - return error::Error(msg); - } - - i++; - - std::string etag; - size_t size; - - StatObjectArgs soargs; - soargs.extra_headers = source.extra_headers; - soargs.extra_query_params = source.extra_query_params; - soargs.bucket = source.bucket; - soargs.region = source.region; - soargs.object = source.object; - soargs.version_id = source.version_id; - soargs.ssec = source.ssec; - StatObjectResponse resp = StatObject(soargs); - if (!resp) return resp; - etag = resp.etag; - size = resp.size; - if (error::Error err = source.BuildHeaders(size, etag)) return err; - - if (source.length != NULL) { - size = *source.length; - } else if (source.offset != NULL) { - size -= *source.offset; - } - - if (size < utils::kMinPartSize && sources.size() != 1 && - i != sources.size()) { - std::string msg = "source " + source.bucket + "/" + source.object; - if (!source.version_id.empty()) msg += "?versionId=" + source.version_id; - msg += ": size " + std::to_string(size) + " must be greater than " + - std::to_string(utils::kMinPartSize); - return error::Error(msg); - } - - object_size += size; - if (object_size > utils::kMaxObjectSize) { - return error::Error("destination object size must be less than " + - std::to_string(utils::kMaxObjectSize)); - } - - if (size > utils::kMaxPartSize) { - size_t count = size / utils::kMaxPartSize; - size_t last_part_size = size - (count * utils::kMaxPartSize); - if (last_part_size > 0) { - count++; - } else { - last_part_size = utils::kMaxPartSize; - } - - if (last_part_size < utils::kMinPartSize && sources.size() != 1 && - i != sources.size()) { - std::string msg = "source " + source.bucket + "/" + source.object; - if (!source.version_id.empty()) { - msg += "?versionId=" + source.version_id; - } - msg += ": size " + std::to_string(size) + - " for multipart split upload of " + std::to_string(size) + - ", last part size is less than " + - std::to_string(utils::kMinPartSize); - return error::Error(msg); - } - - part_count += count; - } else { - part_count++; - } - - if (part_count > utils::kMaxMultipartCount) { - return error::Error( - "Compose sources create more than allowed multipart count " + - std::to_string(utils::kMaxMultipartCount)); - } - } - - return error::SUCCESS; -} - -minio::s3::ComposeObjectResponse minio::s3::Client::ComposeObject( - ComposeObjectArgs args, std::string& upload_id) { - size_t part_count = 0; - { - StatObjectResponse resp = CalculatePartCount(part_count, args.sources); - if (!resp) return resp; - } - - ComposeSource& source = args.sources.front(); - if (part_count == 1 && source.offset == NULL && source.length == NULL) { - CopySource src; - src.extra_headers = source.extra_headers; - src.extra_query_params = source.extra_query_params; - src.bucket = source.bucket; - src.region = source.region; - src.object = source.object; - src.ssec = source.ssec; - src.offset = source.offset; - src.length = source.length; - src.match_etag = source.match_etag; - src.not_match_etag = source.not_match_etag; - src.modified_since = source.modified_since; - src.unmodified_since = source.unmodified_since; - - CopyObjectArgs coargs; - coargs.extra_headers = args.extra_headers; - coargs.extra_query_params = args.extra_query_params; - coargs.bucket = args.bucket; - coargs.region = args.region; - coargs.object = args.object; - coargs.sse = args.sse; - coargs.source = src; - - return CopyObject(coargs); - } - - utils::Multimap headers = args.Headers(); - - { - CreateMultipartUploadArgs cmu_args; - cmu_args.extra_query_params = args.extra_query_params; - cmu_args.bucket = args.bucket; - cmu_args.region = args.region; - cmu_args.object = args.object; - cmu_args.headers = headers; - if (CreateMultipartUploadResponse resp = CreateMultipartUpload(cmu_args)) { - upload_id = resp.upload_id; - } else { - return resp; - } - } - - unsigned int part_number = 0; - utils::Multimap ssecheaders; - if (args.sse != NULL) { - if (SseCustomerKey* ssec = dynamic_cast(args.sse)) { - ssecheaders = ssec->Headers(); - } - } - - std::list parts; - for (auto& source : args.sources) { - size_t size = source.ObjectSize(); - if (source.length != NULL) { - size = *source.length; - } else if (source.offset != NULL) { - size -= *source.offset; - } - - size_t offset = 0; - if (source.offset != NULL) offset = *source.offset; - - utils::Multimap headers; - headers.AddAll(source.Headers()); - headers.AddAll(ssecheaders); - - if (size <= utils::kMaxPartSize) { - part_number++; - if (source.length != NULL) { - headers.Add("x-amz-copy-source-range", - "bytes=" + std::to_string(offset) + "-" + - std::to_string(offset + *source.length - 1)); - } else if (source.offset != NULL) { - headers.Add("x-amz-copy-source-range", - "bytes=" + std::to_string(offset) + "-" + - std::to_string(offset + size - 1)); - } - - UploadPartCopyArgs upc_args; - upc_args.bucket = args.bucket; - upc_args.region = args.region; - upc_args.object = args.object; - upc_args.headers = headers; - upc_args.upload_id = upload_id; - upc_args.part_number = part_number; - UploadPartCopyResponse resp = UploadPartCopy(upc_args); - if (!resp) return resp; - parts.push_back(Part{part_number, resp.etag}); - } else { - while (size > 0) { - part_number++; - - size_t start_bytes = offset; - size_t end_bytes = start_bytes + utils::kMaxPartSize; - if (size < utils::kMaxPartSize) end_bytes = start_bytes + size; - - utils::Multimap headerscopy; - headerscopy.AddAll(headers); - headerscopy.Add("x-amz-copy-source-range", - "bytes=" + std::to_string(start_bytes) + "-" + - std::to_string(end_bytes)); - - UploadPartCopyArgs upc_args; - upc_args.bucket = args.bucket; - upc_args.region = args.region; - upc_args.object = args.object; - upc_args.headers = headerscopy; - upc_args.upload_id = upload_id; - upc_args.part_number = part_number; - UploadPartCopyResponse resp = UploadPartCopy(upc_args); - if (!resp) return resp; - parts.push_back(Part{part_number, resp.etag}); - - offset = start_bytes; - size -= (end_bytes - start_bytes); - } - } - } - - CompleteMultipartUploadArgs cmu_args; - cmu_args.bucket = args.bucket; - cmu_args.region = args.region; - cmu_args.object = args.object; - cmu_args.upload_id = upload_id; - cmu_args.parts = parts; - return CompleteMultipartUpload(cmu_args); -} - -minio::s3::ComposeObjectResponse minio::s3::Client::ComposeObject( - ComposeObjectArgs args) { - if (error::Error err = args.Validate()) return err; - - if (args.sse != NULL && args.sse->TlsRequired() && !base_url_.is_https) { - return error::Error( - "SSE operation must be performed over a secure connection"); - } - - std::string upload_id; - ComposeObjectResponse resp = ComposeObject(args, upload_id); - if (!resp && !upload_id.empty()) { - AbortMultipartUploadArgs amu_args; - amu_args.bucket = args.bucket; - amu_args.region = args.region; - amu_args.object = args.object; - amu_args.upload_id = upload_id; - AbortMultipartUpload(amu_args); - } - - return resp; -} - -minio::s3::UploadObjectResponse minio::s3::Client::UploadObject( - UploadObjectArgs args) { - if (error::Error err = args.Validate()) return err; - - std::ifstream file; - file.exceptions(std::ifstream::failbit | std::ifstream::badbit); - try { - file.open(args.filename); - } catch (std::system_error& err) { - return error::Error("unable to open file " + args.filename + "; " + - err.code().message()); - } - - PutObjectArgs po_args(file, args.object_size, args.part_size); - po_args.extra_headers = args.extra_headers; - po_args.extra_query_params = args.extra_query_params; - po_args.bucket = args.bucket; - po_args.region = args.region; - po_args.object = args.object; - po_args.headers = args.headers; - po_args.user_metadata = args.user_metadata; - po_args.sse = args.sse; - po_args.tags = args.tags; - po_args.retention = args.retention; - po_args.legal_hold = args.legal_hold; - po_args.part_count = args.part_count; - po_args.content_type = args.content_type; - - PutObjectResponse resp = PutObject(po_args); - file.close(); - return resp; -} diff --git a/src/creds.cc b/src/creds.cc deleted file mode 100644 index 8a2a42e..0000000 --- a/src/creds.cc +++ /dev/null @@ -1,59 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "creds.h" - -minio::creds::Credentials::Credentials(const Credentials& creds) { - access_key_ = creds.access_key_; - secret_key_ = creds.secret_key_; - session_token_ = creds.session_token_; - expiration_ = creds.expiration_; -} - -minio::creds::Credentials::Credentials(std::string_view access_key, - std::string_view secret_key, - std::string_view session_token, - unsigned int expiration) { - access_key_ = access_key; - secret_key_ = secret_key; - session_token_ = session_token; - expiration_ = expiration; -} - -std::string minio::creds::Credentials::AccessKey() { - return std::string(access_key_); -} - -std::string minio::creds::Credentials::SecretKey() { - return std::string(secret_key_); -} - -std::string minio::creds::Credentials::SessionToken() { - return std::string(session_token_); -} - -bool minio::creds::Credentials::IsExpired() { return expiration_ != 0; } - -minio::creds::StaticProvider::StaticProvider(std::string_view access_key, - std::string_view secret_key, - std::string_view session_token) { - creds_ = new Credentials(access_key, secret_key, session_token); -} - -minio::creds::StaticProvider::~StaticProvider() { delete creds_; } - -minio::creds::Credentials minio::creds::StaticProvider::Fetch() { - return *creds_; -} diff --git a/src/http.cc b/src/http.cc deleted file mode 100644 index f8cfbaa..0000000 --- a/src/http.cc +++ /dev/null @@ -1,342 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "http.h" - -std::string minio::http::ExtractRegion(std::string host) { - std::stringstream str_stream(host); - std::string token; - std::vector tokens; - while (std::getline(str_stream, token, '.')) tokens.push_back(token); - - token = tokens[1]; - - // If token is "dualstack", then region might be in next token. - if (token == "dualstack") token = tokens[2]; - - // If token is equal to "amazonaws", region is not passed in the host. - if (token == "amazonaws") return ""; - - // Return token as region. - return token; -} - -minio::error::Error minio::http::BaseUrl::SetHost(std::string hostvalue) { - std::stringstream str_stream(hostvalue); - std::string portstr; - while (std::getline(str_stream, portstr, ':')) - ; - try { - port = std::stoi(portstr); - hostvalue = hostvalue.substr(0, hostvalue.rfind(":" + portstr)); - } catch (std::invalid_argument) { - port = 0; - } - - accelerate_host = utils::StartsWith(hostvalue, "s3-accelerate."); - aws_host = ((utils::StartsWith(hostvalue, "s3.") || accelerate_host) && - (utils::EndsWith(hostvalue, ".amazonaws.com") || - utils::EndsWith(hostvalue, ".amazonaws.com.cn"))); - virtual_style = aws_host || utils::EndsWith(hostvalue, "aliyuncs.com"); - - if (aws_host) { - std::string awshost; - bool is_aws_china_host = utils::EndsWith(hostvalue, ".cn"); - awshost = "amazonaws.com"; - if (is_aws_china_host) awshost = "amazonaws.com.cn"; - region = ExtractRegion(hostvalue); - - if (is_aws_china_host && region.empty()) { - return error::Error("region missing in Amazon S3 China endpoint " + - hostvalue); - } - - dualstack_host = utils::Contains(hostvalue, ".dualstack."); - hostvalue = awshost; - } else { - accelerate_host = false; - } - - host = hostvalue; - - return error::SUCCESS; -} - -std::string minio::http::BaseUrl::GetHostHeaderValue() { - // ignore port when port and service match i.e HTTP -> 80, HTTPS -> 443 - if (port == 0 || (!is_https && port == 80) || (is_https && port == 443)) { - return host; - } - return host + ":" + std::to_string(port); -} - -minio::error::Error minio::http::BaseUrl::BuildUrl(utils::Url &url, - Method method, - std::string region, - utils::Multimap query_params, - std::string bucket_name, - std::string object_name) { - if (bucket_name.empty() && !object_name.empty()) { - return error::Error("empty bucket name for object name " + object_name); - } - - std::string host = GetHostHeaderValue(); - - if (bucket_name.empty()) { - if (aws_host) host = "s3." + region + "." + host; - url = utils::Url{is_https, host, "/"}; - return error::SUCCESS; - } - - bool enforce_path_style = ( - // CreateBucket API requires path style in Amazon AWS S3. - (method == Method::kPut && object_name.empty() && !query_params) || - - // GetBucketLocation API requires path style in Amazon AWS S3. - query_params.Contains("location") || - - // Use path style for bucket name containing '.' which causes - // SSL certificate validation error. - (utils::Contains(bucket_name, '.') && is_https)); - - if (aws_host) { - std::string s3_domain = "s3."; - if (accelerate_host) { - if (utils::Contains(bucket_name, '.')) { - return error::Error( - "bucket name '" + bucket_name + - "' with '.' is not allowed for accelerate endpoint"); - } - - if (!enforce_path_style) s3_domain = "s3-accelerate."; - } - - if (dualstack_host) s3_domain += "dualstack."; - if (enforce_path_style || !accelerate_host) { - s3_domain += region + "."; - } - host = s3_domain + host; - } - - std::string path; - if (enforce_path_style || !virtual_style) { - path = "/" + bucket_name; - } else { - host = bucket_name + "." + host; - } - - if (!object_name.empty()) { - if (*(object_name.begin()) != '/') path += "/"; - path += utils::EncodePath(object_name); - } - - url = utils::Url{is_https, host, path, query_params.ToQueryString()}; - - return error::SUCCESS; -} - -size_t minio::http::Response::ReadStatusCode(char *buffer, size_t size, - size_t length) { - size_t real_size = size * length; - - response_ += std::string(buffer, length); - - size_t pos = response_.find("\r\n"); - if (pos == std::string::npos) return real_size; - - std::string line = response_.substr(0, pos); - response_ = response_.substr(pos + 2); - - if (continue100_) { - if (!line.empty()) { - error = "invalid HTTP response"; - return real_size; - } - - continue100_ = false; - - pos = response_.find("\r\n"); - if (pos == std::string::npos) return real_size; - - line = response_.substr(0, pos); - response_ = response_.substr(pos + 2); - } - - // Skip HTTP/1.x. - pos = line.find(" "); - if (pos == std::string::npos) { - error = "invalid HTTP response"; - return real_size; - } - line = line.substr(pos + 1); - - // Read status code. - pos = line.find(" "); - if (pos == std::string::npos) { - error = "invalid HTTP response"; - return real_size; - } - std::string code = line.substr(0, pos); - std::string::size_type st; - status_code = std::stoi(code, &st); - if (st == std::string::npos) error = "invalid HTTP response code"; - - if (status_code == 100) { - continue100_ = true; - } else { - status_code_read_ = true; - } - - return real_size; -} - -size_t minio::http::Response::ReadHeaders(curlpp::Easy *handle, char *buffer, - size_t size, size_t length) { - size_t real_size = size * length; - - response_ += std::string(buffer, length); - size_t pos = response_.find("\r\n\r\n"); - if (pos == std::string::npos) return real_size; - - headers_read_ = true; - - std::string lines = response_.substr(0, pos); - body = response_.substr(pos + 4); - - while ((pos = lines.find("\r\n")) != std::string::npos) { - std::string line = lines.substr(0, pos); - lines.erase(0, pos + 2); - - if ((pos = line.find(": ")) == std::string::npos) { - error = "invalid HTTP header: " + line; - return real_size; - } - - headers.Add(line.substr(0, pos), line.substr(pos + 2)); - } - - if (!lines.empty()) { - if ((pos = lines.find(": ")) == std::string::npos) { - error = "invalid HTTP header: " + lines; - return real_size; - } - - headers.Add(lines.substr(0, pos), lines.substr(pos + 2)); - } - - if (body.size() == 0 || data_callback == NULL || status_code < 200 || - status_code > 299) - return real_size; - - DataCallbackArgs args = {handle, this, body.data(), 1, body.size(), user_arg}; - size_t written = data_callback(args); - if (written == body.size()) written = real_size; - body = ""; - return written; -} - -size_t minio::http::Response::ResponseCallback(curlpp::Easy *handle, - char *buffer, size_t size, - size_t length) { - size_t real_size = size * length; - - // As error occurred previously, just drain the connection. - if (!error.empty()) return real_size; - - if (!status_code_read_) return ReadStatusCode(buffer, size, length); - - if (!headers_read_) return ReadHeaders(handle, buffer, size, length); - - // Received unsuccessful HTTP response code. - if (data_callback == NULL || status_code < 200 || status_code > 299) { - body += std::string(buffer, length); - return real_size; - } - - return data_callback( - DataCallbackArgs{handle, this, buffer, size, length, user_arg}); -} - -minio::http::Request::Request(Method httpmethod, utils::Url httpurl) { - method = httpmethod; - url = httpurl; -} - -minio::http::Response minio::http::Request::execute() { - curlpp::Cleanup cleaner; - curlpp::Easy request; - - // Request settings. - request.setOpt( - new curlpp::options::CustomRequest{http::MethodToString(method)}); - std::string urlstring = url.String(); - request.setOpt(new curlpp::Options::Url(urlstring)); - if (debug) request.setOpt(new curlpp::Options::Verbose(true)); - if (ignore_cert_check) { - request.setOpt(new curlpp::Options::SslVerifyPeer(false)); - } - - utils::CharBuffer charbuf((char *)body.data(), body.size()); - std::istream body_stream(&charbuf); - - switch (method) { - case Method::kHead: - request.setOpt(new curlpp::options::NoBody(true)); - break; - case Method::kPut: - case Method::kPost: - if (!headers.Contains("Content-Length")) { - headers.Add("Content-Length", std::to_string(body.size())); - } - request.setOpt(new curlpp::Options::ReadStream(&body_stream)); - request.setOpt(new curlpp::Options::InfileSize(body.size())); - request.setOpt(new curlpp::Options::Upload(true)); - break; - } - - std::list headerlist = headers.ToHttpHeaders(); - headerlist.push_back("Expect:"); // Disable 100 continue from server. - request.setOpt(new curlpp::Options::HttpHeader(headerlist)); - - // Response settings. - request.setOpt(new curlpp::options::Header(true)); - - Response response; - response.data_callback = data_callback; - response.user_arg = user_arg; - - using namespace std::placeholders; - request.setOpt(new curlpp::options::WriteFunction( - std::bind(&Response::ResponseCallback, &response, &request, _1, _2, _3))); - - // Execute. - request.perform(); - - return response; -} - -minio::http::Response minio::http::Request::Execute() { - try { - return execute(); - } catch (curlpp::LogicError &e) { - Response response; - response.error = std::string("curlpp::LogicError: ") + e.what(); - return response; - } catch (curlpp::RuntimeError &e) { - Response response; - response.error = std::string("curlpp::RuntimeError: ") + e.what(); - return response; - } -} diff --git a/src/request-builder.cc b/src/request-builder.cc deleted file mode 100644 index 0eae662..0000000 --- a/src/request-builder.cc +++ /dev/null @@ -1,117 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "client.h" - -minio::s3::RequestBuilder::RequestBuilder(http::Method httpmethod, - std::string regionvalue, - http::BaseUrl& baseurl) - : method(httpmethod), region(regionvalue), base_url(baseurl) {} - -void minio::s3::RequestBuilder::BuildHeaders(utils::Url& url, - creds::Provider* provider) { - headers.Add("Host", url.host); - - if (user_agent.empty()) { - headers.Add("User-Agent", "MinIO (Linux; x86_64) minio-cpp/0.1.0"); - } else { - headers.Add("User-Agent", user_agent); - } - - bool md5sum_added = headers.Contains("Content-MD5"); - std::string md5sum; - - switch (method) { - case http::Method::kPut: - case http::Method::kPost: - headers.Add("Content-Length", std::to_string(body.size())); - if (!headers.Contains("Content-Type")) { - headers.Add("Content-Type", "application/octet-stream"); - } - } - - // MD5 hash of zero length byte array. - // public static final String ZERO_MD5_HASH = "1B2M2Y8AsgTpgAmY7PhCfg=="; - - if (provider != NULL) { - if (url.is_https) { - sha256 = "UNSIGNED-PAYLOAD"; - switch (method) { - case http::Method::kPut: - case http::Method::kPost: - if (!md5sum_added) { - md5sum = utils::Md5sumHash(body); - } - } - } else { - switch (method) { - case http::Method::kPut: - case http::Method::kPost: - sha256 = utils::Sha256Hash(body); - break; - default: - sha256 = - "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85" - "5"; - } - } - } else { - switch (method) { - case http::Method::kPut: - case http::Method::kPost: - if (!md5sum_added) { - md5sum = utils::Md5sumHash(body); - } - } - } - - if (!md5sum.empty()) headers.Add("Content-MD5", md5sum); - if (!sha256.empty()) headers.Add("x-amz-content-sha256", sha256); - - date = utils::Time::Now(); - headers.Add("x-amz-date", date.ToAmzDate()); - - if (provider != NULL) { - creds::Credentials creds = provider->Fetch(); - if (!creds.SessionToken().empty()) { - headers.Add("X-Amz-Security-Token", creds.SessionToken()); - } - signer::SignV4S3(method, url.path, region, headers, query_params, - creds.AccessKey(), creds.SecretKey(), sha256, date); - } -} - -minio::http::Request minio::s3::RequestBuilder::Build( - creds::Provider* provider) { - utils::Url url; - if (error::Error err = - base_url.BuildUrl(url, method, std::string(region), query_params, - bucket_name, object_name)) { - std::cerr << "failed to build url. error=" << err - << ". This should not happen" << std::endl; - std::terminate(); - } - BuildHeaders(url, provider); - - http::Request request(method, url); - request.body = body; - request.headers = headers; - request.data_callback = data_callback; - request.user_arg = user_arg; - request.debug = debug; - request.ignore_cert_check = ignore_cert_check; - - return request; -} diff --git a/src/response.cc b/src/response.cc deleted file mode 100644 index 7a543db..0000000 --- a/src/response.cc +++ /dev/null @@ -1,391 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "response.h" - -minio::s3::Response::Response() {} - -minio::s3::Response::Response(error::Error err) { error = err.String(); } - -minio::s3::Response::Response(const Response& response) { - status_code = response.status_code; - headers = response.headers; - data = response.data; - error = response.error; - code = response.code; - message = response.message; - resource = response.resource; - request_id = response.request_id; - host_id = response.host_id; - bucket_name = response.bucket_name; - object_name = response.object_name; -} - -std::string minio::s3::Response::GetError() { - if (!error.empty()) return error; - if (!code.empty()) return code + ": " + message; - if (status_code && (status_code < 200 || status_code > 299)) { - return "failed with HTTP status code " + std::to_string(status_code); - } - return ""; -} - -minio::s3::Response minio::s3::Response::ParseXML(std::string_view data, - int status_code, - utils::Multimap headers) { - minio::s3::Response resp; - resp.status_code = status_code; - resp.headers = headers; - - pugi::xml_document xdoc; - pugi::xml_parse_result result = xdoc.load_string(data.data()); - if (!result) { - resp.error = "unable to parse XML; " + std::string(data); - return resp; - } - - auto root = xdoc.select_node("/Error"); - pugi::xpath_node text; - - text = root.node().select_node("Code/text()"); - resp.code = text.node().value(); - - text = root.node().select_node("Message/text()"); - resp.message = text.node().value(); - - text = root.node().select_node("Resource/text()"); - resp.resource = text.node().value(); - - text = root.node().select_node("RequestId/text()"); - resp.request_id = text.node().value(); - - text = root.node().select_node("HostId/text()"); - resp.host_id = text.node().value(); - - text = root.node().select_node("BucketName/text()"); - resp.bucket_name = text.node().value(); - - text = root.node().select_node("Key/text()"); - resp.object_name = text.node().value(); - - return resp; -} - -minio::s3::GetRegionResponse::GetRegionResponse(std::string regionvalue) { - region = regionvalue; -} - -minio::s3::GetRegionResponse::GetRegionResponse(error::Error err) - : Response(err) {} - -minio::s3::GetRegionResponse::GetRegionResponse(const Response& response) - : Response(response) {} - -minio::s3::ListBucketsResponse::ListBucketsResponse( - std::list bucketlist) { - buckets = bucketlist; -} - -minio::s3::ListBucketsResponse::ListBucketsResponse(error::Error err) - : Response(err) {} - -minio::s3::ListBucketsResponse::ListBucketsResponse(const Response& response) - : Response(response) {} - -minio::s3::ListBucketsResponse minio::s3::ListBucketsResponse::ParseXML( - std::string_view data) { - std::list buckets; - - pugi::xml_document xdoc; - pugi::xml_parse_result result = xdoc.load_string(data.data()); - if (!result) return error::Error("unable to parse XML"); - pugi::xpath_node_set xnodes = - xdoc.select_nodes("/ListAllMyBucketsResult/Buckets/Bucket"); - for (auto xnode : xnodes) { - std::string name; - utils::Time creation_date; - if (auto node = xnode.node().select_node("Name/text()").node()) { - name = node.value(); - } - if (auto node = xnode.node().select_node("CreationDate/text()").node()) { - std::string value = node.value(); - creation_date = utils::Time::FromISO8601UTC(value.c_str()); - } - - buckets.push_back(Bucket{name, creation_date}); - } - - return buckets; -} - -minio::s3::BucketExistsResponse::BucketExistsResponse(bool existflag) { - exist = existflag; -} - -minio::s3::BucketExistsResponse::BucketExistsResponse(error::Error err) - : Response(err) {} - -minio::s3::BucketExistsResponse::BucketExistsResponse(const Response& response) - : Response(response) {} - -minio::s3::CompleteMultipartUploadResponse::CompleteMultipartUploadResponse() {} - -minio::s3::CompleteMultipartUploadResponse::CompleteMultipartUploadResponse( - error::Error err) - : Response(err) {} - -minio::s3::CompleteMultipartUploadResponse::CompleteMultipartUploadResponse( - const Response& response) - : Response(response) {} - -minio::s3::CompleteMultipartUploadResponse -minio::s3::CompleteMultipartUploadResponse::ParseXML(std::string_view data, - std::string version_id) { - CompleteMultipartUploadResponse resp; - - pugi::xml_document xdoc; - pugi::xml_parse_result result = xdoc.load_string(data.data()); - if (!result) return error::Error("unable to parse XML"); - - auto root = xdoc.select_node("/CompleteMultipartUploadOutput"); - - pugi::xpath_node text; - - text = root.node().select_node("Bucket/text()"); - resp.bucket_name = text.node().value(); - - text = root.node().select_node("Key/text()"); - resp.object_name = text.node().value(); - - text = root.node().select_node("Location/text()"); - resp.location = text.node().value(); - - text = root.node().select_node("ETag/text()"); - resp.etag = utils::Trim(text.node().value(), '"'); - - resp.version_id = version_id; - - return resp; -} - -minio::s3::CreateMultipartUploadResponse::CreateMultipartUploadResponse( - std::string uploadid) { - upload_id = uploadid; -} - -minio::s3::CreateMultipartUploadResponse::CreateMultipartUploadResponse( - error::Error err) - : Response(err) {} - -minio::s3::CreateMultipartUploadResponse::CreateMultipartUploadResponse( - const Response& response) - : Response(response) {} - -minio::s3::PutObjectResponse::PutObjectResponse() {} - -minio::s3::PutObjectResponse::PutObjectResponse(const Response& response) - : Response(response) {} - -minio::s3::PutObjectResponse::PutObjectResponse(error::Error err) - : Response(err) {} - -minio::s3::StatObjectResponse::StatObjectResponse() {} - -minio::s3::StatObjectResponse::StatObjectResponse(error::Error err) - : Response(err) {} - -minio::s3::StatObjectResponse::StatObjectResponse(const Response& response) - : Response(response) {} - -minio::s3::Item::Item() {} - -minio::s3::Item::Item(error::Error err) : Response(err) {} - -minio::s3::Item::Item(const Response& response) : Response(response) {} - -minio::s3::ListObjectsResponse::ListObjectsResponse() {} - -minio::s3::ListObjectsResponse::ListObjectsResponse(error::Error err) - : Response(err) {} - -minio::s3::ListObjectsResponse::ListObjectsResponse(const Response& response) - : Response(response) {} - -minio::s3::ListObjectsResponse minio::s3::ListObjectsResponse::ParseXML( - std::string_view data, bool version) { - ListObjectsResponse resp; - - pugi::xml_document xdoc; - pugi::xml_parse_result result = xdoc.load_string(data.data()); - if (!result) return error::Error("unable to parse XML"); - - std::string xpath = version ? "/ListVersionsResult" : "/ListBucketResult"; - - auto root = xdoc.select_node(xpath.c_str()); - - pugi::xpath_node text; - std::string value; - - text = root.node().select_node("Name/text()"); - resp.name = text.node().value(); - - text = root.node().select_node("EncodingType/text()"); - resp.encoding_type = text.node().value(); - - text = root.node().select_node("Prefix/text()"); - value = text.node().value(); - resp.prefix = (resp.encoding_type == "url") ? curlpp::unescape(value) : value; - - text = root.node().select_node("Delimiter/text()"); - resp.delimiter = text.node().value(); - - text = root.node().select_node("IsTruncated/text()"); - value = text.node().value(); - if (!value.empty()) resp.is_truncated = utils::StringToBool(value); - - text = root.node().select_node("MaxKeys/text()"); - value = text.node().value(); - if (!value.empty()) resp.max_keys = std::stoi(value); - - // ListBucketResult V1 - { - text = root.node().select_node("Marker/text()"); - value = text.node().value(); - resp.marker = - (resp.encoding_type == "url") ? curlpp::unescape(value) : value; - - text = root.node().select_node("NextMarker/text()"); - value = text.node().value(); - resp.next_marker = - (resp.encoding_type == "url") ? curlpp::unescape(value) : value; - } - - // ListBucketResult V2 - { - text = root.node().select_node("KeyCount/text()"); - value = text.node().value(); - if (!value.empty()) resp.key_count = std::stoi(value); - - text = root.node().select_node("StartAfter/text()"); - value = text.node().value(); - resp.start_after = - (resp.encoding_type == "url") ? curlpp::unescape(value) : value; - - text = root.node().select_node("ContinuationToken/text()"); - resp.continuation_token = text.node().value(); - - text = root.node().select_node("NextContinuationToken/text()"); - resp.next_continuation_token = text.node().value(); - } - - // ListVersionsResult - { - text = root.node().select_node("KeyMarker/text()"); - value = text.node().value(); - resp.key_marker = - (resp.encoding_type == "url") ? curlpp::unescape(value) : value; - - text = root.node().select_node("NextKeyMarker/text()"); - value = text.node().value(); - resp.next_key_marker = - (resp.encoding_type == "url") ? curlpp::unescape(value) : value; - - text = root.node().select_node("VersionIdMarker/text()"); - resp.version_id_marker = text.node().value(); - - text = root.node().select_node("NextVersionIdMarker/text()"); - resp.next_version_id_marker = text.node().value(); - } - - Item last_item; - - auto populate = [&resp = resp, &last_item = last_item]( - std::list& items, pugi::xpath_node_set& contents, - bool is_delete_marker) -> void { - for (auto content : contents) { - pugi::xpath_node text; - std::string value; - Item item; - - text = content.node().select_node("ETag/text()"); - item.etag = utils::Trim(text.node().value(), '"'); - - text = content.node().select_node("Key/text()"); - value = text.node().value(); - item.name = - (resp.encoding_type == "url") ? curlpp::unescape(value) : value; - - text = content.node().select_node("LastModified/text()"); - value = text.node().value(); - item.last_modified = utils::Time::FromISO8601UTC(value.c_str()); - - text = content.node().select_node("Owner/ID/text()"); - item.owner_id = text.node().value(); - - text = content.node().select_node("Owner/DisplayName/text()"); - item.owner_name = text.node().value(); - - text = content.node().select_node("Size/text()"); - value = text.node().value(); - if (!value.empty()) item.size = std::stoi(value); - - text = content.node().select_node("StorageClass/text()"); - item.storage_class = text.node().value(); - - text = content.node().select_node("IsLatest/text()"); - value = text.node().value(); - if (!value.empty()) item.is_latest = utils::StringToBool(value); - - text = content.node().select_node("VersionId/text()"); - item.version_id = text.node().value(); - - auto user_metadata = content.node().select_node("UserMetadata"); - for (auto metadata = user_metadata.node().first_child(); metadata; - metadata = metadata.next_sibling()) { - item.user_metadata[metadata.name()] = metadata.child_value(); - } - - item.is_delete_marker = is_delete_marker; - - items.push_back(item); - last_item = item; - } - }; - - auto contents = root.node().select_nodes(version ? "Version" : "Contents"); - populate(resp.contents, contents, false); - // Only for ListObjectsV1. - if (resp.is_truncated && resp.next_marker.empty()) { - resp.next_marker = last_item.name; - } - - auto common_prefixes = root.node().select_nodes("CommonPrefixes"); - for (auto common_prefix : common_prefixes) { - Item item; - - text = common_prefix.node().select_node("Prefix/text()"); - value = text.node().value(); - item.name = (resp.encoding_type == "url") ? curlpp::unescape(value) : value; - - item.is_prefix = true; - - resp.contents.push_back(item); - } - - auto delete_markers = root.node().select_nodes("DeleteMarker"); - populate(resp.contents, delete_markers, true); - - return resp; -} diff --git a/src/signer.cc b/src/signer.cc deleted file mode 100644 index b462fdd..0000000 --- a/src/signer.cc +++ /dev/null @@ -1,146 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "signer.h" - -const char* SIGN_V4_ALGORITHM = "AWS4-HMAC-SHA256"; -const std::regex MULTI_SPACE_REGEX("( +)"); - -std::string minio::signer::GetScope(utils::Time& time, std::string_view region, - std::string_view service_name) { - return time.ToSignerDate() + "/" + std::string(region) + "/" + - std::string(service_name) + "/aws4_request"; -} - -std::string minio::signer::GetCanonicalRequestHash( - std::string_view method, std::string_view uri, - std::string_view query_string, std::string_view headers, - std::string_view signed_headers, std::string_view content_sha256) { - // CanonicalRequest = - // HTTPRequestMethod + '\n' + - // CanonicalURI + '\n' + - // CanonicalQueryString + '\n' + - // CanonicalHeaders + '\n\n' + - // SignedHeaders + '\n' + - // HexEncode(Hash(RequestPayload)) - std::string canonical_request = - std::string(method) + "\n" + std::string(uri) + "\n" + - std::string(query_string) + "\n" + std::string(headers) + "\n\n" + - std::string(signed_headers) + "\n" + std::string(content_sha256); - return utils::Sha256Hash(canonical_request); -} - -std::string minio::signer::GetStringToSign( - utils::Time& date, std::string_view scope, - std::string_view canonical_request_hash) { - return "AWS4-HMAC-SHA256\n" + date.ToAmzDate() + "\n" + std::string(scope) + - "\n" + std::string(canonical_request_hash); -} - -std::string minio::signer::HmacHash(std::string_view key, - std::string_view data) { - std::array hash; - unsigned int hash_len; - - HMAC(EVP_sha256(), key.data(), static_cast(key.size()), - reinterpret_cast(data.data()), - static_cast(data.size()), hash.data(), &hash_len); - - return std::string{reinterpret_cast(hash.data()), hash_len}; -} - -std::string minio::signer::GetSigningKey(std::string_view secret_key, - utils::Time& date, - std::string_view region, - std::string_view service_name) { - std::string date_key = - HmacHash("AWS4" + std::string(secret_key), date.ToSignerDate()); - std::string date_regionkey = HmacHash(date_key, region); - std::string date_regionservice_key = HmacHash(date_regionkey, service_name); - return HmacHash(date_regionservice_key, "aws4_request"); -} - -std::string minio::signer::GetSignature(std::string_view signing_key, - std::string_view string_to_sign) { - std::string hash = HmacHash(signing_key, string_to_sign); - std::string signature; - char buf[3]; - for (int i = 0; i < hash.size(); ++i) { - sprintf(buf, "%02x", (unsigned char)hash[i]); - signature += buf; - } - return signature; -} - -std::string minio::signer::GetAuthorization(std::string_view access_key, - std::string_view scope, - std::string_view signed_headers, - std::string_view signature) { - return "AWS4-HMAC-SHA256 Credential=" + std::string(access_key) + "/" + - std::string(scope) + ", " + - "SignedHeaders=" + std::string(signed_headers) + ", " + - "Signature=" + std::string(signature); -} - -minio::utils::Multimap& minio::signer::SignV4( - std::string_view service_name, http::Method& method, std::string_view uri, - std::string_view region, utils::Multimap& headers, - utils::Multimap& query_params, std::string_view access_key, - std::string_view secret_key, std::string_view content_sha256, - utils::Time& date) { - std::string scope = GetScope(date, region, service_name); - - std::string signed_headers; - std::string canonical_headers; - headers.GetCanonicalHeaders(signed_headers, canonical_headers); - - std::string canonical_query_string = query_params.GetCanonicalQueryString(); - - std::string canonical_request_hash = GetCanonicalRequestHash( - http::MethodToString(method), uri, canonical_query_string, - canonical_headers, signed_headers, content_sha256); - - std::string string_to_sign = - GetStringToSign(date, scope, canonical_request_hash); - - std::string signing_key = - GetSigningKey(secret_key, date, region, service_name); - - std::string signature = GetSignature(signing_key, string_to_sign); - - std::string authorization = - GetAuthorization(access_key, scope, signed_headers, signature); - - headers.Add("Authorization", authorization); - return headers; -} - -minio::utils::Multimap& minio::signer::SignV4S3( - http::Method& method, std::string_view uri, std::string_view region, - utils::Multimap& headers, utils::Multimap& query_params, - std::string_view access_key, std::string_view secret_key, - std::string_view content_sha256, utils::Time& date) { - return SignV4("s3", method, uri, region, headers, query_params, access_key, - secret_key, content_sha256, date); -} - -minio::utils::Multimap& minio::signer::SignV4STS( - http::Method& method, std::string_view uri, std::string_view region, - utils::Multimap& headers, utils::Multimap& query_params, - std::string_view access_key, std::string_view secret_key, - std::string_view content_sha256, utils::Time& date) { - return SignV4("sts", method, uri, region, headers, query_params, access_key, - secret_key, content_sha256, date); -} diff --git a/src/sse.cc b/src/sse.cc deleted file mode 100644 index edf0990..0000000 --- a/src/sse.cc +++ /dev/null @@ -1,45 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "sse.h" - -minio::s3::SseCustomerKey::SseCustomerKey(std::string_view key) { - std::string b64key = utils::Base64Encode(key); - std::string md5key = utils::Md5sumHash(key); - - headers.Add("X-Amz-Server-Side-Encryption-Customer-Algorithm", "AES256"); - headers.Add("X-Amz-Server-Side-Encryption-Customer-Key", b64key); - headers.Add("X-Amz-Server-Side-Encryption-Customer-Key-MD5", md5key); - - copy_headers.Add( - "X-Amz-Copy-Source-Server-Side-Encryption-Customer-Algorithm", "AES256"); - copy_headers.Add("X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key", - b64key); - copy_headers.Add("X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key-MD5", - md5key); -} - -minio::s3::SseKms::SseKms(std::string_view key, std::string_view context) { - headers.Add("X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id", std::string(key)); - headers.Add("X-Amz-Server-Side-Encryption", "aws:kms"); - if (!context.empty()) { - headers.Add("X-Amz-Server-Side-Encryption-Context", - utils::Base64Encode(context)); - } -} - -minio::s3::SseS3::SseS3() { - headers.Add("X-Amz-Server-Side-Encryption", "AES256"); -} diff --git a/src/types.cc b/src/types.cc deleted file mode 100644 index 81dfa81..0000000 --- a/src/types.cc +++ /dev/null @@ -1,51 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "types.h" - -minio::s3::RetentionMode minio::s3::StringToRetentionMode( - std::string_view str) throw() { - if (str == "GOVERNANCE") return RetentionMode::kGovernance; - if (str == "COMPLIANCE") return RetentionMode::kCompliance; - - std::cerr << "ABORT: Unknown retention mode. This should not happen." - << std::endl; - std::terminate(); - - return RetentionMode::kGovernance; // never reaches here. -} - -minio::s3::LegalHold minio::s3::StringToLegalHold( - std::string_view str) throw() { - if (str == "ON") return LegalHold::kOn; - if (str == "OFF") return LegalHold::kOff; - - std::cerr << "ABORT: Unknown legal hold. This should not happen." - << std::endl; - std::terminate(); - - return LegalHold::kOff; // never reaches here. -} - -minio::s3::Directive minio::s3::StringToDirective( - std::string_view str) throw() { - if (str == "COPY") return Directive::kCopy; - if (str == "REPLACE") return Directive::kReplace; - - std::cerr << "ABORT: Unknown directive. This should not happen." << std::endl; - std::terminate(); - - return Directive::kCopy; // never reaches here. -} diff --git a/src/utils.cc b/src/utils.cc deleted file mode 100644 index 2f0314f..0000000 --- a/src/utils.cc +++ /dev/null @@ -1,514 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "utils.h" - -#include - -const char* HTTP_HEADER_FORMAT = "%a, %d %b %Y %H:%M:%S GMT"; -const std::regex MULTI_SPACE_REGEX("( +)"); -const std::regex VALID_BUCKET_NAME_REGEX( - "^[A-Za-z0-9][A-Za-z0-9\\.\\-\\_\\:]{1,61}[A-Za-z0-9]$"); -const std::regex VALID_BUCKET_NAME_STRICT_REGEX( - "^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$"); -const std::regex VALID_IP_ADDR_REGEX("^(\\d+\\.){3}\\d+$"); - -bool minio::utils::StringToBool(std::string_view str) { - std::string s = ToLower(std::string(str)); - if (s == "false") return false; - if (s == "true") return true; - - std::cerr << "ABORT: Unknown bool string. This should not happen." - << std::endl; - std::terminate(); - - return false; -} - -std::string minio::utils::Trim(std::string_view str, char ch) { - int start, len; - for (start = 0; start < str.size() && str[start] == ch; start++) - ; - for (len = str.size() - start; len > 0 && str[start + len - 1] == ch; len--) - ; - return std::string(str.substr(start, len)); -} - -bool minio::utils::CheckNonEmptyString(std::string_view str) { - return !str.empty() && Trim(str) == str; -} - -std::string minio::utils::ToLower(std::string str) { - std::string s = str; - std::transform(s.begin(), s.end(), s.begin(), ::tolower); - return s; -} - -bool minio::utils::StartsWith(std::string_view str, std::string_view prefix) { - return (str.size() >= prefix.size() && - str.compare(0, prefix.size(), prefix) == 0); -} - -bool minio::utils::EndsWith(std::string_view str, std::string_view suffix) { - return (str.size() >= suffix.size() && - str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0); -} - -bool minio::utils::Contains(std::string_view str, char ch) { - return str.find(ch) != std::string::npos; -} - -bool minio::utils::Contains(std::string_view str, std::string_view substr) { - return str.find(substr) != std::string::npos; -} - -std::string minio::utils::Join(std::list values, - std::string delimiter) { - std::string result; - for (const auto& value : values) { - if (!result.empty()) result += delimiter; - result += value; - } - return result; -} - -std::string minio::utils::Join(std::vector values, - std::string delimiter) { - std::string result; - for (const auto& value : values) { - if (!result.empty()) result += delimiter; - result += value; - } - return result; -} - -std::string minio::utils::EncodePath(std::string_view path) { - std::stringstream str_stream{std::string(path)}; - std::string token; - std::string out; - while (std::getline(str_stream, token, '/')) { - if (!token.empty()) { - if (!out.empty()) out += "/"; - out += curlpp::escape(token); - } - } - - if (*(path.begin()) == '/') out = "/" + out; - if (*(path.end() - 1) == '/' && out != "/") out += "/"; - - return out; -} - -std::string minio::utils::Sha256Hash(std::string_view str) { - EVP_MD_CTX* ctx = EVP_MD_CTX_create(); - if (ctx == NULL) { - std::cerr << "failed to create EVP_MD_CTX" << std::endl; - std::terminate(); - } - - if (1 != EVP_DigestInit_ex(ctx, EVP_sha256(), NULL)) { - std::cerr << "failed to init SHA-256 digest" << std::endl; - std::terminate(); - } - - if (1 != EVP_DigestUpdate(ctx, str.data(), str.size())) { - std::cerr << "failed to update digest" << std::endl; - std::terminate(); - } - - unsigned int length = EVP_MD_size(EVP_sha256()); - unsigned char* digest = (unsigned char*)OPENSSL_malloc(length); - if (digest == NULL) { - std::cerr << "failed to allocate memory for hash value" << std::endl; - std::terminate(); - } - - if (1 != EVP_DigestFinal_ex(ctx, digest, &length)) { - OPENSSL_free(digest); - std::cerr << "failed to finalize digest" << std::endl; - std::terminate(); - } - - EVP_MD_CTX_destroy(ctx); - - std::string hash; - char buf[3]; - for (int i = 0; i < length; ++i) { - sprintf(buf, "%02x", digest[i]); - hash += buf; - } - - OPENSSL_free(digest); - - return hash; -} - -std::string minio::utils::Base64Encode(std::string_view str) { - const auto base64_memory = BIO_new(BIO_s_mem()); - auto base64 = BIO_new(BIO_f_base64()); - base64 = BIO_push(base64, base64_memory); - - BIO_write(base64, str.data(), str.size()); - BIO_flush(base64); - - BUF_MEM* buf_mem{}; - BIO_get_mem_ptr(base64, &buf_mem); - auto base64_encoded = std::string(buf_mem->data, buf_mem->length - 1); - - BIO_free_all(base64); - - return base64_encoded; -} - -std::string minio::utils::Md5sumHash(std::string_view str) { - EVP_MD_CTX* ctx = EVP_MD_CTX_create(); - if (ctx == NULL) { - std::cerr << "failed to create EVP_MD_CTX" << std::endl; - std::terminate(); - } - - if (1 != EVP_DigestInit_ex(ctx, EVP_md5(), NULL)) { - std::cerr << "failed to init MD5 digest" << std::endl; - std::terminate(); - } - - if (1 != EVP_DigestUpdate(ctx, str.data(), str.size())) { - std::cerr << "failed to update digest" << std::endl; - std::terminate(); - } - - unsigned int length = EVP_MD_size(EVP_md5()); - unsigned char* digest = (unsigned char*)OPENSSL_malloc(length); - if (digest == NULL) { - std::cerr << "failed to allocate memory for hash value" << std::endl; - std::terminate(); - } - - if (1 != EVP_DigestFinal_ex(ctx, digest, &length)) { - OPENSSL_free(digest); - std::cerr << "failed to finalize digest" << std::endl; - std::terminate(); - } - - EVP_MD_CTX_destroy(ctx); - - std::string hash = std::string((const char*)digest, length); - OPENSSL_free(digest); - - return minio::utils::Base64Encode(hash); -} - -std::string minio::utils::FormatTime(const std::tm* time, const char* format) { - char buf[128]; - std::strftime(buf, 128, format, time); - return std::string(buf); -} - -minio::utils::Time::Time() { - tv_.tv_sec = 0; - tv_.tv_usec = 0; -} - -minio::utils::Time::Time(std::time_t tv_sec, suseconds_t tv_usec, bool utc) { - tv_.tv_sec = tv_sec; - tv_.tv_usec = tv_usec; - utc_ = utc; -} - -std::tm* minio::utils::Time::ToUTC() { - std::tm* t = new std::tm; - *t = utc_ ? *std::localtime(&tv_.tv_sec) : *std::gmtime(&tv_.tv_sec); - return t; -} - -std::string minio::utils::Time::ToSignerDate() { - std::tm* utc = ToUTC(); - std::string result = FormatTime(utc, "%Y%m%d"); - delete utc; - return result; -} - -std::string minio::utils::Time::ToAmzDate() { - std::tm* utc = ToUTC(); - std::string result = FormatTime(utc, "%Y%m%dT%H%M%SZ"); - delete utc; - return result; -} - -std::string minio::utils::Time::ToHttpHeaderValue() { - std::tm* utc = ToUTC(); - std::locale("C"); - std::string result = FormatTime(utc, HTTP_HEADER_FORMAT); - std::locale(""); - delete utc; - return result; -} - -minio::utils::Time minio::utils::Time::FromHttpHeaderValue(const char* value) { - std::tm t{0}; - std::locale("C"); - strptime(value, HTTP_HEADER_FORMAT, &t); - std::locale(""); - std::time_t time = std::mktime(&t); - return Time(time, 0, true); -} - -std::string minio::utils::Time::ToISO8601UTC() { - char buf[64]; - snprintf(buf, 64, "%03d", tv_.tv_usec); - std::string usec_str(buf); - if (usec_str.size() > 3) usec_str = usec_str.substr(0, 3); - std::tm* utc = ToUTC(); - std::string result = FormatTime(utc, "%Y-%m-%dT%H:%M:%S.") + usec_str + "Z"; - delete utc; - return result; -} - -minio::utils::Time minio::utils::Time::FromISO8601UTC(const char* value) { - std::tm t{0}; - suseconds_t tv_usec = 0; - char* rv = strptime(value, "%Y-%m-%dT%H:%M:%S", &t); - sscanf(rv, ".%u", &tv_usec); - std::time_t time = std::mktime(&t); - return Time(time, tv_usec, true); -} - -minio::utils::Time minio::utils::Time::Now() { - Time t; - gettimeofday(&t.tv_, NULL); - t.utc_ = false; - return t; -} - -minio::utils::Multimap::Multimap() {} - -minio::utils::Multimap::Multimap(const Multimap& headers) { - this->AddAll(headers); -} - -void minio::utils::Multimap::Add(std::string key, std::string value) { - map_[key].insert(value); - keys_[ToLower(key)].insert(key); -} - -void minio::utils::Multimap::AddAll(const Multimap& headers) { - auto m = headers.map_; - for (auto& [key, values] : m) { - map_[key].insert(values.begin(), values.end()); - keys_[ToLower(key)].insert(key); - } -} - -std::list minio::utils::Multimap::ToHttpHeaders() { - std::list headers; - for (auto& [key, values] : map_) { - for (auto& value : values) { - headers.push_back(key + ": " + value); - } - } - return headers; -} - -std::string minio::utils::Multimap::ToQueryString() { - std::string query_string; - for (auto& [key, values] : map_) { - for (auto& value : values) { - std::string s = curlpp::escape(key) + "=" + curlpp::escape(value); - if (!query_string.empty()) query_string += "&"; - query_string += s; - } - } - return query_string; -} - -bool minio::utils::Multimap::Contains(std::string_view key) { - return keys_.find(ToLower(std::string(key))) != keys_.end(); -} - -std::list minio::utils::Multimap::Get(std::string_view key) { - std::list result; - std::set keys = keys_[ToLower(std::string(key))]; - for (auto& key : keys) { - std::set values = map_[key]; - result.insert(result.end(), values.begin(), values.end()); - } - return result; -} - -std::string minio::utils::Multimap::GetFront(std::string_view key) { - std::list values = Get(key); - return (values.size() > 0) ? values.front() : ""; -} - -std::list minio::utils::Multimap::Keys() { - std::list keys; - for (const auto& [key, _] : keys_) keys.push_back(key); - return keys; -} - -void minio::utils::Multimap::GetCanonicalHeaders( - std::string& signed_headers, std::string& canonical_headers) { - std::vector signed_headerslist; - std::map map; - - for (auto& [k, values] : map_) { - std::string key = ToLower(k); - if ("authorization" == key || "user-agent" == key) continue; - if (std::find(signed_headerslist.begin(), signed_headerslist.end(), key) == - signed_headerslist.end()) { - signed_headerslist.push_back(key); - } - - std::string value; - for (auto& v : values) { - if (!value.empty()) value += ","; - value += std::regex_replace(v, MULTI_SPACE_REGEX, " "); - } - - map[key] = value; - } - - std::sort(signed_headerslist.begin(), signed_headerslist.end()); - signed_headers = utils::Join(signed_headerslist, ";"); - - std::vector canonical_headerslist; - for (auto& [key, value] : map) { - canonical_headerslist.push_back(key + ":" + value); - } - - std::sort(canonical_headerslist.begin(), canonical_headerslist.end()); - canonical_headers = utils::Join(canonical_headerslist, "\n"); -} - -std::string minio::utils::Multimap::GetCanonicalQueryString() { - std::vector values; - for (auto& [key, vals] : map_) { - for (auto& value : vals) { - std::string s = curlpp::escape(key) + "=" + curlpp::escape(value); - values.push_back(s); - } - } - - std::sort(values.begin(), values.end()); - return utils::Join(values, "&"); -} - -std::string minio::utils::Url::String() { - if (host.empty()) return ""; - - std::string url = (is_https ? "https://" : "http://") + host; - - if (!path.empty()) { - if (*(path.begin()) != '/') url += "/"; - url += path; - } - - if (!query_string.empty()) url += "?" + query_string; - - return url; -} - -minio::error::Error minio::utils::CheckBucketName(std::string_view bucket_name, - bool strict) { - if (Trim(bucket_name).empty()) { - return error::Error("bucket name cannot be empty"); - } - - if (bucket_name.length() < 3) { - return error::Error("bucket name cannot be less than 3 characters"); - } - - if (bucket_name.length() > 63) { - return error::Error("Bucket name cannot be greater than 63 characters"); - } - - if (std::regex_match(bucket_name.data(), VALID_IP_ADDR_REGEX)) { - return error::Error("bucket name cannot be an IP address"); - } - - // unallowed successive characters check. - if (Contains(bucket_name, "..") || Contains(bucket_name, ".-") || - Contains(bucket_name, "-.")) { - return error::Error( - "Bucket name contains invalid successive characters '..', '.-' or " - "'-.'"); - } - - if (strict) { - if (!std::regex_match(bucket_name.data(), VALID_BUCKET_NAME_STRICT_REGEX)) { - return error::Error("bucket name does not follow S3 standards strictly"); - } - } else if (!std::regex_match(bucket_name.data(), VALID_BUCKET_NAME_REGEX)) { - return error::Error("bucket name does not follow S3 standards"); - } - - return error::SUCCESS; -} - -minio::error::Error minio::utils::ReadPart(std::istream& stream, char* buf, - size_t size, size_t& bytes_read) { - stream.read(buf, size); - bytes_read = stream.gcount(); - return minio::error::SUCCESS; -} - -minio::error::Error minio::utils::CalcPartInfo(long object_size, - size_t& part_size, - long& part_count) { - if (part_size > 0) { - if (part_size < kMinPartSize) { - return error::Error("part size " + std::to_string(part_size) + - " is not supported; minimum allowed 5MiB"); - } - - if (part_size > kMaxPartSize) { - return error::Error("part size " + std::to_string(part_size) + - " is not supported; maximum allowed 5GiB"); - } - } - - if (object_size >= 0) { - if (object_size > kMaxObjectSize) { - return error::Error("object size " + std::to_string(object_size) + - " is not supported; maximum allowed 5TiB"); - } - } else if (part_size <= 0) { - return error::Error( - "valid part size must be provided when object size is unknown"); - } - - if (object_size < 0) { - part_count = -1; - return error::SUCCESS; - } - - if (part_size <= 0) { - // Calculate part size by multiple of kMinPartSize. - double psize = std::ceil((double)object_size / kMaxMultipartCount); - part_size = (size_t)std::ceil(psize / kMinPartSize) * kMinPartSize; - } - - if (part_size > object_size) part_size = object_size; - part_count = - part_size > 0 ? (long)std::ceil((double)object_size / part_size) : 1; - if (part_count > kMaxMultipartCount) { - return error::Error( - "object size " + std::to_string(object_size) + " and part size " + - std::to_string(part_size) + " make more than " + - std::to_string(kMaxMultipartCount) + "parts for upload"); - } - - return error::SUCCESS; -} diff --git a/sse_8h_source.html b/sse_8h_source.html new file mode 100644 index 0000000..d0905eb --- /dev/null +++ b/sse_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/sse.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    sse.h
    +
    +
    +
    1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
    +
    2 // Copyright 2022 MinIO, Inc.
    +
    3 //
    +
    4 // Licensed under the Apache License, Version 2.0 (the "License");
    +
    5 // you may not use this file except in compliance with the License.
    +
    6 // You may obtain a copy of the License at
    +
    7 //
    +
    8 // http://www.apache.org/licenses/LICENSE-2.0
    +
    9 //
    +
    10 // Unless required by applicable law or agreed to in writing, software
    +
    11 // distributed under the License is distributed on an "AS IS" BASIS,
    +
    12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +
    13 // See the License for the specific language governing permissions and
    +
    14 // limitations under the License.
    +
    15 
    +
    16 #ifndef _MINIO_S3_SSE_H
    +
    17 #define _MINIO_S3_SSE_H
    +
    18 
    +
    19 #include "utils.h"
    +
    20 
    +
    21 namespace minio {
    +
    22 namespace s3 {
    +
    23 class Sse {
    +
    24  public:
    +
    25  utils::Multimap empty_;
    +
    26 
    +
    27  public:
    +
    28  Sse() {}
    +
    29  virtual ~Sse() {}
    +
    30  bool TlsRequired() { return true; }
    +
    31  utils::Multimap CopyHeaders() { return empty_; }
    +
    32  virtual utils::Multimap Headers() = 0;
    +
    33 }; // class Sse
    +
    34 
    +
    35 class SseCustomerKey : public Sse {
    +
    36  private:
    +
    37  utils::Multimap headers;
    +
    38  utils::Multimap copy_headers;
    +
    39 
    +
    40  public:
    +
    41  SseCustomerKey(std::string_view key);
    +
    42  utils::Multimap Headers() { return headers; }
    +
    43  utils::Multimap CopyHeaders() { return copy_headers; }
    +
    44 }; // class SseCustomerKey
    +
    45 
    +
    46 class SseKms : public Sse {
    +
    47  private:
    +
    48  utils::Multimap headers;
    +
    49 
    +
    50  public:
    +
    51  SseKms(std::string_view key, std::string_view context);
    +
    52  utils::Multimap Headers() { return headers; }
    +
    53 }; // class SseKms
    +
    54 
    +
    55 class SseS3 : public Sse {
    +
    56  private:
    +
    57  utils::Multimap headers;
    +
    58 
    +
    59  public:
    +
    60  SseS3();
    +
    61  utils::Multimap Headers() { return headers; }
    +
    62  bool TlsRequired() { return false; }
    +
    63 }; // class SseS3
    +
    64 } // namespace s3
    +
    65 } // namespace minio
    +
    66 
    +
    67 #endif // #ifndef __MINIO_S3_SSE_H
    +
    Definition: sse.h:35
    +
    Definition: sse.h:46
    +
    Definition: sse.h:55
    +
    Definition: sse.h:23
    +
    Definition: utils.h:119
    +
    + + + + diff --git a/structminio_1_1http_1_1BaseUrl-members.html b/structminio_1_1http_1_1BaseUrl-members.html new file mode 100644 index 0000000..9b051a8 --- /dev/null +++ b/structminio_1_1http_1_1BaseUrl-members.html @@ -0,0 +1,93 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::http::BaseUrl Member List
    +
    +
    + +

    This is the complete list of members for minio::http::BaseUrl, including all inherited members.

    + + + + + + + + + + + + + +
    accelerate_host (defined in minio::http::BaseUrl)minio::http::BaseUrl
    aws_host (defined in minio::http::BaseUrl)minio::http::BaseUrl
    BuildUrl(utils::Url &url, Method method, std::string region, utils::Multimap query_params, std::string bucket_name="", std::string object_name="") (defined in minio::http::BaseUrl)minio::http::BaseUrl
    dualstack_host (defined in minio::http::BaseUrl)minio::http::BaseUrl
    GetHostHeaderValue() (defined in minio::http::BaseUrl)minio::http::BaseUrl
    host (defined in minio::http::BaseUrl)minio::http::BaseUrl
    is_https (defined in minio::http::BaseUrl)minio::http::BaseUrl
    operator bool() const (defined in minio::http::BaseUrl)minio::http::BaseUrlinline
    port (defined in minio::http::BaseUrl)minio::http::BaseUrl
    region (defined in minio::http::BaseUrl)minio::http::BaseUrl
    SetHost(std::string hostvalue) (defined in minio::http::BaseUrl)minio::http::BaseUrl
    virtual_style (defined in minio::http::BaseUrl)minio::http::BaseUrl
    + + + + diff --git a/structminio_1_1http_1_1BaseUrl.html b/structminio_1_1http_1_1BaseUrl.html new file mode 100644 index 0000000..df2575c --- /dev/null +++ b/structminio_1_1http_1_1BaseUrl.html @@ -0,0 +1,129 @@ + + + + + + + +MinIO C++ SDK: minio::http::BaseUrl Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::http::BaseUrl Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Member Functions

    +error::Error SetHost (std::string hostvalue)
     
    +std::string GetHostHeaderValue ()
     
    +error::Error BuildUrl (utils::Url &url, Method method, std::string region, utils::Multimap query_params, std::string bucket_name="", std::string object_name="")
     
    operator bool () const
     
    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string host
     
    +bool is_https = true
     
    +unsigned int port = 0
     
    +std::string region
     
    +bool aws_host = false
     
    +bool accelerate_host = false
     
    +bool dualstack_host = false
     
    +bool virtual_style = false
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/http.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/http.cc
    • +
    +
    + + + + diff --git a/structminio_1_1http_1_1DataCallbackArgs-members.html b/structminio_1_1http_1_1DataCallbackArgs-members.html new file mode 100644 index 0000000..359b8ea --- /dev/null +++ b/structminio_1_1http_1_1DataCallbackArgs-members.html @@ -0,0 +1,87 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::http::DataCallbackArgs Member List
    +
    + + + + + diff --git a/structminio_1_1http_1_1DataCallbackArgs.html b/structminio_1_1http_1_1DataCallbackArgs.html new file mode 100644 index 0000000..aa2e006 --- /dev/null +++ b/structminio_1_1http_1_1DataCallbackArgs.html @@ -0,0 +1,106 @@ + + + + + + + +MinIO C++ SDK: minio::http::DataCallbackArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::http::DataCallbackArgs Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Attributes

    +curlpp::Easy * handle = NULL
     
    +Responseresponse = NULL
     
    +char * buffer = NULL
     
    +size_t size = 0
     
    +size_t length = 0
     
    +void * user_arg = NULL
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/http.h
    • +
    +
    + + + + diff --git a/structminio_1_1http_1_1Request-members.html b/structminio_1_1http_1_1Request-members.html new file mode 100644 index 0000000..6f35f05 --- /dev/null +++ b/structminio_1_1http_1_1Request-members.html @@ -0,0 +1,92 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::http::Request Member List
    +
    +
    + +

    This is the complete list of members for minio::http::Request, including all inherited members.

    + + + + + + + + + + + + +
    body (defined in minio::http::Request)minio::http::Request
    data_callback (defined in minio::http::Request)minio::http::Request
    debug (defined in minio::http::Request)minio::http::Request
    Execute() (defined in minio::http::Request)minio::http::Request
    headers (defined in minio::http::Request)minio::http::Request
    ignore_cert_check (defined in minio::http::Request)minio::http::Request
    method (defined in minio::http::Request)minio::http::Request
    operator bool() const (defined in minio::http::Request)minio::http::Requestinline
    Request(Method httpmethod, utils::Url httpurl) (defined in minio::http::Request)minio::http::Request
    url (defined in minio::http::Request)minio::http::Request
    user_arg (defined in minio::http::Request)minio::http::Request
    + + + + diff --git a/structminio_1_1http_1_1Request.html b/structminio_1_1http_1_1Request.html new file mode 100644 index 0000000..dbd7e89 --- /dev/null +++ b/structminio_1_1http_1_1Request.html @@ -0,0 +1,126 @@ + + + + + + + +MinIO C++ SDK: minio::http::Request Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::http::Request Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    Request (Method httpmethod, utils::Url httpurl)
     
    +Response Execute ()
     
    operator bool () const
     
    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +Method method
     
    +utils::Url url
     
    +utils::Multimap headers
     
    +std::string_view body = ""
     
    +DataCallback data_callback = NULL
     
    +void * user_arg = NULL
     
    +bool debug = false
     
    +bool ignore_cert_check = false
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/http.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/http.cc
    • +
    +
    + + + + diff --git a/structminio_1_1http_1_1Response-members.html b/structminio_1_1http_1_1Response-members.html new file mode 100644 index 0000000..7bc9bd8 --- /dev/null +++ b/structminio_1_1http_1_1Response-members.html @@ -0,0 +1,89 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::http::Response Member List
    +
    +
    + +

    This is the complete list of members for minio::http::Response, including all inherited members.

    + + + + + + + + + +
    body (defined in minio::http::Response)minio::http::Response
    data_callback (defined in minio::http::Response)minio::http::Response
    error (defined in minio::http::Response)minio::http::Response
    headers (defined in minio::http::Response)minio::http::Response
    operator bool() const (defined in minio::http::Response)minio::http::Responseinline
    ResponseCallback(curlpp::Easy *handle, char *buffer, size_t size, size_t length) (defined in minio::http::Response)minio::http::Response
    status_code (defined in minio::http::Response)minio::http::Response
    user_arg (defined in minio::http::Response)minio::http::Response
    + + + + diff --git a/structminio_1_1http_1_1Response.html b/structminio_1_1http_1_1Response.html new file mode 100644 index 0000000..05f1287 --- /dev/null +++ b/structminio_1_1http_1_1Response.html @@ -0,0 +1,117 @@ + + + + + + + +MinIO C++ SDK: minio::http::Response Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::http::Response Struct Reference
    +
    +
    + + + + + + +

    +Public Member Functions

    +size_t ResponseCallback (curlpp::Easy *handle, char *buffer, size_t size, size_t length)
     
    operator bool () const
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +std::string error
     
    +DataCallback data_callback = NULL
     
    +void * user_arg = NULL
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string body
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/http.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/http.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1AbortMultipartUploadArgs-members.html b/structminio_1_1s3_1_1AbortMultipartUploadArgs-members.html new file mode 100644 index 0000000..5260257 --- /dev/null +++ b/structminio_1_1s3_1_1AbortMultipartUploadArgs-members.html @@ -0,0 +1,88 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::AbortMultipartUploadArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::AbortMultipartUploadArgs, including all inherited members.

    + + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    object (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    upload_id (defined in minio::s3::AbortMultipartUploadArgs)minio::s3::AbortMultipartUploadArgs
    Validate() (defined in minio::s3::AbortMultipartUploadArgs)minio::s3::AbortMultipartUploadArgs
    + + + + diff --git a/structminio_1_1s3_1_1AbortMultipartUploadArgs.html b/structminio_1_1s3_1_1AbortMultipartUploadArgs.html new file mode 100644 index 0000000..a9e0011 --- /dev/null +++ b/structminio_1_1s3_1_1AbortMultipartUploadArgs.html @@ -0,0 +1,136 @@ + + + + + + + +MinIO C++ SDK: minio::s3::AbortMultipartUploadArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::AbortMultipartUploadArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::AbortMultipartUploadArgs:
    +
    +
    + + +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string upload_id
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1AbortMultipartUploadArgs.png b/structminio_1_1s3_1_1AbortMultipartUploadArgs.png new file mode 100644 index 0000000..641b020 Binary files /dev/null and b/structminio_1_1s3_1_1AbortMultipartUploadArgs.png differ diff --git a/structminio_1_1s3_1_1BaseArgs-members.html b/structminio_1_1s3_1_1BaseArgs-members.html new file mode 100644 index 0000000..b7fdcf5 --- /dev/null +++ b/structminio_1_1s3_1_1BaseArgs-members.html @@ -0,0 +1,83 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::BaseArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::BaseArgs, including all inherited members.

    + + + +
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    + + + + diff --git a/structminio_1_1s3_1_1BaseArgs.html b/structminio_1_1s3_1_1BaseArgs.html new file mode 100644 index 0000000..b1b5b5a --- /dev/null +++ b/structminio_1_1s3_1_1BaseArgs.html @@ -0,0 +1,115 @@ + + + + + + + +MinIO C++ SDK: minio::s3::BaseArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::BaseArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::BaseArgs:
    +
    +
    + + +minio::s3::BucketArgs +minio::s3::ListObjectsArgs +minio::s3::ListObjectsCommonArgs +minio::s3::MakeBucketArgs +minio::s3::ObjectArgs +minio::s3::ListObjectVersionsArgs +minio::s3::ListObjectsV1Args +minio::s3::ListObjectsV2Args +minio::s3::AbortMultipartUploadArgs +minio::s3::CompleteMultipartUploadArgs +minio::s3::CreateMultipartUploadArgs +minio::s3::ObjectVersionArgs +minio::s3::ObjectWriteArgs + +
    + + + + + + +

    +Public Attributes

    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1BaseArgs.png b/structminio_1_1s3_1_1BaseArgs.png new file mode 100644 index 0000000..f5b05ab Binary files /dev/null and b/structminio_1_1s3_1_1BaseArgs.png differ diff --git a/structminio_1_1s3_1_1Bucket-members.html b/structminio_1_1s3_1_1Bucket-members.html new file mode 100644 index 0000000..5ce6620 --- /dev/null +++ b/structminio_1_1s3_1_1Bucket-members.html @@ -0,0 +1,83 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::Bucket Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::Bucket, including all inherited members.

    + + + +
    creation_date (defined in minio::s3::Bucket)minio::s3::Bucket
    name (defined in minio::s3::Bucket)minio::s3::Bucket
    + + + + diff --git a/structminio_1_1s3_1_1Bucket.html b/structminio_1_1s3_1_1Bucket.html new file mode 100644 index 0000000..1970945 --- /dev/null +++ b/structminio_1_1s3_1_1Bucket.html @@ -0,0 +1,94 @@ + + + + + + + +MinIO C++ SDK: minio::s3::Bucket Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::Bucket Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    +std::string name
     
    +utils::Time creation_date
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/types.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1BucketArgs-members.html b/structminio_1_1s3_1_1BucketArgs-members.html new file mode 100644 index 0000000..ef71264 --- /dev/null +++ b/structminio_1_1s3_1_1BucketArgs-members.html @@ -0,0 +1,86 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::BucketArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::BucketArgs, including all inherited members.

    + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    Validate() (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    + + + + diff --git a/structminio_1_1s3_1_1BucketArgs.html b/structminio_1_1s3_1_1BucketArgs.html new file mode 100644 index 0000000..5900771 --- /dev/null +++ b/structminio_1_1s3_1_1BucketArgs.html @@ -0,0 +1,130 @@ + + + + + + + +MinIO C++ SDK: minio::s3::BucketArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::BucketArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::BucketArgs:
    +
    +
    + + +minio::s3::BaseArgs +minio::s3::ListObjectsArgs +minio::s3::ListObjectsCommonArgs +minio::s3::MakeBucketArgs +minio::s3::ObjectArgs +minio::s3::ListObjectVersionsArgs +minio::s3::ListObjectsV1Args +minio::s3::ListObjectsV2Args +minio::s3::AbortMultipartUploadArgs +minio::s3::CompleteMultipartUploadArgs +minio::s3::CreateMultipartUploadArgs +minio::s3::ObjectVersionArgs +minio::s3::ObjectWriteArgs + +
    + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    + + + + + + + + + + +

    +Public Attributes

    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1BucketArgs.png b/structminio_1_1s3_1_1BucketArgs.png new file mode 100644 index 0000000..b74d2e9 Binary files /dev/null and b/structminio_1_1s3_1_1BucketArgs.png differ diff --git a/structminio_1_1s3_1_1BucketExistsResponse-members.html b/structminio_1_1s3_1_1BucketExistsResponse-members.html new file mode 100644 index 0000000..8e5bb4d --- /dev/null +++ b/structminio_1_1s3_1_1BucketExistsResponse-members.html @@ -0,0 +1,102 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::BucketExistsResponse Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::BucketExistsResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    BucketExistsResponse(bool existflag) (defined in minio::s3::BucketExistsResponse)minio::s3::BucketExistsResponse
    BucketExistsResponse(error::Error err) (defined in minio::s3::BucketExistsResponse)minio::s3::BucketExistsResponse
    BucketExistsResponse(const Response &response) (defined in minio::s3::BucketExistsResponse)minio::s3::BucketExistsResponse
    code (defined in minio::s3::Response)minio::s3::Response
    data (defined in minio::s3::Response)minio::s3::Response
    error (defined in minio::s3::Response)minio::s3::Response
    exist (defined in minio::s3::BucketExistsResponse)minio::s3::BucketExistsResponse
    GetError() (defined in minio::s3::Response)minio::s3::Response
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    message (defined in minio::s3::Response)minio::s3::Response
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    status_code (defined in minio::s3::Response)minio::s3::Response
    + + + + diff --git a/structminio_1_1s3_1_1BucketExistsResponse.html b/structminio_1_1s3_1_1BucketExistsResponse.html new file mode 100644 index 0000000..d4f43be --- /dev/null +++ b/structminio_1_1s3_1_1BucketExistsResponse.html @@ -0,0 +1,168 @@ + + + + + + + +MinIO C++ SDK: minio::s3::BucketExistsResponse Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::BucketExistsResponse Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::BucketExistsResponse:
    +
    +
    + + +minio::s3::Response + +
    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    BucketExistsResponse (bool existflag)
     
    BucketExistsResponse (error::Error err)
     
    BucketExistsResponse (const Response &response)
     
    - Public Member Functions inherited from minio::s3::Response
    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +bool exist = false
     
    - Public Attributes inherited from minio::s3::Response
    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from minio::s3::Response
    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1BucketExistsResponse.png b/structminio_1_1s3_1_1BucketExistsResponse.png new file mode 100644 index 0000000..c5b27b8 Binary files /dev/null and b/structminio_1_1s3_1_1BucketExistsResponse.png differ diff --git a/structminio_1_1s3_1_1CompleteMultipartUploadArgs-members.html b/structminio_1_1s3_1_1CompleteMultipartUploadArgs-members.html new file mode 100644 index 0000000..a26d319 --- /dev/null +++ b/structminio_1_1s3_1_1CompleteMultipartUploadArgs-members.html @@ -0,0 +1,89 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::CompleteMultipartUploadArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1CompleteMultipartUploadArgs.html b/structminio_1_1s3_1_1CompleteMultipartUploadArgs.html new file mode 100644 index 0000000..1b0d497 --- /dev/null +++ b/structminio_1_1s3_1_1CompleteMultipartUploadArgs.html @@ -0,0 +1,139 @@ + + + + + + + +MinIO C++ SDK: minio::s3::CompleteMultipartUploadArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::CompleteMultipartUploadArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::CompleteMultipartUploadArgs:
    +
    +
    + + +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string upload_id
     
    +std::list< Partparts
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1CompleteMultipartUploadArgs.png b/structminio_1_1s3_1_1CompleteMultipartUploadArgs.png new file mode 100644 index 0000000..f3c6cc5 Binary files /dev/null and b/structminio_1_1s3_1_1CompleteMultipartUploadArgs.png differ diff --git a/structminio_1_1s3_1_1CompleteMultipartUploadResponse-members.html b/structminio_1_1s3_1_1CompleteMultipartUploadResponse-members.html new file mode 100644 index 0000000..784fbcb --- /dev/null +++ b/structminio_1_1s3_1_1CompleteMultipartUploadResponse-members.html @@ -0,0 +1,105 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::CompleteMultipartUploadResponse Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::CompleteMultipartUploadResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    code (defined in minio::s3::Response)minio::s3::Response
    CompleteMultipartUploadResponse() (defined in minio::s3::CompleteMultipartUploadResponse)minio::s3::CompleteMultipartUploadResponse
    CompleteMultipartUploadResponse(error::Error err) (defined in minio::s3::CompleteMultipartUploadResponse)minio::s3::CompleteMultipartUploadResponse
    CompleteMultipartUploadResponse(const Response &response) (defined in minio::s3::CompleteMultipartUploadResponse)minio::s3::CompleteMultipartUploadResponse
    data (defined in minio::s3::Response)minio::s3::Response
    error (defined in minio::s3::Response)minio::s3::Response
    etag (defined in minio::s3::CompleteMultipartUploadResponse)minio::s3::CompleteMultipartUploadResponse
    GetError() (defined in minio::s3::Response)minio::s3::Response
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    location (defined in minio::s3::CompleteMultipartUploadResponse)minio::s3::CompleteMultipartUploadResponse
    message (defined in minio::s3::Response)minio::s3::Response
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    ParseXML(std::string_view data, std::string version_id) (defined in minio::s3::CompleteMultipartUploadResponse)minio::s3::CompleteMultipartUploadResponsestatic
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    status_code (defined in minio::s3::Response)minio::s3::Response
    version_id (defined in minio::s3::CompleteMultipartUploadResponse)minio::s3::CompleteMultipartUploadResponse
    + + + + diff --git a/structminio_1_1s3_1_1CompleteMultipartUploadResponse.html b/structminio_1_1s3_1_1CompleteMultipartUploadResponse.html new file mode 100644 index 0000000..7431a10 --- /dev/null +++ b/structminio_1_1s3_1_1CompleteMultipartUploadResponse.html @@ -0,0 +1,175 @@ + + + + + + + +MinIO C++ SDK: minio::s3::CompleteMultipartUploadResponse Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::CompleteMultipartUploadResponse Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::CompleteMultipartUploadResponse:
    +
    +
    + + +minio::s3::Response + +
    + + + + + + + + + + + + + + + +

    +Public Member Functions

    CompleteMultipartUploadResponse (error::Error err)
     
    CompleteMultipartUploadResponse (const Response &response)
     
    - Public Member Functions inherited from minio::s3::Response
    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + + + + +

    +Static Public Member Functions

    +static CompleteMultipartUploadResponse ParseXML (std::string_view data, std::string version_id)
     
    - Static Public Member Functions inherited from minio::s3::Response
    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string location
     
    +std::string etag
     
    +std::string version_id
     
    - Public Attributes inherited from minio::s3::Response
    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1CompleteMultipartUploadResponse.png b/structminio_1_1s3_1_1CompleteMultipartUploadResponse.png new file mode 100644 index 0000000..c233188 Binary files /dev/null and b/structminio_1_1s3_1_1CompleteMultipartUploadResponse.png differ diff --git a/structminio_1_1s3_1_1ComposeObjectArgs-members.html b/structminio_1_1s3_1_1ComposeObjectArgs-members.html new file mode 100644 index 0000000..c461d41 --- /dev/null +++ b/structminio_1_1s3_1_1ComposeObjectArgs-members.html @@ -0,0 +1,95 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ComposeObjectArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1ComposeObjectArgs.html b/structminio_1_1s3_1_1ComposeObjectArgs.html new file mode 100644 index 0000000..ece8341 --- /dev/null +++ b/structminio_1_1s3_1_1ComposeObjectArgs.html @@ -0,0 +1,160 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ComposeObjectArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ComposeObjectArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ComposeObjectArgs:
    +
    +
    + + +minio::s3::ObjectWriteArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::list< ComposeSourcesources
     
    - Public Attributes inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap headers
     
    +utils::Multimap user_metadata
     
    +Ssesse = NULL
     
    +std::map< std::string, std::string > tags
     
    +Retentionretention = NULL
     
    +bool legal_hold = false
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ComposeObjectArgs.png b/structminio_1_1s3_1_1ComposeObjectArgs.png new file mode 100644 index 0000000..86dd154 Binary files /dev/null and b/structminio_1_1s3_1_1ComposeObjectArgs.png differ diff --git a/structminio_1_1s3_1_1ComposeSource-members.html b/structminio_1_1s3_1_1ComposeSource-members.html new file mode 100644 index 0000000..15b788c --- /dev/null +++ b/structminio_1_1s3_1_1ComposeSource-members.html @@ -0,0 +1,99 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ComposeSource Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::ComposeSource, including all inherited members.

    + + + + + + + + + + + + + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    BuildHeaders(size_t object_size, std::string etag) (defined in minio::s3::ComposeSource)minio::s3::ComposeSource
    CopyHeaders() (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    Headers() (defined in minio::s3::ComposeSource)minio::s3::ComposeSource
    length (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    match_etag (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    modified_since (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    not_match_etag (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    object (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    ObjectSize() (defined in minio::s3::ComposeSource)minio::s3::ComposeSource
    offset (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    ssec (defined in minio::s3::ObjectReadArgs)minio::s3::ObjectReadArgs
    unmodified_since (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    Validate() (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    version_id (defined in minio::s3::ObjectVersionArgs)minio::s3::ObjectVersionArgs
    + + + + diff --git a/structminio_1_1s3_1_1ComposeSource.html b/structminio_1_1s3_1_1ComposeSource.html new file mode 100644 index 0000000..ac802da --- /dev/null +++ b/structminio_1_1s3_1_1ComposeSource.html @@ -0,0 +1,175 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ComposeSource Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ComposeSource Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ComposeSource:
    +
    +
    + + +minio::s3::ObjectConditionalReadArgs +minio::s3::ObjectReadArgs +minio::s3::ObjectVersionArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +error::Error BuildHeaders (size_t object_size, std::string etag)
     
    +size_t ObjectSize ()
     
    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectConditionalReadArgs
    +utils::Multimap Headers ()
     
    +utils::Multimap CopyHeaders ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Attributes inherited from minio::s3::ObjectConditionalReadArgs
    +size_t * offset = NULL
     
    +size_t * length = NULL
     
    +std::string match_etag
     
    +std::string not_match_etag
     
    +utils::Time modified_since
     
    +utils::Time unmodified_since
     
    - Public Attributes inherited from minio::s3::ObjectReadArgs
    +SseCustomerKeyssec = NULL
     
    - Public Attributes inherited from minio::s3::ObjectVersionArgs
    +std::string version_id
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ComposeSource.png b/structminio_1_1s3_1_1ComposeSource.png new file mode 100644 index 0000000..9057625 Binary files /dev/null and b/structminio_1_1s3_1_1ComposeSource.png differ diff --git a/structminio_1_1s3_1_1CopyObjectArgs-members.html b/structminio_1_1s3_1_1CopyObjectArgs-members.html new file mode 100644 index 0000000..1dff730 --- /dev/null +++ b/structminio_1_1s3_1_1CopyObjectArgs-members.html @@ -0,0 +1,97 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::CopyObjectArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1CopyObjectArgs.html b/structminio_1_1s3_1_1CopyObjectArgs.html new file mode 100644 index 0000000..4fb7be0 --- /dev/null +++ b/structminio_1_1s3_1_1CopyObjectArgs.html @@ -0,0 +1,166 @@ + + + + + + + +MinIO C++ SDK: minio::s3::CopyObjectArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::CopyObjectArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::CopyObjectArgs:
    +
    +
    + + +minio::s3::ObjectWriteArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +CopySource source
     
    +Directive * metadata_directive = NULL
     
    +Directive * tagging_directive = NULL
     
    - Public Attributes inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap headers
     
    +utils::Multimap user_metadata
     
    +Ssesse = NULL
     
    +std::map< std::string, std::string > tags
     
    +Retentionretention = NULL
     
    +bool legal_hold = false
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1CopyObjectArgs.png b/structminio_1_1s3_1_1CopyObjectArgs.png new file mode 100644 index 0000000..8d14394 Binary files /dev/null and b/structminio_1_1s3_1_1CopyObjectArgs.png differ diff --git a/structminio_1_1s3_1_1CreateMultipartUploadArgs-members.html b/structminio_1_1s3_1_1CreateMultipartUploadArgs-members.html new file mode 100644 index 0000000..962e36b --- /dev/null +++ b/structminio_1_1s3_1_1CreateMultipartUploadArgs-members.html @@ -0,0 +1,88 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::CreateMultipartUploadArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::CreateMultipartUploadArgs, including all inherited members.

    + + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    headers (defined in minio::s3::CreateMultipartUploadArgs)minio::s3::CreateMultipartUploadArgs
    object (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    Validate() (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    + + + + diff --git a/structminio_1_1s3_1_1CreateMultipartUploadArgs.html b/structminio_1_1s3_1_1CreateMultipartUploadArgs.html new file mode 100644 index 0000000..22e52d0 --- /dev/null +++ b/structminio_1_1s3_1_1CreateMultipartUploadArgs.html @@ -0,0 +1,131 @@ + + + + + + + +MinIO C++ SDK: minio::s3::CreateMultipartUploadArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::CreateMultipartUploadArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::CreateMultipartUploadArgs:
    +
    +
    + + +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +utils::Multimap headers
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    + + + + + + + +

    +Additional Inherited Members

    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1CreateMultipartUploadArgs.png b/structminio_1_1s3_1_1CreateMultipartUploadArgs.png new file mode 100644 index 0000000..f5d810d Binary files /dev/null and b/structminio_1_1s3_1_1CreateMultipartUploadArgs.png differ diff --git a/structminio_1_1s3_1_1CreateMultipartUploadResponse-members.html b/structminio_1_1s3_1_1CreateMultipartUploadResponse-members.html new file mode 100644 index 0000000..5fc3371 --- /dev/null +++ b/structminio_1_1s3_1_1CreateMultipartUploadResponse-members.html @@ -0,0 +1,102 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::CreateMultipartUploadResponse Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::CreateMultipartUploadResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    code (defined in minio::s3::Response)minio::s3::Response
    CreateMultipartUploadResponse(std::string uploadid) (defined in minio::s3::CreateMultipartUploadResponse)minio::s3::CreateMultipartUploadResponse
    CreateMultipartUploadResponse(error::Error err) (defined in minio::s3::CreateMultipartUploadResponse)minio::s3::CreateMultipartUploadResponse
    CreateMultipartUploadResponse(const Response &response) (defined in minio::s3::CreateMultipartUploadResponse)minio::s3::CreateMultipartUploadResponse
    data (defined in minio::s3::Response)minio::s3::Response
    error (defined in minio::s3::Response)minio::s3::Response
    GetError() (defined in minio::s3::Response)minio::s3::Response
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    message (defined in minio::s3::Response)minio::s3::Response
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    status_code (defined in minio::s3::Response)minio::s3::Response
    upload_id (defined in minio::s3::CreateMultipartUploadResponse)minio::s3::CreateMultipartUploadResponse
    + + + + diff --git a/structminio_1_1s3_1_1CreateMultipartUploadResponse.html b/structminio_1_1s3_1_1CreateMultipartUploadResponse.html new file mode 100644 index 0000000..186a344 --- /dev/null +++ b/structminio_1_1s3_1_1CreateMultipartUploadResponse.html @@ -0,0 +1,168 @@ + + + + + + + +MinIO C++ SDK: minio::s3::CreateMultipartUploadResponse Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::CreateMultipartUploadResponse Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::CreateMultipartUploadResponse:
    +
    +
    + + +minio::s3::Response + +
    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    CreateMultipartUploadResponse (std::string uploadid)
     
    CreateMultipartUploadResponse (error::Error err)
     
    CreateMultipartUploadResponse (const Response &response)
     
    - Public Member Functions inherited from minio::s3::Response
    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string upload_id
     
    - Public Attributes inherited from minio::s3::Response
    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from minio::s3::Response
    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1CreateMultipartUploadResponse.png b/structminio_1_1s3_1_1CreateMultipartUploadResponse.png new file mode 100644 index 0000000..addd02c Binary files /dev/null and b/structminio_1_1s3_1_1CreateMultipartUploadResponse.png differ diff --git a/structminio_1_1s3_1_1DownloadObjectArgs-members.html b/structminio_1_1s3_1_1DownloadObjectArgs-members.html new file mode 100644 index 0000000..7af041a --- /dev/null +++ b/structminio_1_1s3_1_1DownloadObjectArgs-members.html @@ -0,0 +1,91 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::DownloadObjectArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1DownloadObjectArgs.html b/structminio_1_1s3_1_1DownloadObjectArgs.html new file mode 100644 index 0000000..f98622d --- /dev/null +++ b/structminio_1_1s3_1_1DownloadObjectArgs.html @@ -0,0 +1,149 @@ + + + + + + + +MinIO C++ SDK: minio::s3::DownloadObjectArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::DownloadObjectArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::DownloadObjectArgs:
    +
    +
    + + +minio::s3::ObjectReadArgs +minio::s3::ObjectVersionArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string filename
     
    +bool overwrite
     
    - Public Attributes inherited from minio::s3::ObjectReadArgs
    +SseCustomerKeyssec = NULL
     
    - Public Attributes inherited from minio::s3::ObjectVersionArgs
    +std::string version_id
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1DownloadObjectArgs.png b/structminio_1_1s3_1_1DownloadObjectArgs.png new file mode 100644 index 0000000..3417347 Binary files /dev/null and b/structminio_1_1s3_1_1DownloadObjectArgs.png differ diff --git a/structminio_1_1s3_1_1GetObjectArgs-members.html b/structminio_1_1s3_1_1GetObjectArgs-members.html new file mode 100644 index 0000000..c95b258 --- /dev/null +++ b/structminio_1_1s3_1_1GetObjectArgs-members.html @@ -0,0 +1,99 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::GetObjectArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::GetObjectArgs, including all inherited members.

    + + + + + + + + + + + + + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    CopyHeaders() (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    data_callback (defined in minio::s3::GetObjectArgs)minio::s3::GetObjectArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    Headers() (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    length (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    match_etag (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    modified_since (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    not_match_etag (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    object (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    offset (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    ssec (defined in minio::s3::ObjectReadArgs)minio::s3::ObjectReadArgs
    unmodified_since (defined in minio::s3::ObjectConditionalReadArgs)minio::s3::ObjectConditionalReadArgs
    user_arg (defined in minio::s3::GetObjectArgs)minio::s3::GetObjectArgs
    Validate() (defined in minio::s3::GetObjectArgs)minio::s3::GetObjectArgs
    version_id (defined in minio::s3::ObjectVersionArgs)minio::s3::ObjectVersionArgs
    + + + + diff --git a/structminio_1_1s3_1_1GetObjectArgs.html b/structminio_1_1s3_1_1GetObjectArgs.html new file mode 100644 index 0000000..28696a7 --- /dev/null +++ b/structminio_1_1s3_1_1GetObjectArgs.html @@ -0,0 +1,176 @@ + + + + + + + +MinIO C++ SDK: minio::s3::GetObjectArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::GetObjectArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::GetObjectArgs:
    +
    +
    + + +minio::s3::ObjectConditionalReadArgs +minio::s3::ObjectReadArgs +minio::s3::ObjectVersionArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectConditionalReadArgs
    +utils::Multimap Headers ()
     
    +utils::Multimap CopyHeaders ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +http::DataCallback data_callback
     
    +void * user_arg = NULL
     
    - Public Attributes inherited from minio::s3::ObjectConditionalReadArgs
    +size_t * offset = NULL
     
    +size_t * length = NULL
     
    +std::string match_etag
     
    +std::string not_match_etag
     
    +utils::Time modified_since
     
    +utils::Time unmodified_since
     
    - Public Attributes inherited from minio::s3::ObjectReadArgs
    +SseCustomerKeyssec = NULL
     
    - Public Attributes inherited from minio::s3::ObjectVersionArgs
    +std::string version_id
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1GetObjectArgs.png b/structminio_1_1s3_1_1GetObjectArgs.png new file mode 100644 index 0000000..4e2c397 Binary files /dev/null and b/structminio_1_1s3_1_1GetObjectArgs.png differ diff --git a/structminio_1_1s3_1_1GetRegionResponse-members.html b/structminio_1_1s3_1_1GetRegionResponse-members.html new file mode 100644 index 0000000..3f21e18 --- /dev/null +++ b/structminio_1_1s3_1_1GetRegionResponse-members.html @@ -0,0 +1,102 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::GetRegionResponse Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::GetRegionResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    code (defined in minio::s3::Response)minio::s3::Response
    data (defined in minio::s3::Response)minio::s3::Response
    error (defined in minio::s3::Response)minio::s3::Response
    GetError() (defined in minio::s3::Response)minio::s3::Response
    GetRegionResponse(std::string regionvalue) (defined in minio::s3::GetRegionResponse)minio::s3::GetRegionResponse
    GetRegionResponse(error::Error err) (defined in minio::s3::GetRegionResponse)minio::s3::GetRegionResponse
    GetRegionResponse(const Response &response) (defined in minio::s3::GetRegionResponse)minio::s3::GetRegionResponse
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    message (defined in minio::s3::Response)minio::s3::Response
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    region (defined in minio::s3::GetRegionResponse)minio::s3::GetRegionResponse
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    status_code (defined in minio::s3::Response)minio::s3::Response
    + + + + diff --git a/structminio_1_1s3_1_1GetRegionResponse.html b/structminio_1_1s3_1_1GetRegionResponse.html new file mode 100644 index 0000000..3211713 --- /dev/null +++ b/structminio_1_1s3_1_1GetRegionResponse.html @@ -0,0 +1,168 @@ + + + + + + + +MinIO C++ SDK: minio::s3::GetRegionResponse Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::GetRegionResponse Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::GetRegionResponse:
    +
    +
    + + +minio::s3::Response + +
    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    GetRegionResponse (std::string regionvalue)
     
    GetRegionResponse (error::Error err)
     
    GetRegionResponse (const Response &response)
     
    - Public Member Functions inherited from minio::s3::Response
    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string region
     
    - Public Attributes inherited from minio::s3::Response
    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from minio::s3::Response
    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1GetRegionResponse.png b/structminio_1_1s3_1_1GetRegionResponse.png new file mode 100644 index 0000000..4214397 Binary files /dev/null and b/structminio_1_1s3_1_1GetRegionResponse.png differ diff --git a/structminio_1_1s3_1_1Item-members.html b/structminio_1_1s3_1_1Item-members.html new file mode 100644 index 0000000..8f99323 --- /dev/null +++ b/structminio_1_1s3_1_1Item-members.html @@ -0,0 +1,114 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::Item Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::Item, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    code (defined in minio::s3::Response)minio::s3::Response
    data (defined in minio::s3::Response)minio::s3::Response
    encoding_type (defined in minio::s3::Item)minio::s3::Item
    error (defined in minio::s3::Response)minio::s3::Response
    etag (defined in minio::s3::Item)minio::s3::Item
    GetError() (defined in minio::s3::Response)minio::s3::Response
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    is_delete_marker (defined in minio::s3::Item)minio::s3::Item
    is_latest (defined in minio::s3::Item)minio::s3::Item
    is_prefix (defined in minio::s3::Item)minio::s3::Item
    Item() (defined in minio::s3::Item)minio::s3::Item
    Item(error::Error err) (defined in minio::s3::Item)minio::s3::Item
    Item(const Response &response) (defined in minio::s3::Item)minio::s3::Item
    last_modified (defined in minio::s3::Item)minio::s3::Item
    message (defined in minio::s3::Response)minio::s3::Response
    name (defined in minio::s3::Item)minio::s3::Item
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    owner_id (defined in minio::s3::Item)minio::s3::Item
    owner_name (defined in minio::s3::Item)minio::s3::Item
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    size (defined in minio::s3::Item)minio::s3::Item
    status_code (defined in minio::s3::Response)minio::s3::Response
    storage_class (defined in minio::s3::Item)minio::s3::Item
    user_metadata (defined in minio::s3::Item)minio::s3::Item
    version_id (defined in minio::s3::Item)minio::s3::Item
    + + + + diff --git a/structminio_1_1s3_1_1Item.html b/structminio_1_1s3_1_1Item.html new file mode 100644 index 0000000..4a1faa2 --- /dev/null +++ b/structminio_1_1s3_1_1Item.html @@ -0,0 +1,201 @@ + + + + + + + +MinIO C++ SDK: minio::s3::Item Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::Item Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::Item:
    +
    +
    + + +minio::s3::Response + +
    + + + + + + + + + + + + + + + +

    +Public Member Functions

    Item (error::Error err)
     
    Item (const Response &response)
     
    - Public Member Functions inherited from minio::s3::Response
    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string etag
     
    +std::string name
     
    +utils::Time last_modified
     
    +std::string owner_id
     
    +std::string owner_name
     
    +size_t size = 0
     
    +std::string storage_class
     
    +bool is_latest = false
     
    +std::string version_id
     
    +std::map< std::string, std::string > user_metadata
     
    +bool is_prefix = false
     
    +bool is_delete_marker = false
     
    +std::string encoding_type
     
    - Public Attributes inherited from minio::s3::Response
    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from minio::s3::Response
    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1Item.png b/structminio_1_1s3_1_1Item.png new file mode 100644 index 0000000..0d4113a Binary files /dev/null and b/structminio_1_1s3_1_1Item.png differ diff --git a/structminio_1_1s3_1_1ListBucketsResponse-members.html b/structminio_1_1s3_1_1ListBucketsResponse-members.html new file mode 100644 index 0000000..ee65e33 --- /dev/null +++ b/structminio_1_1s3_1_1ListBucketsResponse-members.html @@ -0,0 +1,103 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ListBucketsResponse Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::ListBucketsResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    buckets (defined in minio::s3::ListBucketsResponse)minio::s3::ListBucketsResponse
    code (defined in minio::s3::Response)minio::s3::Response
    data (defined in minio::s3::Response)minio::s3::Response
    error (defined in minio::s3::Response)minio::s3::Response
    GetError() (defined in minio::s3::Response)minio::s3::Response
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    ListBucketsResponse(std::list< Bucket > bucketlist) (defined in minio::s3::ListBucketsResponse)minio::s3::ListBucketsResponse
    ListBucketsResponse(error::Error err) (defined in minio::s3::ListBucketsResponse)minio::s3::ListBucketsResponse
    ListBucketsResponse(const Response &response) (defined in minio::s3::ListBucketsResponse)minio::s3::ListBucketsResponse
    message (defined in minio::s3::Response)minio::s3::Response
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    ParseXML(std::string_view data) (defined in minio::s3::ListBucketsResponse)minio::s3::ListBucketsResponsestatic
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    status_code (defined in minio::s3::Response)minio::s3::Response
    + + + + diff --git a/structminio_1_1s3_1_1ListBucketsResponse.html b/structminio_1_1s3_1_1ListBucketsResponse.html new file mode 100644 index 0000000..e2164c7 --- /dev/null +++ b/structminio_1_1s3_1_1ListBucketsResponse.html @@ -0,0 +1,172 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ListBucketsResponse Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ListBucketsResponse Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ListBucketsResponse:
    +
    +
    + + +minio::s3::Response + +
    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    ListBucketsResponse (std::list< Bucket > bucketlist)
     
    ListBucketsResponse (error::Error err)
     
    ListBucketsResponse (const Response &response)
     
    - Public Member Functions inherited from minio::s3::Response
    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + + + + +

    +Static Public Member Functions

    +static ListBucketsResponse ParseXML (std::string_view data)
     
    - Static Public Member Functions inherited from minio::s3::Response
    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::list< Bucketbuckets
     
    - Public Attributes inherited from minio::s3::Response
    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ListBucketsResponse.png b/structminio_1_1s3_1_1ListBucketsResponse.png new file mode 100644 index 0000000..829c8c4 Binary files /dev/null and b/structminio_1_1s3_1_1ListBucketsResponse.png differ diff --git a/structminio_1_1s3_1_1ListObjectVersionsArgs-members.html b/structminio_1_1s3_1_1ListObjectVersionsArgs-members.html new file mode 100644 index 0000000..cc69069 --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectVersionsArgs-members.html @@ -0,0 +1,94 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ListObjectVersionsArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1ListObjectVersionsArgs.html b/structminio_1_1s3_1_1ListObjectVersionsArgs.html new file mode 100644 index 0000000..ced38ae --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectVersionsArgs.html @@ -0,0 +1,144 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ListObjectVersionsArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ListObjectVersionsArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ListObjectVersionsArgs:
    +
    +
    + + +minio::s3::ListObjectsCommonArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + +

    +Public Member Functions

    ListObjectVersionsArgs (ListObjectsArgs args)
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string key_marker
     
    +std::string version_id_marker
     
    - Public Attributes inherited from minio::s3::ListObjectsCommonArgs
    +std::string delimiter
     
    +std::string encoding_type
     
    +unsigned int max_keys = 1000
     
    +std::string prefix
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ListObjectVersionsArgs.png b/structminio_1_1s3_1_1ListObjectVersionsArgs.png new file mode 100644 index 0000000..3ba7658 Binary files /dev/null and b/structminio_1_1s3_1_1ListObjectVersionsArgs.png differ diff --git a/structminio_1_1s3_1_1ListObjectsArgs-members.html b/structminio_1_1s3_1_1ListObjectsArgs-members.html new file mode 100644 index 0000000..d4177ba --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsArgs-members.html @@ -0,0 +1,100 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ListObjectsArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::ListObjectsArgs, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    continuation_token (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    delimiter (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    fetch_owner (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    include_user_metadata (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    include_versions (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    key_marker (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    marker (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    max_keys (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    prefix (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    recursive (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    start_after (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    use_api_v1 (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    use_url_encoding_type (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    Validate() (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    version_id_marker (defined in minio::s3::ListObjectsArgs)minio::s3::ListObjectsArgs
    + + + + diff --git a/structminio_1_1s3_1_1ListObjectsArgs.html b/structminio_1_1s3_1_1ListObjectsArgs.html new file mode 100644 index 0000000..ff89cbb --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsArgs.html @@ -0,0 +1,161 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ListObjectsArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ListObjectsArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ListObjectsArgs:
    +
    +
    + + +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string delimiter
     
    +bool use_url_encoding_type = true
     
    +std::string marker
     
    +std::string start_after
     
    +std::string key_marker
     
    +unsigned int max_keys = 1000
     
    +std::string prefix
     
    +std::string continuation_token
     
    +bool fetch_owner = false
     
    +std::string version_id_marker
     
    +bool include_user_metadata = false
     
    +bool recursive = false
     
    +bool use_api_v1 = false
     
    +bool include_versions = false
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    + + + + +

    +Additional Inherited Members

    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ListObjectsArgs.png b/structminio_1_1s3_1_1ListObjectsArgs.png new file mode 100644 index 0000000..f7cf2cc Binary files /dev/null and b/structminio_1_1s3_1_1ListObjectsArgs.png differ diff --git a/structminio_1_1s3_1_1ListObjectsCommonArgs-members.html b/structminio_1_1s3_1_1ListObjectsCommonArgs-members.html new file mode 100644 index 0000000..45db09e --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsCommonArgs-members.html @@ -0,0 +1,90 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ListObjectsCommonArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1ListObjectsCommonArgs.html b/structminio_1_1s3_1_1ListObjectsCommonArgs.html new file mode 100644 index 0000000..038df02 --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsCommonArgs.html @@ -0,0 +1,134 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ListObjectsCommonArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ListObjectsCommonArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ListObjectsCommonArgs:
    +
    +
    + + +minio::s3::BucketArgs +minio::s3::BaseArgs +minio::s3::ListObjectVersionsArgs +minio::s3::ListObjectsV1Args +minio::s3::ListObjectsV2Args + +
    + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string delimiter
     
    +std::string encoding_type
     
    +unsigned int max_keys = 1000
     
    +std::string prefix
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    + + + + +

    +Additional Inherited Members

    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ListObjectsCommonArgs.png b/structminio_1_1s3_1_1ListObjectsCommonArgs.png new file mode 100644 index 0000000..e611fb3 Binary files /dev/null and b/structminio_1_1s3_1_1ListObjectsCommonArgs.png differ diff --git a/structminio_1_1s3_1_1ListObjectsResponse-members.html b/structminio_1_1s3_1_1ListObjectsResponse-members.html new file mode 100644 index 0000000..1ad00f1 --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsResponse-members.html @@ -0,0 +1,119 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ListObjectsResponse Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::ListObjectsResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    code (defined in minio::s3::Response)minio::s3::Response
    contents (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    continuation_token (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    data (defined in minio::s3::Response)minio::s3::Response
    delimiter (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    encoding_type (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    error (defined in minio::s3::Response)minio::s3::Response
    GetError() (defined in minio::s3::Response)minio::s3::Response
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    is_truncated (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    key_count (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    key_marker (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    ListObjectsResponse() (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    ListObjectsResponse(error::Error err) (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    ListObjectsResponse(const Response &response) (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    marker (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    max_keys (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    message (defined in minio::s3::Response)minio::s3::Response
    name (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    next_continuation_token (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    next_key_marker (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    next_marker (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    next_version_id_marker (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    ParseXML(std::string_view data, bool version) (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponsestatic
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    prefix (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    start_after (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    status_code (defined in minio::s3::Response)minio::s3::Response
    version_id_marker (defined in minio::s3::ListObjectsResponse)minio::s3::ListObjectsResponse
    + + + + diff --git a/structminio_1_1s3_1_1ListObjectsResponse.html b/structminio_1_1s3_1_1ListObjectsResponse.html new file mode 100644 index 0000000..c6ff963 --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsResponse.html @@ -0,0 +1,217 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ListObjectsResponse Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ListObjectsResponse Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ListObjectsResponse:
    +
    +
    + + +minio::s3::Response + +
    + + + + + + + + + + + + + + + +

    +Public Member Functions

    ListObjectsResponse (error::Error err)
     
    ListObjectsResponse (const Response &response)
     
    - Public Member Functions inherited from minio::s3::Response
    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + + + + +

    +Static Public Member Functions

    +static ListObjectsResponse ParseXML (std::string_view data, bool version)
     
    - Static Public Member Functions inherited from minio::s3::Response
    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string name
     
    +std::string encoding_type
     
    +std::string prefix
     
    +std::string delimiter
     
    +bool is_truncated
     
    +unsigned int max_keys
     
    +std::list< Itemcontents
     
    +std::string marker
     
    +std::string next_marker
     
    +unsigned int key_count
     
    +std::string start_after
     
    +std::string continuation_token
     
    +std::string next_continuation_token
     
    +std::string key_marker
     
    +std::string next_key_marker
     
    +std::string version_id_marker
     
    +std::string next_version_id_marker
     
    - Public Attributes inherited from minio::s3::Response
    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ListObjectsResponse.png b/structminio_1_1s3_1_1ListObjectsResponse.png new file mode 100644 index 0000000..9855890 Binary files /dev/null and b/structminio_1_1s3_1_1ListObjectsResponse.png differ diff --git a/structminio_1_1s3_1_1ListObjectsV1Args-members.html b/structminio_1_1s3_1_1ListObjectsV1Args-members.html new file mode 100644 index 0000000..ec65428 --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsV1Args-members.html @@ -0,0 +1,93 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ListObjectsV1Args Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1ListObjectsV1Args.html b/structminio_1_1s3_1_1ListObjectsV1Args.html new file mode 100644 index 0000000..e9f2daf --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsV1Args.html @@ -0,0 +1,141 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ListObjectsV1Args Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ListObjectsV1Args Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ListObjectsV1Args:
    +
    +
    + + +minio::s3::ListObjectsCommonArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + +

    +Public Member Functions

    ListObjectsV1Args (ListObjectsArgs args)
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string marker
     
    - Public Attributes inherited from minio::s3::ListObjectsCommonArgs
    +std::string delimiter
     
    +std::string encoding_type
     
    +unsigned int max_keys = 1000
     
    +std::string prefix
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ListObjectsV1Args.png b/structminio_1_1s3_1_1ListObjectsV1Args.png new file mode 100644 index 0000000..4184aa3 Binary files /dev/null and b/structminio_1_1s3_1_1ListObjectsV1Args.png differ diff --git a/structminio_1_1s3_1_1ListObjectsV2Args-members.html b/structminio_1_1s3_1_1ListObjectsV2Args-members.html new file mode 100644 index 0000000..827bff6 --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsV2Args-members.html @@ -0,0 +1,96 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ListObjectsV2Args Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1ListObjectsV2Args.html b/structminio_1_1s3_1_1ListObjectsV2Args.html new file mode 100644 index 0000000..0b6c1ca --- /dev/null +++ b/structminio_1_1s3_1_1ListObjectsV2Args.html @@ -0,0 +1,150 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ListObjectsV2Args Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ListObjectsV2Args Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ListObjectsV2Args:
    +
    +
    + + +minio::s3::ListObjectsCommonArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + +

    +Public Member Functions

    ListObjectsV2Args (ListObjectsArgs args)
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string start_after
     
    +std::string continuation_token
     
    +bool fetch_owner
     
    +bool include_user_metadata
     
    - Public Attributes inherited from minio::s3::ListObjectsCommonArgs
    +std::string delimiter
     
    +std::string encoding_type
     
    +unsigned int max_keys = 1000
     
    +std::string prefix
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ListObjectsV2Args.png b/structminio_1_1s3_1_1ListObjectsV2Args.png new file mode 100644 index 0000000..3bd02d8 Binary files /dev/null and b/structminio_1_1s3_1_1ListObjectsV2Args.png differ diff --git a/structminio_1_1s3_1_1MakeBucketArgs-members.html b/structminio_1_1s3_1_1MakeBucketArgs-members.html new file mode 100644 index 0000000..6219054 --- /dev/null +++ b/structminio_1_1s3_1_1MakeBucketArgs-members.html @@ -0,0 +1,87 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::MakeBucketArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::MakeBucketArgs, including all inherited members.

    + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    object_lock (defined in minio::s3::MakeBucketArgs)minio::s3::MakeBucketArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    Validate() (defined in minio::s3::MakeBucketArgs)minio::s3::MakeBucketArgs
    + + + + diff --git a/structminio_1_1s3_1_1MakeBucketArgs.html b/structminio_1_1s3_1_1MakeBucketArgs.html new file mode 100644 index 0000000..e9ecc8b --- /dev/null +++ b/structminio_1_1s3_1_1MakeBucketArgs.html @@ -0,0 +1,127 @@ + + + + + + + +MinIO C++ SDK: minio::s3::MakeBucketArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::MakeBucketArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::MakeBucketArgs:
    +
    +
    + + +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +bool object_lock = false
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1MakeBucketArgs.png b/structminio_1_1s3_1_1MakeBucketArgs.png new file mode 100644 index 0000000..05d9314 Binary files /dev/null and b/structminio_1_1s3_1_1MakeBucketArgs.png differ diff --git a/structminio_1_1s3_1_1ObjectArgs-members.html b/structminio_1_1s3_1_1ObjectArgs-members.html new file mode 100644 index 0000000..4344022 --- /dev/null +++ b/structminio_1_1s3_1_1ObjectArgs-members.html @@ -0,0 +1,87 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ObjectArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::ObjectArgs, including all inherited members.

    + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    object (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    Validate() (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    + + + + diff --git a/structminio_1_1s3_1_1ObjectArgs.html b/structminio_1_1s3_1_1ObjectArgs.html new file mode 100644 index 0000000..1f20249 --- /dev/null +++ b/structminio_1_1s3_1_1ObjectArgs.html @@ -0,0 +1,145 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ObjectArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ObjectArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ObjectArgs:
    +
    +
    + + +minio::s3::BucketArgs +minio::s3::BaseArgs +minio::s3::AbortMultipartUploadArgs +minio::s3::CompleteMultipartUploadArgs +minio::s3::CreateMultipartUploadArgs +minio::s3::ObjectVersionArgs +minio::s3::ObjectWriteArgs +minio::s3::ObjectReadArgs +minio::s3::ComposeObjectArgs +minio::s3::CopyObjectArgs +minio::s3::PutObjectBaseArgs +minio::s3::UploadPartArgs +minio::s3::UploadPartCopyArgs +minio::s3::DownloadObjectArgs +minio::s3::ObjectConditionalReadArgs +minio::s3::PutObjectApiArgs +minio::s3::PutObjectArgs +minio::s3::UploadObjectArgs +minio::s3::ComposeSource +minio::s3::GetObjectArgs + +
    + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ObjectArgs.png b/structminio_1_1s3_1_1ObjectArgs.png new file mode 100644 index 0000000..da27fd1 Binary files /dev/null and b/structminio_1_1s3_1_1ObjectArgs.png differ diff --git a/structminio_1_1s3_1_1ObjectConditionalReadArgs-members.html b/structminio_1_1s3_1_1ObjectConditionalReadArgs-members.html new file mode 100644 index 0000000..edf2f04 --- /dev/null +++ b/structminio_1_1s3_1_1ObjectConditionalReadArgs-members.html @@ -0,0 +1,97 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ObjectConditionalReadArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1ObjectConditionalReadArgs.html b/structminio_1_1s3_1_1ObjectConditionalReadArgs.html new file mode 100644 index 0000000..56d4f59 --- /dev/null +++ b/structminio_1_1s3_1_1ObjectConditionalReadArgs.html @@ -0,0 +1,166 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ObjectConditionalReadArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ObjectConditionalReadArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ObjectConditionalReadArgs:
    +
    +
    + + +minio::s3::ObjectReadArgs +minio::s3::ObjectVersionArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs +minio::s3::ComposeSource +minio::s3::GetObjectArgs + +
    + + + + + + + + + + + + +

    +Public Member Functions

    +utils::Multimap Headers ()
     
    +utils::Multimap CopyHeaders ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +size_t * offset = NULL
     
    +size_t * length = NULL
     
    +std::string match_etag
     
    +std::string not_match_etag
     
    +utils::Time modified_since
     
    +utils::Time unmodified_since
     
    - Public Attributes inherited from minio::s3::ObjectReadArgs
    +SseCustomerKeyssec = NULL
     
    - Public Attributes inherited from minio::s3::ObjectVersionArgs
    +std::string version_id
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ObjectConditionalReadArgs.png b/structminio_1_1s3_1_1ObjectConditionalReadArgs.png new file mode 100644 index 0000000..7cca367 Binary files /dev/null and b/structminio_1_1s3_1_1ObjectConditionalReadArgs.png differ diff --git a/structminio_1_1s3_1_1ObjectReadArgs-members.html b/structminio_1_1s3_1_1ObjectReadArgs-members.html new file mode 100644 index 0000000..13a0c87 --- /dev/null +++ b/structminio_1_1s3_1_1ObjectReadArgs-members.html @@ -0,0 +1,89 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ObjectReadArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::ObjectReadArgs, including all inherited members.

    + + + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    object (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    ssec (defined in minio::s3::ObjectReadArgs)minio::s3::ObjectReadArgs
    Validate() (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    version_id (defined in minio::s3::ObjectVersionArgs)minio::s3::ObjectVersionArgs
    + + + + diff --git a/structminio_1_1s3_1_1ObjectReadArgs.html b/structminio_1_1s3_1_1ObjectReadArgs.html new file mode 100644 index 0000000..5e5003c --- /dev/null +++ b/structminio_1_1s3_1_1ObjectReadArgs.html @@ -0,0 +1,140 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ObjectReadArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ObjectReadArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ObjectReadArgs:
    +
    +
    + + +minio::s3::ObjectVersionArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs +minio::s3::DownloadObjectArgs +minio::s3::ObjectConditionalReadArgs +minio::s3::ComposeSource +minio::s3::GetObjectArgs + +
    + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +SseCustomerKeyssec = NULL
     
    - Public Attributes inherited from minio::s3::ObjectVersionArgs
    +std::string version_id
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    + + + + + + + +

    +Additional Inherited Members

    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ObjectReadArgs.png b/structminio_1_1s3_1_1ObjectReadArgs.png new file mode 100644 index 0000000..7c209ff Binary files /dev/null and b/structminio_1_1s3_1_1ObjectReadArgs.png differ diff --git a/structminio_1_1s3_1_1ObjectVersionArgs-members.html b/structminio_1_1s3_1_1ObjectVersionArgs-members.html new file mode 100644 index 0000000..779c5f6 --- /dev/null +++ b/structminio_1_1s3_1_1ObjectVersionArgs-members.html @@ -0,0 +1,88 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ObjectVersionArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::ObjectVersionArgs, including all inherited members.

    + + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    object (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    Validate() (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    version_id (defined in minio::s3::ObjectVersionArgs)minio::s3::ObjectVersionArgs
    + + + + diff --git a/structminio_1_1s3_1_1ObjectVersionArgs.html b/structminio_1_1s3_1_1ObjectVersionArgs.html new file mode 100644 index 0000000..42b651b --- /dev/null +++ b/structminio_1_1s3_1_1ObjectVersionArgs.html @@ -0,0 +1,136 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ObjectVersionArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ObjectVersionArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ObjectVersionArgs:
    +
    +
    + + +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs +minio::s3::ObjectReadArgs +minio::s3::DownloadObjectArgs +minio::s3::ObjectConditionalReadArgs +minio::s3::ComposeSource +minio::s3::GetObjectArgs + +
    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string version_id
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    + + + + + + + +

    +Additional Inherited Members

    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ObjectVersionArgs.png b/structminio_1_1s3_1_1ObjectVersionArgs.png new file mode 100644 index 0000000..689cafe Binary files /dev/null and b/structminio_1_1s3_1_1ObjectVersionArgs.png differ diff --git a/structminio_1_1s3_1_1ObjectWriteArgs-members.html b/structminio_1_1s3_1_1ObjectWriteArgs-members.html new file mode 100644 index 0000000..494b994 --- /dev/null +++ b/structminio_1_1s3_1_1ObjectWriteArgs-members.html @@ -0,0 +1,94 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::ObjectWriteArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1ObjectWriteArgs.html b/structminio_1_1s3_1_1ObjectWriteArgs.html new file mode 100644 index 0000000..a0edded --- /dev/null +++ b/structminio_1_1s3_1_1ObjectWriteArgs.html @@ -0,0 +1,159 @@ + + + + + + + +MinIO C++ SDK: minio::s3::ObjectWriteArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::ObjectWriteArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::ObjectWriteArgs:
    +
    +
    + + +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs +minio::s3::ComposeObjectArgs +minio::s3::CopyObjectArgs +minio::s3::PutObjectBaseArgs +minio::s3::UploadPartArgs +minio::s3::UploadPartCopyArgs +minio::s3::PutObjectApiArgs +minio::s3::PutObjectArgs +minio::s3::UploadObjectArgs + +
    + + + + + + + + + + +

    +Public Member Functions

    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +utils::Multimap headers
     
    +utils::Multimap user_metadata
     
    +Ssesse = NULL
     
    +std::map< std::string, std::string > tags
     
    +Retentionretention = NULL
     
    +bool legal_hold = false
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1ObjectWriteArgs.png b/structminio_1_1s3_1_1ObjectWriteArgs.png new file mode 100644 index 0000000..9fe7231 Binary files /dev/null and b/structminio_1_1s3_1_1ObjectWriteArgs.png differ diff --git a/structminio_1_1s3_1_1Part-members.html b/structminio_1_1s3_1_1Part-members.html new file mode 100644 index 0000000..0f40de9 --- /dev/null +++ b/structminio_1_1s3_1_1Part-members.html @@ -0,0 +1,85 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::Part Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::Part, including all inherited members.

    + + + + + +
    etag (defined in minio::s3::Part)minio::s3::Part
    last_modified (defined in minio::s3::Part)minio::s3::Part
    number (defined in minio::s3::Part)minio::s3::Part
    size (defined in minio::s3::Part)minio::s3::Part
    + + + + diff --git a/structminio_1_1s3_1_1Part.html b/structminio_1_1s3_1_1Part.html new file mode 100644 index 0000000..a728119 --- /dev/null +++ b/structminio_1_1s3_1_1Part.html @@ -0,0 +1,100 @@ + + + + + + + +MinIO C++ SDK: minio::s3::Part Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::Part Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Attributes

    +unsigned int number
     
    +std::string etag
     
    +utils::Time last_modified
     
    +size_t size
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/types.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1PutObjectApiArgs-members.html b/structminio_1_1s3_1_1PutObjectApiArgs-members.html new file mode 100644 index 0000000..4ced924 --- /dev/null +++ b/structminio_1_1s3_1_1PutObjectApiArgs-members.html @@ -0,0 +1,100 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::PutObjectApiArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::PutObjectApiArgs, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    content_type (defined in minio::s3::PutObjectBaseArgs)minio::s3::PutObjectBaseArgs
    data (defined in minio::s3::PutObjectApiArgs)minio::s3::PutObjectApiArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    headers (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    Headers() (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    legal_hold (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    object (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    object_size (defined in minio::s3::PutObjectBaseArgs)minio::s3::PutObjectBaseArgs
    part_count (defined in minio::s3::PutObjectBaseArgs)minio::s3::PutObjectBaseArgs
    part_size (defined in minio::s3::PutObjectBaseArgs)minio::s3::PutObjectBaseArgs
    query_params (defined in minio::s3::PutObjectApiArgs)minio::s3::PutObjectApiArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    retention (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    sse (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    tags (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    user_metadata (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    Validate() (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    + + + + diff --git a/structminio_1_1s3_1_1PutObjectApiArgs.html b/structminio_1_1s3_1_1PutObjectApiArgs.html new file mode 100644 index 0000000..f194740 --- /dev/null +++ b/structminio_1_1s3_1_1PutObjectApiArgs.html @@ -0,0 +1,172 @@ + + + + + + + +MinIO C++ SDK: minio::s3::PutObjectApiArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::PutObjectApiArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::PutObjectApiArgs:
    +
    +
    + + +minio::s3::PutObjectBaseArgs +minio::s3::ObjectWriteArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string_view data
     
    +utils::Multimap query_params
     
    - Public Attributes inherited from minio::s3::PutObjectBaseArgs
    +long object_size = -1
     
    +size_t part_size = 0
     
    +long part_count = 0
     
    +std::string content_type
     
    - Public Attributes inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap headers
     
    +utils::Multimap user_metadata
     
    +Ssesse = NULL
     
    +std::map< std::string, std::string > tags
     
    +Retentionretention = NULL
     
    +bool legal_hold = false
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    + + + + + + + + + + +

    +Additional Inherited Members

    - Public Member Functions inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1PutObjectApiArgs.png b/structminio_1_1s3_1_1PutObjectApiArgs.png new file mode 100644 index 0000000..89edd46 Binary files /dev/null and b/structminio_1_1s3_1_1PutObjectApiArgs.png differ diff --git a/structminio_1_1s3_1_1PutObjectArgs-members.html b/structminio_1_1s3_1_1PutObjectArgs-members.html new file mode 100644 index 0000000..720d9d5 --- /dev/null +++ b/structminio_1_1s3_1_1PutObjectArgs-members.html @@ -0,0 +1,100 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::PutObjectArgs Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::PutObjectArgs, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + +
    bucket (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    content_type (defined in minio::s3::PutObjectBaseArgs)minio::s3::PutObjectBaseArgs
    extra_headers (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    extra_query_params (defined in minio::s3::BaseArgs)minio::s3::BaseArgs
    headers (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    Headers() (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    legal_hold (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    object (defined in minio::s3::ObjectArgs)minio::s3::ObjectArgs
    object_size (defined in minio::s3::PutObjectBaseArgs)minio::s3::PutObjectBaseArgs
    part_count (defined in minio::s3::PutObjectBaseArgs)minio::s3::PutObjectBaseArgs
    part_size (defined in minio::s3::PutObjectBaseArgs)minio::s3::PutObjectBaseArgs
    PutObjectArgs(std::istream &stream, long objectsize, long partsize) (defined in minio::s3::PutObjectArgs)minio::s3::PutObjectArgs
    region (defined in minio::s3::BucketArgs)minio::s3::BucketArgs
    retention (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    sse (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    stream (defined in minio::s3::PutObjectArgs)minio::s3::PutObjectArgs
    tags (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    user_metadata (defined in minio::s3::ObjectWriteArgs)minio::s3::ObjectWriteArgs
    Validate() (defined in minio::s3::PutObjectArgs)minio::s3::PutObjectArgs
    + + + + diff --git a/structminio_1_1s3_1_1PutObjectArgs.html b/structminio_1_1s3_1_1PutObjectArgs.html new file mode 100644 index 0000000..c61c29f --- /dev/null +++ b/structminio_1_1s3_1_1PutObjectArgs.html @@ -0,0 +1,177 @@ + + + + + + + +MinIO C++ SDK: minio::s3::PutObjectArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::PutObjectArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::PutObjectArgs:
    +
    +
    + + +minio::s3::PutObjectBaseArgs +minio::s3::ObjectWriteArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + + + +

    +Public Member Functions

    PutObjectArgs (std::istream &stream, long objectsize, long partsize)
     
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::istream & stream
     
    - Public Attributes inherited from minio::s3::PutObjectBaseArgs
    +long object_size = -1
     
    +size_t part_size = 0
     
    +long part_count = 0
     
    +std::string content_type
     
    - Public Attributes inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap headers
     
    +utils::Multimap user_metadata
     
    +Ssesse = NULL
     
    +std::map< std::string, std::string > tags
     
    +Retentionretention = NULL
     
    +bool legal_hold = false
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1PutObjectArgs.png b/structminio_1_1s3_1_1PutObjectArgs.png new file mode 100644 index 0000000..87d50cf Binary files /dev/null and b/structminio_1_1s3_1_1PutObjectArgs.png differ diff --git a/structminio_1_1s3_1_1PutObjectBaseArgs-members.html b/structminio_1_1s3_1_1PutObjectBaseArgs-members.html new file mode 100644 index 0000000..4c940fb --- /dev/null +++ b/structminio_1_1s3_1_1PutObjectBaseArgs-members.html @@ -0,0 +1,98 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::PutObjectBaseArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1PutObjectBaseArgs.html b/structminio_1_1s3_1_1PutObjectBaseArgs.html new file mode 100644 index 0000000..3d06ddb --- /dev/null +++ b/structminio_1_1s3_1_1PutObjectBaseArgs.html @@ -0,0 +1,167 @@ + + + + + + + +MinIO C++ SDK: minio::s3::PutObjectBaseArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::PutObjectBaseArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::PutObjectBaseArgs:
    +
    +
    + + +minio::s3::ObjectWriteArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs +minio::s3::PutObjectApiArgs +minio::s3::PutObjectArgs +minio::s3::UploadObjectArgs + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +long object_size = -1
     
    +size_t part_size = 0
     
    +long part_count = 0
     
    +std::string content_type
     
    - Public Attributes inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap headers
     
    +utils::Multimap user_metadata
     
    +Ssesse = NULL
     
    +std::map< std::string, std::string > tags
     
    +Retentionretention = NULL
     
    +bool legal_hold = false
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    + + + + + + + + + + +

    +Additional Inherited Members

    - Public Member Functions inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1PutObjectBaseArgs.png b/structminio_1_1s3_1_1PutObjectBaseArgs.png new file mode 100644 index 0000000..a954402 Binary files /dev/null and b/structminio_1_1s3_1_1PutObjectBaseArgs.png differ diff --git a/structminio_1_1s3_1_1PutObjectResponse-members.html b/structminio_1_1s3_1_1PutObjectResponse-members.html new file mode 100644 index 0000000..9295b6a --- /dev/null +++ b/structminio_1_1s3_1_1PutObjectResponse-members.html @@ -0,0 +1,103 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::PutObjectResponse Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::PutObjectResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    code (defined in minio::s3::Response)minio::s3::Response
    data (defined in minio::s3::Response)minio::s3::Response
    error (defined in minio::s3::Response)minio::s3::Response
    etag (defined in minio::s3::PutObjectResponse)minio::s3::PutObjectResponse
    GetError() (defined in minio::s3::Response)minio::s3::Response
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    message (defined in minio::s3::Response)minio::s3::Response
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    PutObjectResponse() (defined in minio::s3::PutObjectResponse)minio::s3::PutObjectResponse
    PutObjectResponse(error::Error err) (defined in minio::s3::PutObjectResponse)minio::s3::PutObjectResponse
    PutObjectResponse(const Response &response) (defined in minio::s3::PutObjectResponse)minio::s3::PutObjectResponse
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    status_code (defined in minio::s3::Response)minio::s3::Response
    version_id (defined in minio::s3::PutObjectResponse)minio::s3::PutObjectResponse
    + + + + diff --git a/structminio_1_1s3_1_1PutObjectResponse.html b/structminio_1_1s3_1_1PutObjectResponse.html new file mode 100644 index 0000000..8b125cc --- /dev/null +++ b/structminio_1_1s3_1_1PutObjectResponse.html @@ -0,0 +1,168 @@ + + + + + + + +MinIO C++ SDK: minio::s3::PutObjectResponse Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::PutObjectResponse Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::PutObjectResponse:
    +
    +
    + + +minio::s3::Response + +
    + + + + + + + + + + + + + + + +

    +Public Member Functions

    PutObjectResponse (error::Error err)
     
    PutObjectResponse (const Response &response)
     
    - Public Member Functions inherited from minio::s3::Response
    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string etag
     
    +std::string version_id
     
    - Public Attributes inherited from minio::s3::Response
    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from minio::s3::Response
    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1PutObjectResponse.png b/structminio_1_1s3_1_1PutObjectResponse.png new file mode 100644 index 0000000..4398b42 Binary files /dev/null and b/structminio_1_1s3_1_1PutObjectResponse.png differ diff --git a/structminio_1_1s3_1_1RequestBuilder-members.html b/structminio_1_1s3_1_1RequestBuilder-members.html new file mode 100644 index 0000000..9e98abd --- /dev/null +++ b/structminio_1_1s3_1_1RequestBuilder-members.html @@ -0,0 +1,98 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::RequestBuilder Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::RequestBuilder, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    base_url (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    body (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    bucket_name (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    Build(creds::Provider *provider=NULL) (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    data_callback (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    date (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    debug (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    headers (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    ignore_cert_check (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    method (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    object_name (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    query_params (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    region (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    RequestBuilder(http::Method httpmethod, std::string regionvalue, http::BaseUrl &baseurl) (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    sha256 (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    user_agent (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    user_arg (defined in minio::s3::RequestBuilder)minio::s3::RequestBuilder
    + + + + diff --git a/structminio_1_1s3_1_1RequestBuilder.html b/structminio_1_1s3_1_1RequestBuilder.html new file mode 100644 index 0000000..98bfb67 --- /dev/null +++ b/structminio_1_1s3_1_1RequestBuilder.html @@ -0,0 +1,144 @@ + + + + + + + +MinIO C++ SDK: minio::s3::RequestBuilder Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::RequestBuilder Struct Reference
    +
    +
    + + + + + + +

    +Public Member Functions

    RequestBuilder (http::Method httpmethod, std::string regionvalue, http::BaseUrl &baseurl)
     
    +http::Request Build (creds::Provider *provider=NULL)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +http::Method method
     
    +std::string region
     
    +http::BaseUrlbase_url
     
    +std::string user_agent
     
    +utils::Multimap headers
     
    +utils::Multimap query_params
     
    +std::string bucket_name
     
    +std::string object_name
     
    +std::string_view body = ""
     
    +http::DataCallback data_callback = NULL
     
    +void * user_arg = NULL
     
    +std::string sha256
     
    +utils::Time date
     
    +bool debug = false
     
    +bool ignore_cert_check = false
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/request-builder.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/request-builder.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1Response-members.html b/structminio_1_1s3_1_1Response-members.html new file mode 100644 index 0000000..8f12a4c --- /dev/null +++ b/structminio_1_1s3_1_1Response-members.html @@ -0,0 +1,98 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::Response Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::Response, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    code (defined in minio::s3::Response)minio::s3::Response
    data (defined in minio::s3::Response)minio::s3::Response
    error (defined in minio::s3::Response)minio::s3::Response
    GetError() (defined in minio::s3::Response)minio::s3::Response
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    message (defined in minio::s3::Response)minio::s3::Response
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    status_code (defined in minio::s3::Response)minio::s3::Response
    + + + + diff --git a/structminio_1_1s3_1_1Response.html b/structminio_1_1s3_1_1Response.html new file mode 100644 index 0000000..59c756a --- /dev/null +++ b/structminio_1_1s3_1_1Response.html @@ -0,0 +1,162 @@ + + + + + + + +MinIO C++ SDK: minio::s3::Response Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    + +
    +
    +Inheritance diagram for minio::s3::Response:
    +
    +
    + + +minio::s3::BucketExistsResponse +minio::s3::CompleteMultipartUploadResponse +minio::s3::CreateMultipartUploadResponse +minio::s3::GetRegionResponse +minio::s3::Item +minio::s3::ListBucketsResponse +minio::s3::ListObjectsResponse +minio::s3::PutObjectResponse +minio::s3::StatObjectResponse + +
    + + + + + + + + + + +

    +Public Member Functions

    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + +

    +Static Public Member Functions

    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1Response.png b/structminio_1_1s3_1_1Response.png new file mode 100644 index 0000000..9cd2ec0 Binary files /dev/null and b/structminio_1_1s3_1_1Response.png differ diff --git a/structminio_1_1s3_1_1Retention-members.html b/structminio_1_1s3_1_1Retention-members.html new file mode 100644 index 0000000..4aac9b7 --- /dev/null +++ b/structminio_1_1s3_1_1Retention-members.html @@ -0,0 +1,83 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::Retention Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::Retention, including all inherited members.

    + + + +
    mode (defined in minio::s3::Retention)minio::s3::Retention
    retain_until_date (defined in minio::s3::Retention)minio::s3::Retention
    + + + + diff --git a/structminio_1_1s3_1_1Retention.html b/structminio_1_1s3_1_1Retention.html new file mode 100644 index 0000000..ef7873c --- /dev/null +++ b/structminio_1_1s3_1_1Retention.html @@ -0,0 +1,94 @@ + + + + + + + +MinIO C++ SDK: minio::s3::Retention Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::Retention Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    +RetentionMode mode
     
    +utils::Time retain_until_date
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/types.h
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1StatObjectResponse-members.html b/structminio_1_1s3_1_1StatObjectResponse-members.html new file mode 100644 index 0000000..ef76d37 --- /dev/null +++ b/structminio_1_1s3_1_1StatObjectResponse-members.html @@ -0,0 +1,110 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::StatObjectResponse Member List
    +
    +
    + +

    This is the complete list of members for minio::s3::StatObjectResponse, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bucket_name (defined in minio::s3::Response)minio::s3::Response
    code (defined in minio::s3::Response)minio::s3::Response
    data (defined in minio::s3::Response)minio::s3::Response
    delete_marker (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    error (defined in minio::s3::Response)minio::s3::Response
    etag (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    GetError() (defined in minio::s3::Response)minio::s3::Response
    headers (defined in minio::s3::Response)minio::s3::Response
    host_id (defined in minio::s3::Response)minio::s3::Response
    last_modified (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    legal_hold (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    message (defined in minio::s3::Response)minio::s3::Response
    object_name (defined in minio::s3::Response)minio::s3::Response
    operator bool() const (defined in minio::s3::Response)minio::s3::Responseinline
    ParseXML(std::string_view data, int status_code, utils::Multimap headers) (defined in minio::s3::Response)minio::s3::Responsestatic
    request_id (defined in minio::s3::Response)minio::s3::Response
    resource (defined in minio::s3::Response)minio::s3::Response
    Response() (defined in minio::s3::Response)minio::s3::Response
    Response(error::Error err) (defined in minio::s3::Response)minio::s3::Response
    Response(const Response &response) (defined in minio::s3::Response)minio::s3::Response
    retention_mode (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    retention_retain_until_date (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    size (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    StatObjectResponse() (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    StatObjectResponse(error::Error err) (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    StatObjectResponse(const Response &response) (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    status_code (defined in minio::s3::Response)minio::s3::Response
    user_metadata (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    version_id (defined in minio::s3::StatObjectResponse)minio::s3::StatObjectResponse
    + + + + diff --git a/structminio_1_1s3_1_1StatObjectResponse.html b/structminio_1_1s3_1_1StatObjectResponse.html new file mode 100644 index 0000000..0f3343f --- /dev/null +++ b/structminio_1_1s3_1_1StatObjectResponse.html @@ -0,0 +1,189 @@ + + + + + + + +MinIO C++ SDK: minio::s3::StatObjectResponse Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::StatObjectResponse Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::StatObjectResponse:
    +
    +
    + + +minio::s3::Response + +
    + + + + + + + + + + + + + + + +

    +Public Member Functions

    StatObjectResponse (error::Error err)
     
    StatObjectResponse (const Response &response)
     
    - Public Member Functions inherited from minio::s3::Response
    Response (error::Error err)
     
    Response (const Response &response)
     
    operator bool () const
     
    +std::string GetError ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string version_id
     
    +std::string etag
     
    +size_t size = 0
     
    +utils::Time last_modified
     
    +RetentionMode retention_mode
     
    +utils::Time retention_retain_until_date
     
    +LegalHold legal_hold
     
    +bool delete_marker
     
    +utils::Multimap user_metadata
     
    - Public Attributes inherited from minio::s3::Response
    +std::string error
     
    +int status_code = 0
     
    +utils::Multimap headers
     
    +std::string data
     
    +std::string code
     
    +std::string message
     
    +std::string resource
     
    +std::string request_id
     
    +std::string host_id
     
    +std::string bucket_name
     
    +std::string object_name
     
    + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from minio::s3::Response
    +static Response ParseXML (std::string_view data, int status_code, utils::Multimap headers)
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/response.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/response.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1StatObjectResponse.png b/structminio_1_1s3_1_1StatObjectResponse.png new file mode 100644 index 0000000..445b7b0 Binary files /dev/null and b/structminio_1_1s3_1_1StatObjectResponse.png differ diff --git a/structminio_1_1s3_1_1UploadObjectArgs-members.html b/structminio_1_1s3_1_1UploadObjectArgs-members.html new file mode 100644 index 0000000..fde7799 --- /dev/null +++ b/structminio_1_1s3_1_1UploadObjectArgs-members.html @@ -0,0 +1,99 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::UploadObjectArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1UploadObjectArgs.html b/structminio_1_1s3_1_1UploadObjectArgs.html new file mode 100644 index 0000000..08fb66f --- /dev/null +++ b/structminio_1_1s3_1_1UploadObjectArgs.html @@ -0,0 +1,174 @@ + + + + + + + +MinIO C++ SDK: minio::s3::UploadObjectArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::UploadObjectArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::UploadObjectArgs:
    +
    +
    + + +minio::s3::PutObjectBaseArgs +minio::s3::ObjectWriteArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string filename
     
    - Public Attributes inherited from minio::s3::PutObjectBaseArgs
    +long object_size = -1
     
    +size_t part_size = 0
     
    +long part_count = 0
     
    +std::string content_type
     
    - Public Attributes inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap headers
     
    +utils::Multimap user_metadata
     
    +Ssesse = NULL
     
    +std::map< std::string, std::string > tags
     
    +Retentionretention = NULL
     
    +bool legal_hold = false
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1UploadObjectArgs.png b/structminio_1_1s3_1_1UploadObjectArgs.png new file mode 100644 index 0000000..4e7a374 Binary files /dev/null and b/structminio_1_1s3_1_1UploadObjectArgs.png differ diff --git a/structminio_1_1s3_1_1UploadPartArgs-members.html b/structminio_1_1s3_1_1UploadPartArgs-members.html new file mode 100644 index 0000000..a028e01 --- /dev/null +++ b/structminio_1_1s3_1_1UploadPartArgs-members.html @@ -0,0 +1,97 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::UploadPartArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1UploadPartArgs.html b/structminio_1_1s3_1_1UploadPartArgs.html new file mode 100644 index 0000000..989a7b8 --- /dev/null +++ b/structminio_1_1s3_1_1UploadPartArgs.html @@ -0,0 +1,166 @@ + + + + + + + +MinIO C++ SDK: minio::s3::UploadPartArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::UploadPartArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::UploadPartArgs:
    +
    +
    + + +minio::s3::ObjectWriteArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string upload_id
     
    +unsigned int part_number
     
    +std::string_view data
     
    - Public Attributes inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap headers
     
    +utils::Multimap user_metadata
     
    +Ssesse = NULL
     
    +std::map< std::string, std::string > tags
     
    +Retentionretention = NULL
     
    +bool legal_hold = false
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1UploadPartArgs.png b/structminio_1_1s3_1_1UploadPartArgs.png new file mode 100644 index 0000000..c31818e Binary files /dev/null and b/structminio_1_1s3_1_1UploadPartArgs.png differ diff --git a/structminio_1_1s3_1_1UploadPartCopyArgs-members.html b/structminio_1_1s3_1_1UploadPartCopyArgs-members.html new file mode 100644 index 0000000..53a76f6 --- /dev/null +++ b/structminio_1_1s3_1_1UploadPartCopyArgs-members.html @@ -0,0 +1,96 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::s3::UploadPartCopyArgs Member List
    +
    + + + + + diff --git a/structminio_1_1s3_1_1UploadPartCopyArgs.html b/structminio_1_1s3_1_1UploadPartCopyArgs.html new file mode 100644 index 0000000..9687561 --- /dev/null +++ b/structminio_1_1s3_1_1UploadPartCopyArgs.html @@ -0,0 +1,166 @@ + + + + + + + +MinIO C++ SDK: minio::s3::UploadPartCopyArgs Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::s3::UploadPartCopyArgs Struct Reference
    +
    +
    +
    +Inheritance diagram for minio::s3::UploadPartCopyArgs:
    +
    +
    + + +minio::s3::ObjectWriteArgs +minio::s3::ObjectArgs +minio::s3::BucketArgs +minio::s3::BaseArgs + +
    + + + + + + + + + + + + + +

    +Public Member Functions

    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap Headers ()
     
    - Public Member Functions inherited from minio::s3::ObjectArgs
    +error::Error Validate ()
     
    - Public Member Functions inherited from minio::s3::BucketArgs
    +error::Error Validate ()
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +std::string upload_id
     
    +unsigned int part_number
     
    +utils::Multimap headers
     
    - Public Attributes inherited from minio::s3::ObjectWriteArgs
    +utils::Multimap headers
     
    +utils::Multimap user_metadata
     
    +Ssesse = NULL
     
    +std::map< std::string, std::string > tags
     
    +Retentionretention = NULL
     
    +bool legal_hold = false
     
    - Public Attributes inherited from minio::s3::ObjectArgs
    +std::string object
     
    - Public Attributes inherited from minio::s3::BucketArgs
    +std::string bucket
     
    +std::string region
     
    - Public Attributes inherited from minio::s3::BaseArgs
    +utils::Multimap extra_headers
     
    +utils::Multimap extra_query_params
     
    +
    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/args.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/args.cc
    • +
    +
    + + + + diff --git a/structminio_1_1s3_1_1UploadPartCopyArgs.png b/structminio_1_1s3_1_1UploadPartCopyArgs.png new file mode 100644 index 0000000..5949c0c Binary files /dev/null and b/structminio_1_1s3_1_1UploadPartCopyArgs.png differ diff --git a/structminio_1_1utils_1_1CharBuffer-members.html b/structminio_1_1utils_1_1CharBuffer-members.html new file mode 100644 index 0000000..4d1df00 --- /dev/null +++ b/structminio_1_1utils_1_1CharBuffer-members.html @@ -0,0 +1,84 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::utils::CharBuffer Member List
    +
    +
    + +

    This is the complete list of members for minio::utils::CharBuffer, including all inherited members.

    + + + + +
    CharBuffer(char *buf, size_t size) (defined in minio::utils::CharBuffer)minio::utils::CharBufferinline
    seekoff(off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which=std::ios_base::in) override (defined in minio::utils::CharBuffer)minio::utils::CharBufferinline
    seekpos(pos_type sp, std::ios_base::openmode which) override (defined in minio::utils::CharBuffer)minio::utils::CharBufferinline
    + + + + diff --git a/structminio_1_1utils_1_1CharBuffer.html b/structminio_1_1utils_1_1CharBuffer.html new file mode 100644 index 0000000..f9bdfc3 --- /dev/null +++ b/structminio_1_1utils_1_1CharBuffer.html @@ -0,0 +1,107 @@ + + + + + + + +MinIO C++ SDK: minio::utils::CharBuffer Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::utils::CharBuffer Struct Reference
    +
    +
    + +

    #include <utils.h>

    +
    +Inheritance diagram for minio::utils::CharBuffer:
    +
    +
    + +
    + + + + + + + + +

    +Public Member Functions

    CharBuffer (char *buf, size_t size)
     
    +pos_type seekoff (off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which=std::ios_base::in) override
     
    +pos_type seekpos (pos_type sp, std::ios_base::openmode which) override
     
    +

    Detailed Description

    +

    CharBuffer represents stream buffer wrapping character array and its size.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/utils.h
    • +
    +
    + + + + diff --git a/structminio_1_1utils_1_1CharBuffer.png b/structminio_1_1utils_1_1CharBuffer.png new file mode 100644 index 0000000..423c98f Binary files /dev/null and b/structminio_1_1utils_1_1CharBuffer.png differ diff --git a/structminio_1_1utils_1_1Url-members.html b/structminio_1_1utils_1_1Url-members.html new file mode 100644 index 0000000..7a0fa3c --- /dev/null +++ b/structminio_1_1utils_1_1Url-members.html @@ -0,0 +1,87 @@ + + + + + + + +MinIO C++ SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    minio::utils::Url Member List
    +
    +
    + +

    This is the complete list of members for minio::utils::Url, including all inherited members.

    + + + + + + + +
    host (defined in minio::utils::Url)minio::utils::Url
    is_https (defined in minio::utils::Url)minio::utils::Url
    operator bool() const (defined in minio::utils::Url)minio::utils::Urlinline
    path (defined in minio::utils::Url)minio::utils::Url
    query_string (defined in minio::utils::Url)minio::utils::Url
    String() (defined in minio::utils::Url)minio::utils::Url
    + + + + diff --git a/structminio_1_1utils_1_1Url.html b/structminio_1_1utils_1_1Url.html new file mode 100644 index 0000000..9bc7f8e --- /dev/null +++ b/structminio_1_1utils_1_1Url.html @@ -0,0 +1,115 @@ + + + + + + + +MinIO C++ SDK: minio::utils::Url Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    minio::utils::Url Struct Reference
    +
    +
    + +

    #include <utils.h>

    + + + + + + +

    +Public Member Functions

    operator bool () const
     
    +std::string String ()
     
    + + + + + + + + + +

    +Public Attributes

    +bool is_https
     
    +std::string host
     
    +std::string path
     
    +std::string query_string
     
    +

    Detailed Description

    +

    Url represents HTTP URL and it's components.

    +

    The documentation for this struct was generated from the following files:
      +
    • /home/bala/devel/github.com/minio/minio-cpp/include/utils.h
    • +
    • /home/bala/devel/github.com/minio/minio-cpp/src/utils.cc
    • +
    +
    + + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/sync_on.png differ diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/tab_a.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/tab_s.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 0000000..85a0cd5 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt deleted file mode 100644 index 44d1439..0000000 --- a/tests/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -ADD_EXECUTABLE(tests tests.cc) -TARGET_LINK_LIBRARIES(tests miniocpp ${requiredlibs}) diff --git a/tests/private.key b/tests/private.key deleted file mode 100644 index ffc07f0..0000000 --- a/tests/private.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAupkiVeaM9e9fj/xtV9O2OB6U0mUf0wuZRwGIdmMXnDr7rkBw -WAoI120gZkUF7j0WSMvJlwGuposLLBoEpTCmh+mVf7PNlYgkn+E49VvaJ9Q7w/Gz -YAlbNGmANg5mzsnkskMsh9+UyyGmdgvX1EQK4sQ3Hq7FIyzL/xm6y9qNiGvseLwU -hKlBF5X7O5wNY25tH2KCpXMY57w5pCGAQnTKjb3hwwy18wrlyquGjC5TPtbPIeUo -VQIcaQs2N8Z3HzrwBgNSVlYxLDFHfD0OPivPCSlSBh9x2Zi9HsYzReCrO6HCDakC -ZO0WNGVCXNdCZwoHZGOW5x7his4+A3at02uRawIDAQABAoIBAElz2mZCGR7+mXmO -fmRiPIqezyp7ECn9mNqwqc0geLzRIx2W1CJz4MMce/KGHS2I8mq5faNp0BxTA5Ta -sRVtr0A1HNpmJvlD3FbrS4aaH6gqDVS2okudoz9ggE3HIYUpSFM7yh26T1Ie7u3s -/4rZNgfKAYCcf5G3Ip5KvJNedvRKC2w5UX4iYU5eMuXs0YPy2+DtTKxZKIEnI3x4 -VpMe652I7GhjkLSsyuW5NoDeSWmmqhitm1bibuZQBR0ogFyAU94rZk8+j4hiUl9k -7ZVi00tKNp7EcLIwbY02ZCpZ2xvat8W1SLeWRUpExPj/7nnA9Fafrl5M8aHgl8R1 -N0Fd+zECgYEA4GruRDPPNPEXPByes6jjcxfvdoYIDyma1V+FN5Nn+/QPL/vWp9t0 -+mH344iwWkEyZZHNUpNuy5dpOA9724iFFLp9Btq06OgzzDuJj1LDbDpB4zwltuQA -4s7ekTFi9rHDOeAyTREHgDu3uya/2qq53Ms6w8gXM4/kmp9/S4N5VhcCgYEA1Nuv -J1khBitNiNbzHYG9DRV4HLfIB8FFDKtgnW8HvSaWUtHKI4YitwJVFfa5Epz9MDFy -tkFAD9Bu0HqZQ6OQZxGo0rDUcFics9Ftw+w3p/PIocPQBK7PNQ3L9BQS9M3stL+k -fW5r+kUvfZaJVE8agCQQnzkJJh9oexJjMWyxB80CgYBa5BQSPWWLjKWba//+xcUx -BR2wREKZWYFjL+e1hZcU3VkVVwsuOtza17jdR6wdMdCmgHHHIv05qd4snWDNnjJA -HfOrRgMFXZ409lwVVzDc8Y9j6CViOF//fEd6SKVLQt3N3/afbek6z3TvcJc9ie3y -9cCcMLrs4Dd3RGf6/omzCwKBgQChwWxCf6Xr9T5PjeFke/I5niYP1M2KryGU9itO -mFCOOmOj/k8ZXdbFsl0Meti7v1dcp0cgH0fafK+peHE+CG81FCNyMPTPh1dWAwHi -EIFe/ZBq9c3/sQQ/sgNasWKSbGbEGJqcwywFHUxwqNQloJNn64BCL2q3cMjKNffx -WELTxQKBgQDe7adrUBtk8+YZ1/c2VsV1oBq6eI2U+1bWa/8fwXWd9ylETBMtcv20 -Fs8UAFWLz78aWaXWWSSEmFvUbjXPBDvzXCObb6HdhXOCF1n74hKU+z06MAUa1eFC -V0GvBx4v1rc1pZ7grBZwGteeVWVgCAZ487m5TATWqxuarH6yfU0Ptg== ------END RSA PRIVATE KEY----- diff --git a/tests/public.crt b/tests/public.crt deleted file mode 100644 index eefae85..0000000 --- a/tests/public.crt +++ /dev/null @@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDojCCAoqgAwIBAgIUHE3HUt7gKVBp7wT9Hjj4wRT1xywwDQYJKoZIhvcNAQEL -BQAwejELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRgwFgYDVQQHDA9jdXN0b20t -bG9jYXRpb24xHDAaBgNVBAoME2N1c3RvbS1vcmdhbml6YXRpb24xEjAQBgNVBAsM -CWN1c3RvbS1vdTESMBAGA1UEAwwJbG9jYWxob3N0MCAXDTIxMDkyMDEyMTAyOFoY -DzIxMjEwODI3MTIxMDI4WjB6MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExGDAW -BgNVBAcMD2N1c3RvbS1sb2NhdGlvbjEcMBoGA1UECgwTY3VzdG9tLW9yZ2FuaXph -dGlvbjESMBAGA1UECwwJY3VzdG9tLW91MRIwEAYDVQQDDAlsb2NhbGhvc3QwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6mSJV5oz171+P/G1X07Y4HpTS -ZR/TC5lHAYh2YxecOvuuQHBYCgjXbSBmRQXuPRZIy8mXAa6miwssGgSlMKaH6ZV/ -s82ViCSf4Tj1W9on1DvD8bNgCVs0aYA2DmbOyeSyQyyH35TLIaZ2C9fURArixDce -rsUjLMv/GbrL2o2Ia+x4vBSEqUEXlfs7nA1jbm0fYoKlcxjnvDmkIYBCdMqNveHD -DLXzCuXKq4aMLlM+1s8h5ShVAhxpCzY3xncfOvAGA1JWVjEsMUd8PQ4+K88JKVIG -H3HZmL0exjNF4Ks7ocINqQJk7RY0ZUJc10JnCgdkY5bnHuGKzj4Ddq3Ta5FrAgMB -AAGjHjAcMBoGA1UdEQQTMBGHBH8AAAGCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsF -AAOCAQEAREoEGX34C0+osOgCPwZ4mFXVvssJRJTc4JL/kqOGPyzS/085MzeIpOhu -gkOm3zj175SKiZMWWpYhB+Q/1T6tDiVLidEY7HK/dcbjYfoTAd42cQWY4qmG68vG -E6WnTQjal0uPuCwKqvqIRgkWLpaIV4TmHtpCFLLlVlnDWQBpAdiK/Vk0EeTDDaqd -cROr4tm/8EBxqwUnIQF8vgbXgVT5BNdcp44LWs7A558CCRrCGifch5+kxkSSdAFG -Y7BEXvnnsxU1n9AAVKJYnp1wUN2Hk4KWyPcQb9/Ee45DKDR5KNyMqClsWWXMJr40 -FrgI6euT50Wzo8Qqbls5Bt/0IzObnA== ------END CERTIFICATE----- diff --git a/tests/tests.cc b/tests/tests.cc deleted file mode 100644 index 9f1f5a6..0000000 --- a/tests/tests.cc +++ /dev/null @@ -1,516 +0,0 @@ -// MinIO C++ Library for Amazon S3 Compatible Cloud Storage -// Copyright 2022 MinIO, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include - -#include "client.h" - -thread_local static std::mt19937 rg{std::random_device{}()}; - -const static std::string charset = - "0123456789" - "abcdefghijklmnopqrstuvwxyz" - "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - -thread_local static std::uniform_int_distribution pick( - 0, charset.length() - 2); - -class RandomBuf : public std::streambuf { - private: - size_t size_; - std::array buf_; - - protected: - int_type underflow() override { - if (size_ == 0) return EOF; - - size_t size = std::min(size_, buf_.size()); - setg(&buf_[0], &buf_[0], &buf_[size]); - for (size_t i = 0; i < size; ++i) buf_[i] = charset[pick(rg)]; - size_ -= size; - return 0; - } - - public: - RandomBuf(size_t size) : size_(size) {} -}; - -class RandCharStream : public std::istream { - private: - RandomBuf buf_; - - public: - RandCharStream(size_t size) : buf_(size) { rdbuf(&buf_); } -}; - -std::string RandomString(std::string chrs, std::string::size_type length) { - thread_local static std::uniform_int_distribution - pick(0, chrs.length() - 2); - - std::string s; - s.reserve(length); - while (length--) s += chrs[pick(rg)]; - return s; -} - -std::string RandBucketName() { - return RandomString("0123456789abcdefghijklmnopqrstuvwxyz", 8); -} - -std::string RandObjectName() { return RandomString(charset, 8); } - -struct MakeBucketError : public std::runtime_error { - MakeBucketError(std::string err) : runtime_error(err) {} -}; - -struct RemoveBucketError : public std::runtime_error { - RemoveBucketError(std::string err) : runtime_error(err) {} -}; - -struct BucketExistsError : public std::runtime_error { - BucketExistsError(std::string err) : runtime_error(err) {} -}; - -class Tests { - private: - minio::s3::Client& client_; - std::string bucket_name_; - - public: - Tests(minio::s3::Client& client) : client_(client) { - bucket_name_ = RandBucketName(); - minio::s3::MakeBucketArgs args; - args.bucket = bucket_name_; - minio::s3::MakeBucketResponse resp = client_.MakeBucket(args); - if (!resp) throw std::runtime_error("MakeBucket(): " + resp.GetError()); - } - - ~Tests() noexcept(false) { - minio::s3::RemoveBucketArgs args; - args.bucket = bucket_name_; - minio::s3::RemoveBucketResponse resp = client_.RemoveBucket(args); - if (!resp) throw std::runtime_error("RemoveBucket(): " + resp.GetError()); - } - - void MakeBucket(std::string bucket_name) noexcept(false) { - minio::s3::MakeBucketArgs args; - args.bucket = bucket_name; - minio::s3::MakeBucketResponse resp = client_.MakeBucket(args); - if (resp) return; - throw MakeBucketError("MakeBucket(): " + resp.GetError()); - } - - void RemoveBucket(std::string bucket_name) noexcept(false) { - minio::s3::RemoveBucketArgs args; - args.bucket = bucket_name; - minio::s3::RemoveBucketResponse resp = client_.RemoveBucket(args); - if (resp) return; - throw RemoveBucketError("RemoveBucket(): " + resp.GetError()); - } - - void RemoveObject(std::string bucket_name, std::string object_name) { - minio::s3::RemoveObjectArgs args; - args.bucket = bucket_name; - args.object = object_name; - minio::s3::RemoveObjectResponse resp = client_.RemoveObject(args); - if (!resp) throw std::runtime_error("RemoveObject(): " + resp.GetError()); - } - - void MakeBucket() { - std::cout << "MakeBucket()" << std::endl; - - std::string bucket_name = RandBucketName(); - MakeBucket(bucket_name); - RemoveBucket(bucket_name); - } - - void RemoveBucket() { - std::cout << "RemoveBucket()" << std::endl; - - std::string bucket_name = RandBucketName(); - MakeBucket(bucket_name); - RemoveBucket(bucket_name); - } - - void BucketExists() { - std::cout << "BucketExists()" << std::endl; - - std::string bucket_name = RandBucketName(); - try { - MakeBucket(bucket_name); - minio::s3::BucketExistsArgs args; - args.bucket = bucket_name; - minio::s3::BucketExistsResponse resp = client_.BucketExists(args); - if (!resp) { - throw BucketExistsError("BucketExists(): " + resp.GetError()); - } - if (!resp.exist) { - throw std::runtime_error("BucketExists(): expected: true; got: false"); - } - RemoveBucket(bucket_name); - } catch (const MakeBucketError& err) { - throw err; - } catch (const std::runtime_error& err) { - RemoveBucket(bucket_name); - throw err; - } - } - - void ListBuckets() { - std::cout << "ListBuckets()" << std::endl; - - std::list bucket_names; - try { - for (int i = 0; i < 3; i++) { - std::string bucket_name = RandBucketName(); - MakeBucket(bucket_name); - bucket_names.push_back(bucket_name); - } - - minio::s3::ListBucketsResponse resp = client_.ListBuckets(); - if (!resp) throw std::runtime_error("ListBuckets(): " + resp.GetError()); - - int c = 0; - for (auto& bucket : resp.buckets) { - if (std::find(bucket_names.begin(), bucket_names.end(), bucket.name) != - bucket_names.end()) { - c++; - } - } - if (c != bucket_names.size()) { - throw std::runtime_error( - "ListBuckets(): expected: " + std::to_string(bucket_names.size()) + - "; got: " + std::to_string(c)); - } - for (auto& bucket_name : bucket_names) RemoveBucket(bucket_name); - } catch (const std::runtime_error& err) { - for (auto& bucket_name : bucket_names) RemoveBucket(bucket_name); - throw err; - } - } - - void StatObject() { - std::cout << "StatObject()" << std::endl; - - std::string object_name = RandObjectName(); - - std::string data = "StatObject()"; - std::stringstream ss(data); - minio::s3::PutObjectArgs args(ss, data.length(), 0); - args.bucket = bucket_name_; - args.object = object_name; - minio::s3::PutObjectResponse resp = client_.PutObject(args); - if (!resp) std::runtime_error("PutObject(): " + resp.GetError()); - try { - minio::s3::StatObjectArgs args; - args.bucket = bucket_name_; - args.object = object_name; - minio::s3::StatObjectResponse resp = client_.StatObject(args); - if (!resp) throw std::runtime_error("StatObject(): " + resp.GetError()); - if (resp.size != data.length()) { - throw std::runtime_error( - "StatObject(): expected: " + std::to_string(data.length()) + - "; got: " + std::to_string(resp.size)); - } - RemoveObject(bucket_name_, object_name); - } catch (const std::runtime_error& err) { - RemoveObject(bucket_name_, object_name); - throw err; - } - } - - void RemoveObject() { - std::cout << "RemoveObject()" << std::endl; - - std::string object_name = RandObjectName(); - std::string data = "RemoveObject()"; - std::stringstream ss(data); - minio::s3::PutObjectArgs args(ss, data.length(), 0); - args.bucket = bucket_name_; - args.object = object_name; - minio::s3::PutObjectResponse resp = client_.PutObject(args); - if (!resp) std::runtime_error("PutObject(): " + resp.GetError()); - RemoveObject(bucket_name_, object_name); - } - - void DownloadObject() { - std::cout << "DownloadObject()" << std::endl; - - std::string object_name = RandObjectName(); - - std::string data = "DownloadObject()"; - std::stringstream ss(data); - minio::s3::PutObjectArgs args(ss, data.length(), 0); - args.bucket = bucket_name_; - args.object = object_name; - minio::s3::PutObjectResponse resp = client_.PutObject(args); - if (!resp) std::runtime_error("PutObject(): " + resp.GetError()); - - try { - std::string filename = RandObjectName(); - minio::s3::DownloadObjectArgs args; - args.bucket = bucket_name_; - args.object = object_name; - args.filename = filename; - minio::s3::DownloadObjectResponse resp = client_.DownloadObject(args); - if (!resp) { - throw std::runtime_error("DownloadObject(): " + resp.GetError()); - } - - std::ifstream file(filename); - file.seekg(0, std::ios::end); - size_t length = file.tellg(); - file.seekg(0, std::ios::beg); - char* buf = new char[length]; - file.read(buf, length); - file.close(); - - if (data != buf) { - throw std::runtime_error("DownloadObject(): expected: " + data + - "; got: " + buf); - } - std::filesystem::remove(filename); - RemoveObject(bucket_name_, object_name); - } catch (const std::runtime_error& err) { - RemoveObject(bucket_name_, object_name); - throw err; - } - } - - void GetObject() { - std::cout << "GetObject()" << std::endl; - - std::string object_name = RandObjectName(); - - std::string data = "GetObject()"; - std::stringstream ss(data); - minio::s3::PutObjectArgs args(ss, data.length(), 0); - args.bucket = bucket_name_; - args.object = object_name; - minio::s3::PutObjectResponse resp = client_.PutObject(args); - if (!resp) std::runtime_error("PutObject(): " + resp.GetError()); - - try { - minio::s3::GetObjectArgs args; - args.bucket = bucket_name_; - args.object = object_name; - std::string content; - args.data_callback = [](minio::http::DataCallbackArgs args) -> size_t { - std::string* content = (std::string*)args.user_arg; - *content += std::string(args.buffer, args.length); - return args.size * args.length; - }; - args.user_arg = &content; - minio::s3::GetObjectResponse resp = client_.GetObject(args); - if (!resp) throw std::runtime_error("GetObject(): " + resp.GetError()); - if (data != content) { - throw std::runtime_error("GetObject(): expected: " + data + - "; got: " + content); - } - RemoveObject(bucket_name_, object_name); - } catch (const std::runtime_error& err) { - RemoveObject(bucket_name_, object_name); - throw err; - } - } - - void ListObjects() { - std::cout << "ListObjects()" << std::endl; - - std::list object_names; - try { - for (int i = 0; i < 3; i++) { - std::string object_name = RandObjectName(); - std::stringstream ss; - minio::s3::PutObjectArgs args(ss, 0, 0); - args.bucket = bucket_name_; - args.object = object_name; - minio::s3::PutObjectResponse resp = client_.PutObject(args); - if (!resp) std::runtime_error("PutObject(): " + resp.GetError()); - object_names.push_back(object_name); - } - - int c = 0; - minio::s3::ListObjectsArgs args; - args.bucket = bucket_name_; - minio::s3::ListObjectsResult result = client_.ListObjects(args); - for (; result; result++) { - minio::s3::Item item = *result; - if (!item) { - throw std::runtime_error("ListObjects(): " + item.GetError()); - } - if (std::find(object_names.begin(), object_names.end(), item.name) != - object_names.end()) { - c++; - } - } - - if (c != object_names.size()) { - throw std::runtime_error( - "ListObjects(): expected: " + std::to_string(object_names.size()) + - "; got: " + std::to_string(c)); - } - for (auto& object_name : object_names) { - RemoveObject(bucket_name_, object_name); - } - } catch (const std::runtime_error& err) { - for (auto& object_name : object_names) { - RemoveObject(bucket_name_, object_name); - } - throw err; - } - } - - void PutObject() { - std::cout << "PutObject()" << std::endl; - - { - std::string object_name = RandObjectName(); - std::string data = "PutObject()"; - std::stringstream ss(data); - minio::s3::PutObjectArgs args(ss, data.length(), 0); - args.bucket = bucket_name_; - args.object = object_name; - minio::s3::PutObjectResponse resp = client_.PutObject(args); - if (!resp) std::runtime_error("PutObject(): " + resp.GetError()); - RemoveObject(bucket_name_, object_name); - } - - { - std::string object_name = RandObjectName(); - size_t size = 13930573; - RandCharStream stream(size); - minio::s3::PutObjectArgs args(stream, size, 0); - args.bucket = bucket_name_; - args.object = object_name; - minio::s3::PutObjectResponse resp = client_.PutObject(args); - if (!resp) - std::runtime_error(" PutObject(): " + resp.GetError()); - RemoveObject(bucket_name_, object_name); - } - } - - void CopyObject() { - std::cout << "CopyObject()" << std::endl; - - std::string object_name = RandObjectName(); - std::string src_object_name = RandObjectName(); - std::string data = "CopyObject()"; - std::stringstream ss(data); - minio::s3::PutObjectArgs args(ss, data.length(), 0); - args.bucket = bucket_name_; - args.object = src_object_name; - minio::s3::PutObjectResponse resp = client_.PutObject(args); - if (!resp) std::runtime_error("PutObject(): " + resp.GetError()); - - try { - minio::s3::CopySource source; - source.bucket = bucket_name_; - source.object = src_object_name; - minio::s3::CopyObjectArgs args; - args.bucket = bucket_name_; - args.object = object_name; - args.source = source; - minio::s3::CopyObjectResponse resp = client_.CopyObject(args); - if (!resp) std::runtime_error("CopyObject(): " + resp.GetError()); - RemoveObject(bucket_name_, src_object_name); - RemoveObject(bucket_name_, object_name); - } catch (const std::runtime_error& err) { - RemoveObject(bucket_name_, src_object_name); - RemoveObject(bucket_name_, object_name); - throw err; - } - } - - void UploadObject() { - std::cout << "UploadObject()" << std::endl; - - std::string data = "UploadObject()"; - std::string filename = RandObjectName(); - std::ofstream file(filename); - file << data; - file.close(); - - std::string object_name = RandObjectName(); - minio::s3::UploadObjectArgs args; - args.bucket = bucket_name_; - args.object = object_name; - args.filename = filename; - minio::s3::UploadObjectResponse resp = client_.UploadObject(args); - if (!resp) std::runtime_error("UploadObject(): " + resp.GetError()); - std::filesystem::remove(filename); - RemoveObject(bucket_name_, object_name); - } -}; // class Tests - -bool GetEnv(std::string& var, const char* name) { - if (const char* value = std::getenv(name)) { - var = value; - return true; - } - return false; -} - -int main(int argc, char* argv[]) { - std::string host; - if (!GetEnv(host, "S3HOST")) { - std::cerr << "S3HOST environment variable must be set" << std::endl; - return EXIT_FAILURE; - } - - std::string access_key; - if (!GetEnv(access_key, "ACCESS_KEY")) { - std::cerr << "ACCESS_KEY environment variable must be set" << std::endl; - return EXIT_FAILURE; - } - - std::string secret_key; - if (!GetEnv(secret_key, "SECRET_KEY")) { - std::cerr << "SECRET_KEY environment variable must be set" << std::endl; - return EXIT_FAILURE; - } - - std::string value; - bool secure = true; - if (GetEnv(value, "IS_HTTP")) secure = false; - - bool ignore_cert_check = false; - if (GetEnv(value, "IGNORE_CERT_CHECK")) secure = true; - - std::string region; - GetEnv(region, "REGION"); - - minio::http::BaseUrl base_url; - base_url.SetHost(host); - base_url.is_https = secure; - minio::creds::StaticProvider provider(access_key, secret_key); - minio::s3::Client client(base_url, &provider); - - Tests tests(client); - tests.MakeBucket(); - tests.RemoveBucket(); - tests.BucketExists(); - tests.ListBuckets(); - tests.StatObject(); - tests.RemoveObject(); - tests.DownloadObject(); - tests.GetObject(); - tests.ListObjects(); - tests.PutObject(); - tests.CopyObject(); - tests.UploadObject(); - - return EXIT_SUCCESS; -} diff --git a/types_8h_source.html b/types_8h_source.html new file mode 100644 index 0000000..02fb875 --- /dev/null +++ b/types_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/types.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    types.h
    +
    +
    +
    1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
    +
    2 // Copyright 2022 MinIO, Inc.
    +
    3 //
    +
    4 // Licensed under the Apache License, Version 2.0 (the "License");
    +
    5 // you may not use this file except in compliance with the License.
    +
    6 // You may obtain a copy of the License at
    +
    7 //
    +
    8 // http://www.apache.org/licenses/LICENSE-2.0
    +
    9 //
    +
    10 // Unless required by applicable law or agreed to in writing, software
    +
    11 // distributed under the License is distributed on an "AS IS" BASIS,
    +
    12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +
    13 // See the License for the specific language governing permissions and
    +
    14 // limitations under the License.
    +
    15 
    +
    16 #ifndef _MINIO_S3_TYPES_H
    +
    17 #define _MINIO_S3_TYPES_H
    +
    18 
    +
    19 #include <iostream>
    +
    20 
    +
    21 #include "utils.h"
    +
    22 
    +
    23 namespace minio {
    +
    24 namespace s3 {
    +
    25 enum class RetentionMode { kGovernance, kCompliance };
    +
    26 
    +
    27 // StringToRetentionMode converts string to retention mode enum.
    +
    28 RetentionMode StringToRetentionMode(std::string_view str) throw();
    +
    29 
    +
    30 constexpr bool IsRetentionModeValid(RetentionMode& retention) {
    +
    31  switch (retention) {
    +
    32  case RetentionMode::kGovernance:
    +
    33  case RetentionMode::kCompliance:
    +
    34  return true;
    +
    35  }
    +
    36  return false;
    +
    37 }
    +
    38 
    +
    39 // RetentionModeToString converts retention mode enum to string.
    +
    40 constexpr const char* RetentionModeToString(RetentionMode& retention) throw() {
    +
    41  switch (retention) {
    +
    42  case RetentionMode::kGovernance:
    +
    43  return "GOVERNANCE";
    +
    44  case RetentionMode::kCompliance:
    +
    45  return "COMPLIANCE";
    +
    46  default: {
    +
    47  std::cerr << "ABORT: Unknown retention mode. This should not happen."
    +
    48  << std::endl;
    +
    49  std::terminate();
    +
    50  }
    +
    51  }
    +
    52  return NULL;
    +
    53 }
    +
    54 
    +
    55 enum class LegalHold { kOn, kOff };
    +
    56 
    +
    57 // StringToLegalHold converts string to legal hold enum.
    +
    58 LegalHold StringToLegalHold(std::string_view str) throw();
    +
    59 
    +
    60 constexpr bool IsLegalHoldValid(LegalHold& legal_hold) {
    +
    61  switch (legal_hold) {
    +
    62  case LegalHold::kOn:
    +
    63  case LegalHold::kOff:
    +
    64  return true;
    +
    65  }
    +
    66  return false;
    +
    67 }
    +
    68 
    +
    69 // LegalHoldToString converts legal hold enum to string.
    +
    70 constexpr const char* LegalHoldToString(LegalHold& legal_hold) throw() {
    +
    71  switch (legal_hold) {
    +
    72  case LegalHold::kOn:
    +
    73  return "ON";
    +
    74  case LegalHold::kOff:
    +
    75  return "OFF";
    +
    76  default: {
    +
    77  std::cerr << "ABORT: Unknown legal hold. This should not happen."
    +
    78  << std::endl;
    +
    79  std::terminate();
    +
    80  }
    +
    81  }
    +
    82  return NULL;
    +
    83 }
    +
    84 
    +
    85 enum class Directive { kCopy, kReplace };
    +
    86 
    +
    87 // StringToDirective converts string to directive enum.
    +
    88 Directive StringToDirective(std::string_view str) throw();
    +
    89 
    +
    90 // DirectiveToString converts directive enum to string.
    +
    91 constexpr const char* DirectiveToString(Directive& directive) throw() {
    +
    92  switch (directive) {
    +
    93  case Directive::kCopy:
    +
    94  return "COPY";
    +
    95  case Directive::kReplace:
    +
    96  return "REPLACE";
    +
    97  default: {
    +
    98  std::cerr << "ABORT: Unknown directive. This should not happen."
    +
    99  << std::endl;
    +
    100  std::terminate();
    +
    101  }
    +
    102  }
    +
    103  return NULL;
    +
    104 }
    +
    105 
    +
    106 struct Bucket {
    +
    107  std::string name;
    +
    108  utils::Time creation_date;
    +
    109 }; // struct Bucket
    +
    110 
    +
    111 struct Part {
    +
    112  unsigned int number;
    +
    113  std::string etag;
    +
    114  utils::Time last_modified;
    +
    115  size_t size;
    +
    116 }; // struct Part
    +
    117 
    +
    118 struct Retention {
    +
    119  RetentionMode mode;
    +
    120  utils::Time retain_until_date;
    +
    121 }; // struct Retention
    +
    122 } // namespace s3
    +
    123 } // namespace minio
    +
    124 #endif // #ifndef __MINIO_S3_TYPES_H
    +
    Definition: utils.h:97
    +
    Definition: types.h:106
    +
    Definition: types.h:111
    +
    Definition: types.h:118
    +
    + + + + diff --git a/utils_8h_source.html b/utils_8h_source.html new file mode 100644 index 0000000..313afd3 --- /dev/null +++ b/utils_8h_source.html @@ -0,0 +1,248 @@ + + + + + + + +MinIO C++ SDK: /home/bala/devel/github.com/minio/minio-cpp/include/utils.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    MinIO C++ SDK +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    utils.h
    +
    +
    +
    1 // MinIO C++ Library for Amazon S3 Compatible Cloud Storage
    +
    2 // Copyright 2022 MinIO, Inc.
    +
    3 //
    +
    4 // Licensed under the Apache License, Version 2.0 (the "License");
    +
    5 // you may not use this file except in compliance with the License.
    +
    6 // You may obtain a copy of the License at
    +
    7 //
    +
    8 // http://www.apache.org/licenses/LICENSE-2.0
    +
    9 //
    +
    10 // Unless required by applicable law or agreed to in writing, software
    +
    11 // distributed under the License is distributed on an "AS IS" BASIS,
    +
    12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +
    13 // See the License for the specific language governing permissions and
    +
    14 // limitations under the License.
    +
    15 
    +
    16 #ifndef _MINIO_UTILS_H
    +
    17 #define _MINIO_UTILS_H
    +
    18 
    +
    19 #include <openssl/buffer.h>
    +
    20 #include <openssl/evp.h>
    +
    21 
    +
    22 #include <cmath>
    +
    23 #include <cstring>
    +
    24 #include <curlpp/cURLpp.hpp>
    +
    25 #include <list>
    +
    26 #include <regex>
    +
    27 #include <set>
    +
    28 
    +
    29 #include "error.h"
    +
    30 
    +
    31 namespace minio {
    +
    32 namespace utils {
    +
    33 inline constexpr unsigned int kMaxMultipartCount = 10000; // 10000 parts
    +
    34 inline constexpr unsigned long kMaxObjectSize =
    +
    35  5L * 1024 * 1024 * 1024 * 1024; // 5TiB
    +
    36 inline constexpr unsigned long kMaxPartSize = 5L * 1024 * 1024 * 1024; // 5GiB
    +
    37 inline constexpr unsigned int kMinPartSize = 5 * 1024 * 1024; // 5MiB
    +
    38 
    +
    39 // FormatTime formats time as per format.
    +
    40 std::string FormatTime(const std::tm* time, const char* format);
    +
    41 
    +
    42 // StringToBool converts string to bool.
    +
    43 bool StringToBool(std::string_view str);
    +
    44 
    +
    45 // BoolToString converts bool to string.
    +
    46 inline const char* const BoolToString(bool b) { return b ? "true" : "false"; }
    +
    47 
    +
    48 // Trim trims leading and trailing character of a string.
    +
    49 std::string Trim(std::string_view str, char ch = ' ');
    +
    50 
    +
    51 // CheckNonemptystring checks whether string is not empty after trimming
    +
    52 // whitespaces.
    +
    53 bool CheckNonEmptyString(std::string_view str);
    +
    54 
    +
    55 // ToLower converts string to lower case.
    +
    56 std::string ToLower(std::string str);
    +
    57 
    +
    58 // StartsWith returns whether str starts with prefix or not.
    +
    59 bool StartsWith(std::string_view str, std::string_view prefix);
    +
    60 
    +
    61 // EndsWith returns whether str ends with suffix or not.
    +
    62 bool EndsWith(std::string_view str, std::string_view suffix);
    +
    63 
    +
    64 // Contains returns whether str has ch.
    +
    65 bool Contains(std::string_view str, char ch);
    +
    66 
    +
    67 // Contains returns whether str has substr.
    +
    68 bool Contains(std::string_view str, std::string_view substr);
    +
    69 
    +
    70 // Join returns a string of joined values by delimiter.
    +
    71 std::string Join(std::list<std::string> values, std::string delimiter);
    +
    72 
    +
    73 // Join returns a string of joined values by delimiter.
    +
    74 std::string Join(std::vector<std::string> values, std::string delimiter);
    +
    75 
    +
    76 // EncodePath does URL encoding of path. It also normalizes multiple slashes.
    +
    77 std::string EncodePath(std::string_view path);
    +
    78 
    +
    79 // Sha256hash computes SHA-256 of data and return hash as hex encoded value.
    +
    80 std::string Sha256Hash(std::string_view str);
    +
    81 
    +
    82 // Base64Encode encodes string to base64.
    +
    83 std::string Base64Encode(std::string_view str);
    +
    84 
    +
    85 // Md5sumHash computes MD5 of data and return hash as Base64 encoded value.
    +
    86 std::string Md5sumHash(std::string_view str);
    +
    87 
    +
    88 error::Error CheckBucketName(std::string_view bucket_name, bool strict = false);
    +
    89 error::Error ReadPart(std::istream& stream, char* buf, size_t size,
    +
    90  size_t& bytes_read);
    +
    91 error::Error CalcPartInfo(long object_size, size_t& part_size,
    +
    92  long& part_count);
    +
    93 
    +
    97 class Time {
    +
    98  private:
    +
    99  struct timeval tv_;
    +
    100  bool utc_;
    +
    101 
    +
    102  public:
    +
    103  Time();
    +
    104  Time(std::time_t tv_sec, suseconds_t tv_usec, bool utc);
    +
    105  std::tm* ToUTC();
    +
    106  std::string ToSignerDate();
    +
    107  std::string ToAmzDate();
    +
    108  std::string ToHttpHeaderValue();
    +
    109  static Time FromHttpHeaderValue(const char* value);
    +
    110  std::string ToISO8601UTC();
    +
    111  static Time FromISO8601UTC(const char* value);
    +
    112  static Time Now();
    +
    113  operator bool() const { return tv_.tv_sec != 0 && tv_.tv_usec != 0; }
    +
    114 }; // class Time
    +
    115 
    +
    119 class Multimap {
    +
    120  private:
    +
    121  std::map<std::string, std::set<std::string>> map_;
    +
    122  std::map<std::string, std::set<std::string>> keys_;
    +
    123 
    +
    124  public:
    +
    125  Multimap();
    +
    126  Multimap(const Multimap& headers);
    +
    127  void Add(std::string key, std::string value);
    +
    128  void AddAll(const Multimap& headers);
    +
    129  std::list<std::string> ToHttpHeaders();
    +
    130  std::string ToQueryString();
    +
    131  operator bool() const { return !map_.empty(); }
    +
    132  bool Contains(std::string_view key);
    +
    133  std::list<std::string> Get(std::string_view key);
    +
    134  std::string GetFront(std::string_view key);
    +
    135  std::list<std::string> Keys();
    +
    136  void GetCanonicalHeaders(std::string& signed_headers,
    +
    137  std::string& canonical_headers);
    +
    138  std::string GetCanonicalQueryString();
    +
    139 }; // class Multimap
    +
    140 
    +
    144 struct Url {
    +
    145  bool is_https;
    +
    146  std::string host;
    +
    147  std::string path;
    +
    148  std::string query_string;
    +
    149 
    +
    150  operator bool() const { return !host.empty(); }
    +
    151  std::string String();
    +
    152 }; // struct Url
    +
    153 
    +
    157 struct CharBuffer : std::streambuf {
    +
    158  CharBuffer(char* buf, size_t size) { this->setg(buf, buf, buf + size); }
    +
    159 
    +
    160  pos_type seekoff(off_type off, std::ios_base::seekdir dir,
    +
    161  std::ios_base::openmode which = std::ios_base::in) override {
    +
    162  if (dir == std::ios_base::cur)
    +
    163  gbump(off);
    +
    164  else if (dir == std::ios_base::end)
    +
    165  setg(eback(), egptr() + off, egptr());
    +
    166  else if (dir == std::ios_base::beg)
    +
    167  setg(eback(), eback() + off, egptr());
    +
    168  return gptr() - eback();
    +
    169  }
    +
    170 
    +
    171  pos_type seekpos(pos_type sp, std::ios_base::openmode which) override {
    +
    172  return seekoff(sp - pos_type(off_type(0)), std::ios_base::beg, which);
    +
    173  }
    +
    174 }; // struct CharBuffer
    +
    175 } // namespace utils
    +
    176 } // namespace minio
    +
    177 
    +
    178 #endif // #ifndef _MINIO_UTILS_H
    +
    Definition: utils.h:119
    +
    Definition: utils.h:97
    +
    Definition: utils.h:157
    +
    Definition: utils.h:144
    +
    + + + + diff --git a/vcpkg.json b/vcpkg.json deleted file mode 100644 index 4dc6e8c..0000000 --- a/vcpkg.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "minio-cpp", - "version-string": "0.1.0", - "description": "The MinIO C++ Client SDK provides simple APIs to access any Amazon S3 compatible object storage", - "dependencies": [ - "openssl", - "curlpp", - "pugixml" - ] -}