groupdocs 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.travis.yml +9 -9
- data/CHANGELOG.md +482 -477
- data/Gemfile +3 -3
- data/LICENSE.txt +21 -21
- data/README.md +94 -94
- data/Rakefile +9 -9
- data/examples/README.md +12 -12
- data/examples/api-samples/Gemfile +5 -5
- data/examples/api-samples/Gemfile.lock +49 -49
- data/examples/api-samples/README.md +23 -23
- data/examples/api-samples/public/css/style.css +229 -229
- data/examples/api-samples/public/docs/annotation-sample.html +167 -167
- data/examples/api-samples/public/docs/docco.css +500 -500
- data/examples/api-samples/public/docs/envelope-sample.html +374 -374
- data/examples/api-samples/public/docs/sample01.html +181 -181
- data/examples/api-samples/public/docs/sample02.html +199 -199
- data/examples/api-samples/public/docs/sample03.html +318 -318
- data/examples/api-samples/public/docs/sample04.html +217 -217
- data/examples/api-samples/public/docs/sample05.html +296 -296
- data/examples/api-samples/public/docs/sample06.html +347 -347
- data/examples/api-samples/public/docs/sample07.html +209 -209
- data/examples/api-samples/public/docs/sample08.html +277 -277
- data/examples/api-samples/public/docs/sample09.html +314 -314
- data/examples/api-samples/public/docs/sample10.html +270 -270
- data/examples/api-samples/public/docs/sample11.html +462 -462
- data/examples/api-samples/public/docs/sample12.html +199 -199
- data/examples/api-samples/public/docs/sample13.html +201 -201
- data/examples/api-samples/public/docs/sample14.html +204 -204
- data/examples/api-samples/public/docs/sample15.html +182 -182
- data/examples/api-samples/public/docs/sample16.html +234 -234
- data/examples/api-samples/public/docs/sample17.html +309 -309
- data/examples/api-samples/public/docs/sample18.html +721 -721
- data/examples/api-samples/public/docs/sample19.html +631 -631
- data/examples/api-samples/public/docs/sample20.html +230 -230
- data/examples/api-samples/public/docs/sample21.html +790 -790
- data/examples/api-samples/public/docs/sample22.html +408 -408
- data/examples/api-samples/public/docs/sample25.html +550 -550
- data/examples/api-samples/public/templates/base-simple_source.html +191 -191
- data/examples/api-samples/public/templates/testdocument.html +100 -100
- data/examples/api-samples/public/templates/welcome.htm +137 -137
- data/examples/api-samples/samples/annotation-sample.rb +56 -56
- data/examples/api-samples/samples/envelope-sample.rb +133 -133
- data/examples/api-samples/samples/sample01.rb +44 -44
- data/examples/api-samples/samples/sample02.rb +50 -50
- data/examples/api-samples/samples/sample03.rb +79 -79
- data/examples/api-samples/samples/sample04.rb +54 -54
- data/examples/api-samples/samples/sample05.rb +83 -83
- data/examples/api-samples/samples/sample06.rb +86 -86
- data/examples/api-samples/samples/sample07.rb +59 -59
- data/examples/api-samples/samples/sample08.rb +76 -76
- data/examples/api-samples/samples/sample09.rb +85 -85
- data/examples/api-samples/samples/sample10.rb +70 -70
- data/examples/api-samples/samples/sample11.rb +132 -132
- data/examples/api-samples/samples/sample12.rb +48 -48
- data/examples/api-samples/samples/sample13.rb +49 -49
- data/examples/api-samples/samples/sample14.rb +54 -54
- data/examples/api-samples/samples/sample15.rb +43 -43
- data/examples/api-samples/samples/sample16.rb +57 -57
- data/examples/api-samples/samples/sample17.rb +70 -70
- data/examples/api-samples/samples/sample18.rb +190 -190
- data/examples/api-samples/samples/sample19.rb +188 -188
- data/examples/api-samples/samples/sample20.rb +68 -68
- data/examples/api-samples/samples/sample21.rb +212 -212
- data/examples/api-samples/samples/sample22.rb +109 -109
- data/examples/api-samples/samples/sample25.rb +127 -127
- data/examples/api-samples/views/_others_samples.haml +233 -233
- data/examples/api-samples/views/annotation_sample.haml +63 -63
- data/examples/api-samples/views/envelope_sample.haml +72 -72
- data/examples/api-samples/views/index.haml +235 -235
- data/examples/api-samples/views/layout.haml +3 -3
- data/examples/api-samples/views/sample01.haml +63 -63
- data/examples/api-samples/views/sample02.haml +52 -52
- data/examples/api-samples/views/sample03.haml +87 -87
- data/examples/api-samples/views/sample04.haml +55 -55
- data/examples/api-samples/views/sample05.haml +86 -86
- data/examples/api-samples/views/sample06.haml +58 -58
- data/examples/api-samples/views/sample07.haml +52 -52
- data/examples/api-samples/views/sample08.haml +100 -100
- data/examples/api-samples/views/sample09.haml +95 -95
- data/examples/api-samples/views/sample10.haml +93 -93
- data/examples/api-samples/views/sample11.haml +140 -140
- data/examples/api-samples/views/sample12.haml +68 -68
- data/examples/api-samples/views/sample13.haml +64 -64
- data/examples/api-samples/views/sample14.haml +60 -60
- data/examples/api-samples/views/sample15.haml +51 -51
- data/examples/api-samples/views/sample16.haml +50 -50
- data/examples/api-samples/views/sample17.haml +54 -54
- data/examples/api-samples/views/sample18.haml +143 -143
- data/examples/api-samples/views/sample19.haml +92 -92
- data/examples/api-samples/views/sample20.haml +54 -54
- data/examples/api-samples/views/sample21.haml +123 -123
- data/examples/api-samples/views/sample22.haml +106 -106
- data/examples/api-samples/views/sample25.haml +101 -101
- data/examples/api-samples/views/sample31.haml +2 -2
- data/examples/api-samples/web.rb +20 -20
- data/examples/viewer/Gemfile +5 -5
- data/examples/viewer/app.rb +52 -52
- data/groupdocs.gemspec +31 -31
- data/lib/groupdocs.rb +62 -62
- data/lib/groupdocs/api.rb +6 -6
- data/lib/groupdocs/api/entity.rb +112 -112
- data/lib/groupdocs/api/helpers.rb +11 -11
- data/lib/groupdocs/api/helpers/access_mode_helper.rb +27 -27
- data/lib/groupdocs/api/helpers/access_rights_helper.rb +55 -55
- data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -30
- data/lib/groupdocs/api/helpers/byte_flag_helper.rb +49 -49
- data/lib/groupdocs/api/helpers/credentials_helper.rb +35 -35
- data/lib/groupdocs/api/helpers/mime_helper.rb +21 -21
- data/lib/groupdocs/api/helpers/path_helper.rb +28 -28
- data/lib/groupdocs/api/helpers/rest_helper.rb +99 -99
- data/lib/groupdocs/api/helpers/signature_public_helper.rb +22 -22
- data/lib/groupdocs/api/helpers/status_helper.rb +27 -27
- data/lib/groupdocs/api/helpers/url_helper.rb +101 -101
- data/lib/groupdocs/api/request.rb +91 -91
- data/lib/groupdocs/datasource.rb +249 -249
- data/lib/groupdocs/datasource/field.rb +39 -39
- data/lib/groupdocs/document.rb +1550 -1550
- data/lib/groupdocs/document/annotation.rb +421 -421
- data/lib/groupdocs/document/annotation/reply.rb +173 -173
- data/lib/groupdocs/document/annotation/reviewer.rb +66 -66
- data/lib/groupdocs/document/change.rb +56 -56
- data/lib/groupdocs/document/field.rb +53 -53
- data/lib/groupdocs/document/metadata.rb +32 -32
- data/lib/groupdocs/document/rectangle.rb +18 -18
- data/lib/groupdocs/document/view.rb +36 -36
- data/lib/groupdocs/errors.rb +8 -8
- data/lib/groupdocs/job.rb +468 -468
- data/lib/groupdocs/questionnaire.rb +530 -530
- data/lib/groupdocs/questionnaire/collector.rb +335 -335
- data/lib/groupdocs/questionnaire/execution.rb +181 -181
- data/lib/groupdocs/questionnaire/page.rb +43 -43
- data/lib/groupdocs/questionnaire/question.rb +108 -108
- data/lib/groupdocs/questionnaire/question/answer.rb +15 -15
- data/lib/groupdocs/signature.rb +380 -380
- data/lib/groupdocs/signature/contact.rb +181 -181
- data/lib/groupdocs/signature/envelope.rb +747 -747
- data/lib/groupdocs/signature/envelope/log.rb +20 -20
- data/lib/groupdocs/signature/field.rb +286 -286
- data/lib/groupdocs/signature/field/location.rb +71 -71
- data/lib/groupdocs/signature/form.rb +804 -804
- data/lib/groupdocs/signature/list.rb +92 -92
- data/lib/groupdocs/signature/recipient.rb +79 -79
- data/lib/groupdocs/signature/role.rb +54 -54
- data/lib/groupdocs/signature/shared.rb +6 -6
- data/lib/groupdocs/signature/shared/document_methods.rb +158 -158
- data/lib/groupdocs/signature/shared/entity_fields.rb +76 -76
- data/lib/groupdocs/signature/shared/entity_methods.rb +144 -144
- data/lib/groupdocs/signature/shared/field_methods.rb +354 -354
- data/lib/groupdocs/signature/shared/recipient_methods.rb +75 -75
- data/lib/groupdocs/signature/shared/resource_methods.rb +65 -65
- data/lib/groupdocs/signature/template.rb +124 -124
- data/lib/groupdocs/storage.rb +44 -44
- data/lib/groupdocs/storage/file.rb +432 -432
- data/lib/groupdocs/storage/folder.rb +288 -288
- data/lib/groupdocs/storage/package.rb +48 -48
- data/lib/groupdocs/storage/provider.rb +32 -32
- data/lib/groupdocs/subscription.rb +323 -323
- data/lib/groupdocs/subscription/limit.rb +20 -20
- data/lib/groupdocs/user.rb +955 -930
- data/lib/groupdocs/version.rb +3 -3
- data/spec/groupdocs/api/entity_spec.rb +55 -55
- data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +21 -21
- data/spec/groupdocs/api/helpers/access_rights_helper_spec.rb +43 -43
- data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -16
- data/spec/groupdocs/api/helpers/byte_flag_helper_spec.rb +23 -23
- data/spec/groupdocs/api/helpers/credentials_helpers_spec.rb +48 -48
- data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -16
- data/spec/groupdocs/api/helpers/path_helper_spec.rb +15 -15
- data/spec/groupdocs/api/helpers/rest_helper_spec.rb +161 -161
- data/spec/groupdocs/api/helpers/signature_public_helper_spec.rb +21 -21
- data/spec/groupdocs/api/helpers/status_helper_spec.rb +22 -22
- data/spec/groupdocs/api/helpers/url_helper_spec.rb +112 -112
- data/spec/groupdocs/api/request_spec.rb +112 -112
- data/spec/groupdocs/datasource/field_spec.rb +29 -29
- data/spec/groupdocs/datasource_spec.rb +145 -145
- data/spec/groupdocs/document/annotation/reply_spec.rb +154 -154
- data/spec/groupdocs/document/annotation/reviewer_spec.rb +51 -51
- data/spec/groupdocs/document/annotation_spec.rb +234 -234
- data/spec/groupdocs/document/change_spec.rb +39 -39
- data/spec/groupdocs/document/field_spec.rb +28 -28
- data/spec/groupdocs/document/metadata_spec.rb +21 -21
- data/spec/groupdocs/document/rectangle_spec.rb +14 -14
- data/spec/groupdocs/document/view_spec.rb +33 -33
- data/spec/groupdocs/document_spec.rb +859 -859
- data/spec/groupdocs/errors_spec.rb +7 -7
- data/spec/groupdocs/job_spec.rb +323 -323
- data/spec/groupdocs/questionnaire/collector_spec.rb +197 -197
- data/spec/groupdocs/questionnaire/execution_spec.rb +162 -162
- data/spec/groupdocs/questionnaire/page_spec.rb +47 -47
- data/spec/groupdocs/questionnaire/question/answer_spec.rb +9 -9
- data/spec/groupdocs/questionnaire/question_spec.rb +75 -75
- data/spec/groupdocs/questionnaire_spec.rb +295 -295
- data/spec/groupdocs/signature/contact_spec.rb +142 -142
- data/spec/groupdocs/signature/envelope/log_spec.rb +15 -15
- data/spec/groupdocs/signature/envelope_spec.rb +384 -384
- data/spec/groupdocs/signature/field/location_spec.rb +40 -40
- data/spec/groupdocs/signature/field_spec.rb +235 -235
- data/spec/groupdocs/signature/form_spec.rb +205 -205
- data/spec/groupdocs/signature/list_spec.rb +87 -87
- data/spec/groupdocs/signature/recipient_spec.rb +26 -26
- data/spec/groupdocs/signature/role_spec.rb +47 -47
- data/spec/groupdocs/signature/template_spec.rb +80 -80
- data/spec/groupdocs/signature_spec.rb +194 -194
- data/spec/groupdocs/storage/file_spec.rb +303 -303
- data/spec/groupdocs/storage/folder_spec.rb +270 -270
- data/spec/groupdocs/storage/package_spec.rb +38 -38
- data/spec/groupdocs/storage/provider_spec.rb +21 -21
- data/spec/groupdocs/storage_spec.rb +27 -27
- data/spec/groupdocs/subscription/limit_spec.rb +16 -16
- data/spec/groupdocs/subscription_spec.rb +74 -74
- data/spec/groupdocs/user_spec.rb +257 -257
- data/spec/groupdocs_spec.rb +63 -63
- data/spec/spec_helper.rb +73 -73
- data/spec/support/json/annotation_access_set.json +11 -11
- data/spec/support/json/annotation_collaborators_get.json +16 -16
- data/spec/support/json/annotation_collaborators_set.json +16 -16
- data/spec/support/json/annotation_create.json +12 -12
- data/spec/support/json/annotation_list.json +32 -32
- data/spec/support/json/annotation_marker_move.json +10 -10
- data/spec/support/json/annotation_move.json +8 -8
- data/spec/support/json/annotation_remove.json +9 -9
- data/spec/support/json/annotation_replies_create.json +9 -9
- data/spec/support/json/annotation_replies_get.json +25 -25
- data/spec/support/json/annotation_reviewers_get.json +18 -18
- data/spec/support/json/comparison_changes.json +46 -46
- data/spec/support/json/comparison_compare.json +8 -8
- data/spec/support/json/comparison_document.json +10 -10
- data/spec/support/json/contact_add.json +12 -12
- data/spec/support/json/contacts_get.json +19 -19
- data/spec/support/json/contacts_import.json +8 -8
- data/spec/support/json/datasource_add.json +8 -8
- data/spec/support/json/datasource_get.json +22 -22
- data/spec/support/json/datasource_remove.json +8 -8
- data/spec/support/json/datasource_update.json +8 -8
- data/spec/support/json/delete_account.json +9 -9
- data/spec/support/json/document_access_info_get.json +14 -14
- data/spec/support/json/document_convert.json +8 -8
- data/spec/support/json/document_datasource.json +10 -10
- data/spec/support/json/document_fields.json +34 -34
- data/spec/support/json/document_formats.json +8 -8
- data/spec/support/json/document_metadata.json +15 -15
- data/spec/support/json/document_page_images_get.json +20 -20
- data/spec/support/json/document_questionnaire_create.json +9 -9
- data/spec/support/json/document_questionnaires.json +23 -23
- data/spec/support/json/document_sharers_remove.json +8 -8
- data/spec/support/json/document_sharers_set.json +16 -16
- data/spec/support/json/document_thumbnails.json +24 -24
- data/spec/support/json/document_views.json +32 -32
- data/spec/support/json/envelope_get.json +46 -46
- data/spec/support/json/envelope_logs.json +16 -16
- data/spec/support/json/envelope_recipient_add.json +26 -26
- data/spec/support/json/envelopes_all.json +48 -48
- data/spec/support/json/envelopes_resources.json +31 -31
- data/spec/support/json/file_compress.json +8 -8
- data/spec/support/json/file_copy.json +14 -14
- data/spec/support/json/file_delete.json +5 -5
- data/spec/support/json/file_move.json +14 -14
- data/spec/support/json/file_upload.json +8 -8
- data/spec/support/json/folder_create.json +8 -8
- data/spec/support/json/folder_delete.json +5 -5
- data/spec/support/json/folder_list.json +22 -22
- data/spec/support/json/folder_move.json +8 -8
- data/spec/support/json/folder_sharers_get.json +16 -16
- data/spec/support/json/folder_sharers_remove.json +8 -8
- data/spec/support/json/folder_sharers_set.json +16 -16
- data/spec/support/json/form_get.json +21 -21
- data/spec/support/json/forms_all.json +23 -23
- data/spec/support/json/job_add_url.json +8 -8
- data/spec/support/json/job_create.json +8 -8
- data/spec/support/json/job_documents.json +40 -40
- data/spec/support/json/job_file_add.json +8 -8
- data/spec/support/json/job_get.json +30 -30
- data/spec/support/json/job_update.json +7 -7
- data/spec/support/json/jobs_get.json +58 -58
- data/spec/support/json/list_add.json +12 -12
- data/spec/support/json/lists_get.json +19 -19
- data/spec/support/json/package_create.json +7 -7
- data/spec/support/json/questionnaire_collector.json +17 -17
- data/spec/support/json/questionnaire_collectors.json +38 -38
- data/spec/support/json/questionnaire_collectors_add.json +10 -10
- data/spec/support/json/questionnaire_create.json +10 -10
- data/spec/support/json/questionnaire_datasources.json +26 -26
- data/spec/support/json/questionnaire_execution_add.json +9 -9
- data/spec/support/json/questionnaire_execution_status_set.json +8 -8
- data/spec/support/json/questionnaire_execution_update.json +8 -8
- data/spec/support/json/questionnaire_executions.json +28 -28
- data/spec/support/json/questionnaire_get.json +17 -17
- data/spec/support/json/questionnaire_remove.json +8 -8
- data/spec/support/json/questionnaire_update.json +8 -8
- data/spec/support/json/questionnaires_get.json +40 -40
- data/spec/support/json/sign_documents.json +16 -16
- data/spec/support/json/signature_create.json +12 -12
- data/spec/support/json/signature_field_add.json +25 -25
- data/spec/support/json/signature_fields_get.json +27 -27
- data/spec/support/json/signature_roles_get.json +17 -17
- data/spec/support/json/signatures_get.json +19 -19
- data/spec/support/json/storage_info.json +10 -10
- data/spec/support/json/subscription_plan_get.json +9 -9
- data/spec/support/json/subscription_plans_get.json +17 -17
- data/spec/support/json/template_get.json +35 -35
- data/spec/support/json/template_get_documents.json +15 -15
- data/spec/support/json/template_get_recipients.json +20 -20
- data/spec/support/json/templates_all.json +37 -37
- data/spec/support/json/templates_get.json +21 -21
- data/spec/support/json/update_account.json +10 -10
- data/spec/support/json/user_area.json +67 -67
- data/spec/support/json/user_embed_key.json +38 -38
- data/spec/support/json/user_get_embed_key.json +67 -67
- data/spec/support/json/user_login.json +67 -67
- data/spec/support/json/user_profile_get.json +24 -24
- data/spec/support/json/user_providers.json +31 -31
- data/spec/support/json/user_roles.json +25 -25
- data/spec/support/json/user_users_get.json +27 -27
- data/spec/support/shared_examples/api/entity.rb +39 -39
- data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +11 -11
- data/spec/support/shared_examples/api/helpers/status_helper.rb +11 -11
- data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -68
- data/spec/support/shared_examples/signature/shared/entity_fields.rb +56 -56
- data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -116
- data/spec/support/shared_examples/signature/shared/field_methods.rb +220 -220
- data/spec/support/shared_examples/signature/shared/recipient_methods.rb +46 -46
- data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -46
- metadata +35 -55
@@ -1,28 +1,28 @@
|
|
1
|
-
module GroupDocs
|
2
|
-
module Api
|
3
|
-
module Helpers
|
4
|
-
module Path
|
5
|
-
|
6
|
-
#
|
7
|
-
# Make helper methods accessible as class methods as well
|
8
|
-
#
|
9
|
-
def self.included(klass)
|
10
|
-
klass.extend self
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
#
|
16
|
-
# Prepares path.
|
17
|
-
# @param [String] path
|
18
|
-
# @return [String]
|
19
|
-
# @api private
|
20
|
-
#
|
21
|
-
def prepare_path(path)
|
22
|
-
path.sub(%r(^/), '').gsub(%r(//+), '/')
|
23
|
-
end
|
24
|
-
|
25
|
-
end # Path
|
26
|
-
end # Helpers
|
27
|
-
end # Api
|
28
|
-
end # GroupDocs
|
1
|
+
module GroupDocs
|
2
|
+
module Api
|
3
|
+
module Helpers
|
4
|
+
module Path
|
5
|
+
|
6
|
+
#
|
7
|
+
# Make helper methods accessible as class methods as well
|
8
|
+
#
|
9
|
+
def self.included(klass)
|
10
|
+
klass.extend self
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
#
|
16
|
+
# Prepares path.
|
17
|
+
# @param [String] path
|
18
|
+
# @return [String]
|
19
|
+
# @api private
|
20
|
+
#
|
21
|
+
def prepare_path(path)
|
22
|
+
path.sub(%r(^/), '').gsub(%r(//+), '/')
|
23
|
+
end
|
24
|
+
|
25
|
+
end # Path
|
26
|
+
end # Helpers
|
27
|
+
end # Api
|
28
|
+
end # GroupDocs
|
@@ -1,99 +1,99 @@
|
|
1
|
-
require 'json'
|
2
|
-
require 'rest-client'
|
3
|
-
|
4
|
-
module GroupDocs
|
5
|
-
module Api
|
6
|
-
module Helpers
|
7
|
-
module REST
|
8
|
-
|
9
|
-
DEFAULT_HEADERS = {
|
10
|
-
:accept => 'application/json',
|
11
|
-
:content_length => 0,
|
12
|
-
:groupdocs_referrer => "ruby/#{VERSION}"
|
13
|
-
}
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
#
|
18
|
-
# Prepares headers, method and payload for request.
|
19
|
-
#
|
20
|
-
# @api private
|
21
|
-
#
|
22
|
-
def prepare_request
|
23
|
-
if options[:headers].is_a?(Hash)
|
24
|
-
options[:headers].merge!(DEFAULT_HEADERS)
|
25
|
-
else
|
26
|
-
options[:headers] = DEFAULT_HEADERS.dup
|
27
|
-
end
|
28
|
-
|
29
|
-
options[:method] = options[:method].to_s.downcase.to_sym
|
30
|
-
|
31
|
-
if options[:request_body] && !options[:request_body].is_a?(Object::File)
|
32
|
-
unless options[:plain]
|
33
|
-
options[:request_body] = options[:request_body].to_json
|
34
|
-
options[:headers][:content_type]= 'application/json'
|
35
|
-
end
|
36
|
-
options[:headers][:content_length] = options[:request_body].length
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
#
|
41
|
-
# Changed in release 1.5.8
|
42
|
-
#
|
43
|
-
# Sends request to API server.
|
44
|
-
#
|
45
|
-
# @api private
|
46
|
-
#
|
47
|
-
def send_request
|
48
|
-
|
49
|
-
self.response = case options[:method]
|
50
|
-
when :get, :download
|
51
|
-
resource[options[:path]].get(options[:headers])
|
52
|
-
when :post
|
53
|
-
resource[options[:path]].post(options[:request_body], options[:headers])
|
54
|
-
when :put
|
55
|
-
resource[options[:path]].put(options[:request_body], options[:headers])
|
56
|
-
when :delete
|
57
|
-
if options[:request_body]
|
58
|
-
url = GroupDocs.api_server + options[:path]
|
59
|
-
RestClient::Request.execute(options.merge(
|
60
|
-
:method => :delete,
|
61
|
-
:url => url,
|
62
|
-
:payload => options[:request_body],
|
63
|
-
:headers => options[:headers]))
|
64
|
-
else
|
65
|
-
resource[options[:path]].delete(options[:headers])
|
66
|
-
end
|
67
|
-
else
|
68
|
-
raise UnsupportedMethodError, "Unsupported HTTP method: #{options[:method].inspect}"
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
#
|
73
|
-
# Parses response from API server.
|
74
|
-
#
|
75
|
-
# @api private
|
76
|
-
#
|
77
|
-
def parse_response
|
78
|
-
# for DOWNLOAD requests, just return response
|
79
|
-
if options[:method] == :download
|
80
|
-
response
|
81
|
-
# for all other requests, parse JSON
|
82
|
-
else
|
83
|
-
json = JSON.parse(response, :symbolize_names => true)
|
84
|
-
json[:status] == 'Ok' ? json[:result] : raise_bad_request_error(json)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
#
|
89
|
-
# @raise [GroupDocs::BadResponseError]
|
90
|
-
# @api private
|
91
|
-
#
|
92
|
-
def raise_bad_request_error(json)
|
93
|
-
raise BadResponseError, json[:error_message]
|
94
|
-
end
|
95
|
-
|
96
|
-
end # REST
|
97
|
-
end # Helpers
|
98
|
-
end # Api
|
99
|
-
end # GroupDocs
|
1
|
+
require 'json'
|
2
|
+
require 'rest-client'
|
3
|
+
|
4
|
+
module GroupDocs
|
5
|
+
module Api
|
6
|
+
module Helpers
|
7
|
+
module REST
|
8
|
+
|
9
|
+
DEFAULT_HEADERS = {
|
10
|
+
:accept => 'application/json',
|
11
|
+
:content_length => 0,
|
12
|
+
:groupdocs_referrer => "ruby/#{VERSION}"
|
13
|
+
}
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
#
|
18
|
+
# Prepares headers, method and payload for request.
|
19
|
+
#
|
20
|
+
# @api private
|
21
|
+
#
|
22
|
+
def prepare_request
|
23
|
+
if options[:headers].is_a?(Hash)
|
24
|
+
options[:headers].merge!(DEFAULT_HEADERS)
|
25
|
+
else
|
26
|
+
options[:headers] = DEFAULT_HEADERS.dup
|
27
|
+
end
|
28
|
+
|
29
|
+
options[:method] = options[:method].to_s.downcase.to_sym
|
30
|
+
|
31
|
+
if options[:request_body] && !options[:request_body].is_a?(Object::File)
|
32
|
+
unless options[:plain]
|
33
|
+
options[:request_body] = options[:request_body].to_json
|
34
|
+
options[:headers][:content_type]= 'application/json'
|
35
|
+
end
|
36
|
+
options[:headers][:content_length] = options[:request_body].length
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
#
|
41
|
+
# Changed in release 1.5.8
|
42
|
+
#
|
43
|
+
# Sends request to API server.
|
44
|
+
#
|
45
|
+
# @api private
|
46
|
+
#
|
47
|
+
def send_request
|
48
|
+
|
49
|
+
self.response = case options[:method]
|
50
|
+
when :get, :download
|
51
|
+
resource[options[:path]].get(options[:headers])
|
52
|
+
when :post
|
53
|
+
resource[options[:path]].post(options[:request_body], options[:headers])
|
54
|
+
when :put
|
55
|
+
resource[options[:path]].put(options[:request_body], options[:headers])
|
56
|
+
when :delete
|
57
|
+
if options[:request_body]
|
58
|
+
url = GroupDocs.api_server + options[:path]
|
59
|
+
RestClient::Request.execute(options.merge(
|
60
|
+
:method => :delete,
|
61
|
+
:url => url,
|
62
|
+
:payload => options[:request_body],
|
63
|
+
:headers => options[:headers]))
|
64
|
+
else
|
65
|
+
resource[options[:path]].delete(options[:headers])
|
66
|
+
end
|
67
|
+
else
|
68
|
+
raise UnsupportedMethodError, "Unsupported HTTP method: #{options[:method].inspect}"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
#
|
73
|
+
# Parses response from API server.
|
74
|
+
#
|
75
|
+
# @api private
|
76
|
+
#
|
77
|
+
def parse_response
|
78
|
+
# for DOWNLOAD requests, just return response
|
79
|
+
if options[:method] == :download
|
80
|
+
response
|
81
|
+
# for all other requests, parse JSON
|
82
|
+
else
|
83
|
+
json = JSON.parse(response, :symbolize_names => true)
|
84
|
+
json[:status] == 'Ok' ? json[:result] : raise_bad_request_error(json)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
#
|
89
|
+
# @raise [GroupDocs::BadResponseError]
|
90
|
+
# @api private
|
91
|
+
#
|
92
|
+
def raise_bad_request_error(json)
|
93
|
+
raise BadResponseError, json[:error_message]
|
94
|
+
end
|
95
|
+
|
96
|
+
end # REST
|
97
|
+
end # Helpers
|
98
|
+
end # Api
|
99
|
+
end # GroupDocs
|
@@ -1,22 +1,22 @@
|
|
1
|
-
module GroupDocs
|
2
|
-
module Api
|
3
|
-
module Helpers
|
4
|
-
module SignaturePublic
|
5
|
-
|
6
|
-
private
|
7
|
-
|
8
|
-
#
|
9
|
-
# Returns corresponding URI fragment for (un)public call.
|
10
|
-
#
|
11
|
-
# @param [Boolean, nil] public_flag
|
12
|
-
# @return [String]
|
13
|
-
# @api private
|
14
|
-
#
|
15
|
-
def client_id(public_flag)
|
16
|
-
!!public_flag ? 'public' : '{{client_id}}'
|
17
|
-
end
|
18
|
-
|
19
|
-
end # SignaturePublic
|
20
|
-
end # Helpers
|
21
|
-
end # Api
|
22
|
-
end # GroupDocs
|
1
|
+
module GroupDocs
|
2
|
+
module Api
|
3
|
+
module Helpers
|
4
|
+
module SignaturePublic
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
#
|
9
|
+
# Returns corresponding URI fragment for (un)public call.
|
10
|
+
#
|
11
|
+
# @param [Boolean, nil] public_flag
|
12
|
+
# @return [String]
|
13
|
+
# @api private
|
14
|
+
#
|
15
|
+
def client_id(public_flag)
|
16
|
+
!!public_flag ? 'public' : '{{client_id}}'
|
17
|
+
end
|
18
|
+
|
19
|
+
end # SignaturePublic
|
20
|
+
end # Helpers
|
21
|
+
end # Api
|
22
|
+
end # GroupDocs
|
@@ -1,27 +1,27 @@
|
|
1
|
-
module GroupDocs
|
2
|
-
module Api
|
3
|
-
module Helpers
|
4
|
-
module Status
|
5
|
-
|
6
|
-
private
|
7
|
-
|
8
|
-
#
|
9
|
-
# Converts status from/to human-readable format.
|
10
|
-
#
|
11
|
-
# @param [String, Symbol] status
|
12
|
-
# @return [Symbol, String]
|
13
|
-
# @raise [ArgumentError] if argument is not symbol/string
|
14
|
-
# @api private
|
15
|
-
#
|
16
|
-
def parse_status(status)
|
17
|
-
case status
|
18
|
-
when Symbol then status.to_s.camelize
|
19
|
-
when String then status.underscore.to_sym
|
20
|
-
else raise ArgumentError, "Expected string/symbol, received: #{status.class}"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
end # Status
|
25
|
-
end # Helpers
|
26
|
-
end # Api
|
27
|
-
end # GroupDocs
|
1
|
+
module GroupDocs
|
2
|
+
module Api
|
3
|
+
module Helpers
|
4
|
+
module Status
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
#
|
9
|
+
# Converts status from/to human-readable format.
|
10
|
+
#
|
11
|
+
# @param [String, Symbol] status
|
12
|
+
# @return [Symbol, String]
|
13
|
+
# @raise [ArgumentError] if argument is not symbol/string
|
14
|
+
# @api private
|
15
|
+
#
|
16
|
+
def parse_status(status)
|
17
|
+
case status
|
18
|
+
when Symbol then status.to_s.camelize
|
19
|
+
when String then status.underscore.to_sym
|
20
|
+
else raise ArgumentError, "Expected string/symbol, received: #{status.class}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end # Status
|
25
|
+
end # Helpers
|
26
|
+
end # Api
|
27
|
+
end # GroupDocs
|
@@ -1,101 +1,101 @@
|
|
1
|
-
require 'base64'
|
2
|
-
require 'uri'
|
3
|
-
require 'cgi'
|
4
|
-
|
5
|
-
module GroupDocs
|
6
|
-
module Api
|
7
|
-
module Helpers
|
8
|
-
module URL
|
9
|
-
|
10
|
-
#
|
11
|
-
# Appends path with parameters.
|
12
|
-
#
|
13
|
-
# @param [Hash] params
|
14
|
-
#
|
15
|
-
def add_params(params)
|
16
|
-
params.each do |param, value|
|
17
|
-
value = value.join(',') if value.is_a?(Array)
|
18
|
-
options[:path] << "#{separator}#{param}=#{value}"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
#
|
25
|
-
# Normalizes path replacing two or more slashes with one.
|
26
|
-
#
|
27
|
-
# @api private
|
28
|
-
#
|
29
|
-
def normalize_path
|
30
|
-
options[:path].gsub!(%r(//+), '/')
|
31
|
-
end
|
32
|
-
|
33
|
-
#
|
34
|
-
# URL encodes path.
|
35
|
-
#
|
36
|
-
# @api private
|
37
|
-
#
|
38
|
-
def url_encode_path
|
39
|
-
options[:path] = URI.escape(options[:path])
|
40
|
-
# handle special symbols correctly
|
41
|
-
options[:path].gsub!('[', '%5B')
|
42
|
-
options[:path].gsub!(']', '%5D')
|
43
|
-
options[:path].gsub!('+', '%2B')
|
44
|
-
end
|
45
|
-
|
46
|
-
#
|
47
|
-
# Parses path replacing {{client_id}} with real one.
|
48
|
-
#
|
49
|
-
# @api private
|
50
|
-
#
|
51
|
-
def replace_client_id
|
52
|
-
options[:path].sub!(/\{\{client_id\}\}/, client_id)
|
53
|
-
end
|
54
|
-
|
55
|
-
|
56
|
-
#
|
57
|
-
# Adds signature to path.
|
58
|
-
#
|
59
|
-
# @api private
|
60
|
-
#
|
61
|
-
def sign_url
|
62
|
-
# calculate a hash of the path with private key
|
63
|
-
hash = OpenSSL::Digest.new('sha1') # Changed in release 1.5.9
|
64
|
-
hash = OpenSSL::HMAC.digest(hash, private_key, options[:path])
|
65
|
-
# convert hash to base64
|
66
|
-
hash = Base64.strict_encode64(hash)
|
67
|
-
# remove trailing '='
|
68
|
-
hash.gsub!(/=*$/, '')
|
69
|
-
# URL encode hash
|
70
|
-
hash = CGI.escape(hash)
|
71
|
-
# covert all hexademical characters to upper case
|
72
|
-
hash.gsub!(/(%[A-Fa-f0-9]{1,2})/) { |group| group.upcase }
|
73
|
-
|
74
|
-
options[:path] << "#{separator}signature=#{hash}"
|
75
|
-
end
|
76
|
-
|
77
|
-
#
|
78
|
-
# Returns separator for GET parameters.
|
79
|
-
#
|
80
|
-
# @return [String] Either ? or &
|
81
|
-
# @api private
|
82
|
-
#
|
83
|
-
def separator
|
84
|
-
options[:path].include?('?') ? '&' : '?'
|
85
|
-
end
|
86
|
-
|
87
|
-
#
|
88
|
-
# Prepends path with version number if it's set.
|
89
|
-
#
|
90
|
-
# @api private
|
91
|
-
#
|
92
|
-
def prepend_version
|
93
|
-
if GroupDocs.api_version
|
94
|
-
options[:path] = "/v#{GroupDocs.api_version}#{options[:path]}"
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
end # URL
|
99
|
-
end # Helpers
|
100
|
-
end # Api
|
101
|
-
end # GroupDocs
|
1
|
+
require 'base64'
|
2
|
+
require 'uri'
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module GroupDocs
|
6
|
+
module Api
|
7
|
+
module Helpers
|
8
|
+
module URL
|
9
|
+
|
10
|
+
#
|
11
|
+
# Appends path with parameters.
|
12
|
+
#
|
13
|
+
# @param [Hash] params
|
14
|
+
#
|
15
|
+
def add_params(params)
|
16
|
+
params.each do |param, value|
|
17
|
+
value = value.join(',') if value.is_a?(Array)
|
18
|
+
options[:path] << "#{separator}#{param}=#{value}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
#
|
25
|
+
# Normalizes path replacing two or more slashes with one.
|
26
|
+
#
|
27
|
+
# @api private
|
28
|
+
#
|
29
|
+
def normalize_path
|
30
|
+
options[:path].gsub!(%r(//+), '/')
|
31
|
+
end
|
32
|
+
|
33
|
+
#
|
34
|
+
# URL encodes path.
|
35
|
+
#
|
36
|
+
# @api private
|
37
|
+
#
|
38
|
+
def url_encode_path
|
39
|
+
options[:path] = URI.escape(options[:path])
|
40
|
+
# handle special symbols correctly
|
41
|
+
options[:path].gsub!('[', '%5B')
|
42
|
+
options[:path].gsub!(']', '%5D')
|
43
|
+
options[:path].gsub!('+', '%2B')
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
# Parses path replacing {{client_id}} with real one.
|
48
|
+
#
|
49
|
+
# @api private
|
50
|
+
#
|
51
|
+
def replace_client_id
|
52
|
+
options[:path].sub!(/\{\{client_id\}\}/, client_id)
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
#
|
57
|
+
# Adds signature to path.
|
58
|
+
#
|
59
|
+
# @api private
|
60
|
+
#
|
61
|
+
def sign_url
|
62
|
+
# calculate a hash of the path with private key
|
63
|
+
hash = OpenSSL::Digest.new('sha1') # Changed in release 1.5.9
|
64
|
+
hash = OpenSSL::HMAC.digest(hash, private_key, options[:path])
|
65
|
+
# convert hash to base64
|
66
|
+
hash = Base64.strict_encode64(hash)
|
67
|
+
# remove trailing '='
|
68
|
+
hash.gsub!(/=*$/, '')
|
69
|
+
# URL encode hash
|
70
|
+
hash = CGI.escape(hash)
|
71
|
+
# covert all hexademical characters to upper case
|
72
|
+
hash.gsub!(/(%[A-Fa-f0-9]{1,2})/) { |group| group.upcase }
|
73
|
+
|
74
|
+
options[:path] << "#{separator}signature=#{hash}"
|
75
|
+
end
|
76
|
+
|
77
|
+
#
|
78
|
+
# Returns separator for GET parameters.
|
79
|
+
#
|
80
|
+
# @return [String] Either ? or &
|
81
|
+
# @api private
|
82
|
+
#
|
83
|
+
def separator
|
84
|
+
options[:path].include?('?') ? '&' : '?'
|
85
|
+
end
|
86
|
+
|
87
|
+
#
|
88
|
+
# Prepends path with version number if it's set.
|
89
|
+
#
|
90
|
+
# @api private
|
91
|
+
#
|
92
|
+
def prepend_version
|
93
|
+
if GroupDocs.api_version
|
94
|
+
options[:path] = "/v#{GroupDocs.api_version}#{options[:path]}"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end # URL
|
99
|
+
end # Helpers
|
100
|
+
end # Api
|
101
|
+
end # GroupDocs
|