Class: GroupDocs::Document
- Inherits:
-
Api::Entity
- Object
- Api::Entity
- GroupDocs::Document
- Extended by:
- Api::Helpers::MIME
- Defined in:
- lib/groupdocs/document.rb
Defined Under Namespace
Classes: Annotation, Change, Field, MetaData, Rectangle, TemplateEditorFieldOption, TemplateEditorFieldStyle, TemplateEditorFields, View
Constant Summary collapse
- ACCESS_MODES =
{ :private => 0, :restricted => 1, :public => 2, :inherited => 254, :denied => 255, }
Constants included from Api::Helpers::AccessRights
Api::Helpers::AccessRights::ACCESS_RIGHTS
Instance Attribute Summary collapse
- #dependent_questionnaires_count ⇒ Object
-
#documentDescription ⇒ Object
added in release 2.0.0.
- #field_count ⇒ Object
-
#fieldType ⇒ Object
added in release 1.6.0.
- #file ⇒ Object
- #order ⇒ Object
-
#output_formats ⇒ Array<Symbol>
Returns output formats in human-readable format.
- #outputs ⇒ Object
-
#process_date ⇒ Time
Converts timestamp which is return by API server to Time object.
-
#status ⇒ Symbol
Converts status to human-readable format.
- #upload_time ⇒ Object
Class Method Summary collapse
-
.metadata!(path, access = {}) ⇒ Array<GroupDocs::Document::View>
Cnanged in release 2.0.0.
-
.public_fields!(access = {}) ⇒ Array
Changed in release 1.5.8.
-
.sign_documents!(documents, signatures, options = {}, access = {}) ⇒ Object
Signs given documents with signatures.
-
.templates!(options = {}, access = {}) ⇒ Array<GroupDocs::Document>
Returns an array of all templates (documents in “Templates” directory).
-
.views!(options = {}, access = {}) ⇒ Array<GroupDocs::Document::View>
Returns an array of views for all documents.
Instance Method Summary collapse
-
#access_mode!(access = {}) ⇒ Symbol
Returns access mode of document.
-
#access_mode_set!(mode, access = {}) ⇒ Symbol
(also: #access_mode=)
Sets access mode of document.
-
#add_collaborator!(collaborator, access = {}) ⇒ Object
Adds document annotations collaborator.
-
#add_questionnaire!(questionnaire, access = {}) ⇒ Object
Adds questionnaire to document.
-
#add_questionnaire_template!(fields, access = {}) ⇒ Object
added in release 1.8.0.
-
#annotations!(access = {}) ⇒ Array<GroupDocs::Document::Annotation>
Returns an array of annotations.
-
#changes!(access = {}) ⇒ Object
Returns an array of changes in document.
-
#collaborators!(access = {}) ⇒ Array<GroupDocs::User>
Returns document annotations collaborators.
-
#compare!(document, callback, access = {}) ⇒ GroupDocs::Job
Changed in release 1.5.8 Schedules a job for comparing document with given.
-
#content!(content_type, access = {}) ⇒ String
Returns document content.
-
#convert!(format, options = {}, access = {}) ⇒ GroupDocs::Job
Converts document to given format.
-
#create_questionnaire!(questionnaire, access = {}) ⇒ GroupDocs::Questionnaire
Creates questionnaire and adds it to document.
-
#datasource!(datasource, options = {}, access = {}) ⇒ GroupDocs::Job
Creates new job to merge datasource into document.
-
#datasource_fields!(datasource, options = {}, access = {}) ⇒ GroupDocs::Job
Creates new job to merge datasource fields into document.
-
#delete_questionnaire_template!(fields, access = {}) ⇒ Object
added in release 1.8.0.
-
#details!(access = {}) ⇒ Hash
Changed in release 1.5.8 Returns document details.
-
#document_status!(job_guid, access = {}) ⇒ Object
Get sign documents status.
-
#download!(path, options = {}, access = {}) ⇒ Object
Changed in release 1.5.8 Download comparison result file.
-
#editlock!(access = {}) ⇒ Object
Returns editing metadata.
-
#editlock_clear!(options = {}, access = {}) ⇒ Integer
Removes edit lock for a document and replaces the document with its edited copy.
-
#editor_fields!(access = {}) ⇒ Object
added in release 1.7.0.
-
#fields!(access = {}) ⇒ Array<GroupDocs::Document::Field>
Returns an array of document fields.
-
#formats!(access = {}) ⇒ Array<Symbol>
Returns array of file formats document can be converted to.
-
#hyperlinks!(access = {}) ⇒ Object
added in release 1.5.8.
-
#initialize(options = {}, &blk) ⇒ Document
constructor
Creates new GroupDocs::Document.
-
#metadata!(access = {}) ⇒ GroupDocs::Document::MetaData
Cnanged in release 2.0.0.
- #method_missing(method, *args, &blk) ⇒ Object
-
#page_image!(path, name, page_number, dimension, options = {}, access = {}) ⇒ Object
Returns a stream of bytes representing a particular document page image.
-
#page_images!(width, height, options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to images representing document pages.
-
#password_set!(password, access = {}) ⇒ Array<GroupDocs::User>
Sets document password.
-
#public_sign_document!(options = {}, access = {}) ⇒ Array
Changed in release 1.5.8.
-
#questionnaire_template!(fields, access = {}) ⇒ Object
added in release 1.7.0.
-
#questionnaires!(access = {}) ⇒ Array<GroupDocs::Questionnaire>
Returns an array of questionnaires.
-
#remove_collaborators!(reviewerId, access = {}) ⇒ Object
Delete document reviewer.
-
#remove_questionnaire!(questionnaire, access = {}) ⇒ Object
Detaches questionnaire from document.
- #respond_to?(method) ⇒ Boolean
-
#set_collaborators!(emails, version = 1, access = {}) ⇒ Array<GroupDocs::User>
Sets document annotations collaborators to given emails.
-
#set_reviewers!(reviewers, access = {}) ⇒ Object
Sets reviewers for document.
-
#set_session_callback!(url, access = {}) ⇒ Object
Sets session callback URL.
-
#set_shared_link_access_rights!(rights, access = {}) ⇒ Array<Symbol>
Sets access rights for shared link.
-
#shared_documents!(sharers_types, options = {}, access = {}) ⇒ Array<GroupDocs::User>
Returns an array of users a document is shared with.
-
#shared_link_access_rights!(access = {}) ⇒ Array<Symbol>
Returns an array of access rights for shared link.
-
#sharers!(access = {}) ⇒ Array<GroupDocs::User>
Returns an array of users a document is shared with.
-
#sharers_clear!(access = {}) ⇒ Object
Clears sharers list.
-
#sharers_set!(emails, access = {}) ⇒ Array<GroupDocs::User>
Sets document sharers to given emails.
-
#tags!(access = {}) ⇒ Array<String>
Returns tags assigned to the document.
-
#tags_clear!(access = {}) ⇒ String
Removes tags assigned to the document.
-
#tags_set!(access = {}) ⇒ String
Assign tags to the document.
-
#thumbnails!(options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to images representing document pages thumbnails.
-
#update_changes!(changes, access = {}) ⇒ GroupDocs::Change
Schedules a job for comparing document with given.
-
#update_questionnaire_template!(fields, access = {}) ⇒ Object
added in release 1.8.0.
-
#user_status_set!(status, access = {}) ⇒ String
Sets document user status.
Methods included from Api::Helpers::ByteFlag
#array_from_byte, #byte_from_array
Methods inherited from Api::Entity
Methods included from Api::Helpers::Accessor
Constructor Details
#initialize(options = {}, &blk) ⇒ Document
Creates new GroupDocs::Document.
You should avoid creating documents directly. Instead, use #to_document instance method of GroupDocs::Storage::File.
317 318 319 320 321 |
# File 'lib/groupdocs/document.rb', line 317 def initialize( = {}, &blk) super(, &blk) file.is_a?(GroupDocs::Storage::File) or raise ArgumentError, "You have to pass GroupDocs::Storage::File object: #{file.inspect}." end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &blk) ⇒ Object
1294 1295 1296 |
# File 'lib/groupdocs/document.rb', line 1294 def method_missing(method, *args, &blk) file.respond_to?(method) ? file.send(method, *args, &blk) : super end |
Instance Attribute Details
#dependent_questionnaires_count ⇒ Object
218 219 220 |
# File 'lib/groupdocs/document.rb', line 218 def dependent_questionnaires_count @dependent_questionnaires_count end |
#documentDescription ⇒ Object
added in release 2.0.0
224 225 226 |
# File 'lib/groupdocs/document.rb', line 224 def documentDescription @documentDescription end |
#field_count ⇒ Object
212 213 214 |
# File 'lib/groupdocs/document.rb', line 212 def field_count @field_count end |
#fieldType ⇒ Object
added in release 1.6.0
216 217 218 |
# File 'lib/groupdocs/document.rb', line 216 def fieldType @fieldType end |
#file ⇒ Object
200 201 202 |
# File 'lib/groupdocs/document.rb', line 200 def file @file end |
#order ⇒ Object
210 211 212 |
# File 'lib/groupdocs/document.rb', line 210 def order @order end |
#output_formats ⇒ Array<Symbol>
Returns output formats in human-readable format.
206 207 208 |
# File 'lib/groupdocs/document.rb', line 206 def output_formats @output_formats end |
#outputs ⇒ Object
204 205 206 |
# File 'lib/groupdocs/document.rb', line 204 def outputs @outputs end |
#process_date ⇒ Time
Converts timestamp which is return by API server to Time object.
202 203 204 |
# File 'lib/groupdocs/document.rb', line 202 def process_date @process_date end |
#status ⇒ Symbol
Converts status to human-readable format.
208 209 210 |
# File 'lib/groupdocs/document.rb', line 208 def status @status end |
#upload_time ⇒ Object
220 221 222 |
# File 'lib/groupdocs/document.rb', line 220 def upload_time @upload_time end |
Class Method Details
.metadata!(path, access = {}) ⇒ Array<GroupDocs::Document::View>
Cnanged in release 2.0.0
Returns a document metadata by given path.
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
# File 'lib/groupdocs/document.rb', line 179 def self.(path, access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{path}" end.execute! Document::MetaData.new do || .id = json[:id] .guid = json[:guid] .page_count = json[:page_count] .views_count = json[:views_count] .type = json[:type] .url = json[:url] if json[:last_view] .last_view = json[:last_view] end end end |
.public_fields!(access = {}) ⇒ Array
Changed in release 1.5.8
Get document fields
1368 1369 1370 1371 1372 1373 1374 |
# File 'lib/groupdocs/document.rb', line 1368 def self.public_fields!(access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/signature/public/documents/#{file.guid}/fields" end.execute! end |
.sign_documents!(documents, signatures, options = {}, access = {}) ⇒ Object
Signs given documents with signatures.
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/groupdocs/document.rb', line 101 def self.sign_documents!(documents, signatures, = {}, access = {}) documents.each do |document| document.is_a?(Document) or raise ArgumentError, "Each document should be GroupDocs::Document object, received: #{document.inspect}" document.file.name or raise ArgumentError, "Each document file should have name, received: #{document.file.name.inspect}" document.file.local_path or raise ArgumentError, "Each document file should have local_path, received: #{document.file.local_path.inspect}" end signatures.each do |signature| signature.is_a?(Signature) or raise ArgumentError, "Each signature should be GroupDocs::Signature object, received: #{signature.inspect}" signature.name or raise ArgumentError, "Each signature should have name, received: #{signature.name.inspect}" signature.image_path or raise ArgumentError, "Each signature should have image_path, received: #{signature.image_path.inspect}" signature.position or raise ArgumentError, "Each signature should have position, received: #{signature.position.inspect}" end documents_to_sign = [] documents.map(&:file).each do |file| document = { :name => file.name } contents = File.open(file.local_path, 'rb').read contents = Base64.strict_encode64(contents) document.merge!(:data => "data:#{mime_type(file.local_path)};base64,#{contents}") documents_to_sign << document end signers = [] signatures.each do |signature| contents = File.open(signature.image_path, 'rb').read contents = Base64.strict_encode64(contents) signer = { :name => signature.name, :data => "data:#{mime_type(signature.image_path)};base64,#{contents}" } signer.merge!(signature.position) # place signature on is not implemented yet signer.merge!(:placeSignatureOn => nil) signer.merge!(:email => signature.email) signers << signer end json = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = '/signature/{{client_id}}/sign' request[:request_body] = { :documents => documents_to_sign, :signers => signers } end.execute! json[:jobId] end |
.templates!(options = {}, access = {}) ⇒ Array<GroupDocs::Document>
Returns an array of all templates (documents in “Templates” directory).
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/groupdocs/document.rb', line 62 def self.templates!( = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = '/merge/{{client_id}}/templates' end api.add_params() json = api.execute! json[:templates].map do |template| template.merge!(:file => Storage::File.new(template)) Document.new(template) end end |
.views!(options = {}, access = {}) ⇒ Array<GroupDocs::Document::View>
Returns an array of views for all documents.
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/groupdocs/document.rb', line 37 def self.views!( = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = '/doc/{{client_id}}/views' end api.add_params() json = api.execute! json[:views].map do |view| Document::View.new(view) end end |
Instance Method Details
#access_mode!(access = {}) ⇒ Symbol
Returns access mode of document.
540 541 542 543 544 545 546 547 548 |
# File 'lib/groupdocs/document.rb', line 540 def access_mode!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/accessinfo" end.execute! parse_access_mode(json[:access]) end |
#access_mode_set!(mode, access = {}) ⇒ Symbol Also known as: access_mode=
Sets access mode of document.
559 560 561 562 563 564 565 566 567 568 569 |
# File 'lib/groupdocs/document.rb', line 559 def access_mode_set!(mode, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/doc/{{client_id}}/files/#{file.id}/accessinfo" end api.add_params(:mode => ACCESS_MODES[mode]) json = api.execute! parse_access_mode(json[:access]) end |
#add_collaborator!(collaborator, access = {}) ⇒ Object
Adds document annotations collaborator.
1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 |
# File 'lib/groupdocs/document.rb', line 1178 def add_collaborator!(collaborator, access = {}) collaborator.is_a?(GroupDocs::User) or raise ArgumentError, "Collaborator should be GroupDocs::User object, received: #{collaborator.inspect}" Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/ant/{{client_id}}/files/#{file.guid}/collaborators" request[:request_body] = collaborator.to_hash end.execute! end |
#add_questionnaire!(questionnaire, access = {}) ⇒ Object
Adds questionnaire to document.
899 900 901 902 903 904 905 906 907 908 |
# File 'lib/groupdocs/document.rb', line 899 def add_questionnaire!(questionnaire, access = {}) questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError, "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}" Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires/#{questionnaire.id}" end.execute! end |
#add_questionnaire_template!(fields, access = {}) ⇒ Object
added in release 1.8.0
Add template editor fields to the specific document
@example
file = GroupDocs::Storage::File.new(=> ‘3be4e06494caed131d912c75e17d5f22592e3044032e0f81b35f13a8c9fefb49’).to_document field = GroupDocs::Document::TemplateEditorFields.new field.name = ‘test’ field.fieldtype = ‘TextBox’ field.page = 1 file.add_questionnaire_template!( )
1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 |
# File 'lib/groupdocs/document.rb', line 1451 def add_questionnaire_template!(fields, access = {}) fields.each do |field| field.is_a?(GroupDocs::Document::TemplateEditorFields) or raise ArgumentError, "Fields should be List GroupDocs::Document::TemplateEditorFields objects, received: #{fields.inspect}" end json = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/merge/{{client_id}}/files/#{file.guid}/templates/add" request[:request_body] = fields end.execute! json[:templateFields].map do |field| Document::Field.new(field) end end |
#annotations!(access = {}) ⇒ Array<GroupDocs::Document::Annotation>
Returns an array of annotations.
965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 |
# File 'lib/groupdocs/document.rb', line 965 def annotations!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/ant/{{client_id}}/files/#{file.guid}/annotations" end.execute! if json[:annotations] json[:annotations].map do |annotation| annotation.merge!(:document => self) Document::Annotation.new(annotation) end else [] end end |
#changes!(access = {}) ⇒ Object
Returns an array of changes in document.
1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 |
# File 'lib/groupdocs/document.rb', line 1074 def changes!(access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/comparison/public/#{file.guid}/changes" end json = api.execute! json[:changes].map do |change| Document::Change.new(change) end end |
#collaborators!(access = {}) ⇒ Array<GroupDocs::User>
Returns document annotations collaborators.
1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 |
# File 'lib/groupdocs/document.rb', line 1135 def collaborators!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/ant/{{client_id}}/files/#{file.guid}/collaborators" end.execute! json[:collaborators].map do |collaborator| User.new(collaborator) end end |
#compare!(document, callback, access = {}) ⇒ GroupDocs::Job
Changed in release 1.5.8 Schedules a job for comparing document with given.
1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 |
# File 'lib/groupdocs/document.rb', line 1013 def compare!(document, callback, access = {}) document.is_a?(GroupDocs::Document) or raise ArgumentError, "Document should be GroupDocs::Document object, received: #{document.inspect}" api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/comparison/{{client_id}}/compare" end api.add_params(:source => file.guid, :target => document.file.guid, :callback => callback) json = api.execute! Job.new(:id => json[:job_id]) end |
#content!(content_type, access = {}) ⇒ String
Returns document content
489 490 491 492 493 494 495 496 497 |
# File 'lib/groupdocs/document.rb', line 489 def content!(content_type, access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/content/#{content_type}" end.execute! json[:content] end |
#convert!(format, options = {}, access = {}) ⇒ GroupDocs::Job
Converts document to given format.
793 794 795 796 797 798 799 800 801 802 803 804 805 |
# File 'lib/groupdocs/document.rb', line 793 def convert!(format, = {}, access = {}) .merge!(:new_type => format) api = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/async/{{client_id}}/files/#{file.guid}" end api.add_params() json = api.execute! Job.new(:id => json[:job_id]) end |
#create_questionnaire!(questionnaire, access = {}) ⇒ GroupDocs::Questionnaire
Creates questionnaire and adds it to document.
921 922 923 924 925 926 927 928 929 930 931 932 933 934 |
# File 'lib/groupdocs/document.rb', line 921 def create_questionnaire!(questionnaire, access = {}) questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError, "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}" json = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires" request[:request_body] = questionnaire.to_hash end.execute! questionnaire.id = json[:questionnaire_id] questionnaire end |
#datasource!(datasource, options = {}, access = {}) ⇒ GroupDocs::Job
Creates new job to merge datasource into document.
821 822 823 824 825 826 827 828 829 830 831 832 833 834 |
# File 'lib/groupdocs/document.rb', line 821 def datasource!(datasource, = {}, access = {}) datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError, "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}" api = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/merge/{{client_id}}/files/#{file.guid}/datasources/#{datasource.id}" end api.add_params() json = api.execute! Job.new(:id => json[:job_id]) end |
#datasource_fields!(datasource, options = {}, access = {}) ⇒ GroupDocs::Job
Creates new job to merge datasource fields into document.
852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 |
# File 'lib/groupdocs/document.rb', line 852 def datasource_fields!(datasource, = {}, access = {}) datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError, "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}" api = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/merge/{{client_id}}/files/#{file.guid}/datasources" request[:request_body] = datasource.fields end api.add_params() json = api.execute! Job.new(:id => json[:job_id]) end |
#delete_questionnaire_template!(fields, access = {}) ⇒ Object
added in release 1.8.0
Delete template’s fields
@example
file = GroupDocs::Storage::File.new(=> ‘3be4e06494caed131d912c75e17d5f22592e3044032e0f81b35f13a8c9fefb49’).to_document field = file.editor_fields! file.delete_questionnaire_template!( )
1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 |
# File 'lib/groupdocs/document.rb', line 1523 def delete_questionnaire_template!(fields, access = {}) fields.each do |field| field.is_a?(GroupDocs::Document::TemplateEditorFields) or raise ArgumentError, "Fields should be List GroupDocs::Document::TemplateEditorFields objects, received: #{fields.inspect}" end json = Api::Request.new do |request| request[:access] = access request[:method] = :DELETE request[:path] = "/merge/{{client_id}}/files/#{file.guid}/templates/delete" request[:request_body] = fields end.execute! json[:templateFields].map do |field| Document::Field.new(field) end end |
#details!(access = {}) ⇒ Hash
Changed in release 1.5.8 Returns document details.
991 992 993 994 995 996 997 998 999 |
# File 'lib/groupdocs/document.rb', line 991 def details!(access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/comparison/{{client_id}}document" end api.add_params(:guid => file.guid) api.execute! end |
#document_status!(job_guid, access = {}) ⇒ Object
Get sign documents status
158 159 160 161 162 163 164 165 166 |
# File 'lib/groupdocs/document.rb', line 158 def document_status!(job_guid, access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/signature/{{client_id}}/documents/#{job_guid}" end.execute! json[:documents] end |
#download!(path, options = {}, access = {}) ⇒ Object
Changed in release 1.5.8 Download comparison result file.
1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 |
# File 'lib/groupdocs/document.rb', line 1106 def download!( path, = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :DOWNLOAD request[:path] = "/comparison/public/#{file.guid}/download" end api.add_params() response = api.execute! if file.name.split('.').last != [:format] file_name = file.name.delete!(file.name.split('.').last) + [:format] else file_name = file.name end filepath = "#{path}/#{file_name}" Object::File.open(filepath, 'wb') do |file| file.write(response) end end |
#editlock!(access = {}) ⇒ Object
Returns editing metadata.
405 406 407 408 409 410 411 |
# File 'lib/groupdocs/document.rb', line 405 def editlock!(access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/editlock" end.execute! end |
#editlock_clear!(options = {}, access = {}) ⇒ Integer
Removes edit lock for a document and replaces the document with its edited copy
423 424 425 426 427 428 429 430 |
# File 'lib/groupdocs/document.rb', line 423 def editlock_clear!( = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :DELETE request[:path] = "/doc/{{client_id}}/files/#{file.guid}/editlock" end api.add_params().execute! end |
#editor_fields!(access = {}) ⇒ Object
added in release 1.7.0
Get template fields.
1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 |
# File 'lib/groupdocs/document.rb', line 1384 def editor_fields!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/editor_fields" end.execute! json[:fields].map do |field| TemplateEditorFields.new(field) end end |
#fields!(access = {}) ⇒ Array<GroupDocs::Document::Field>
Returns an array of document fields.
631 632 633 634 635 636 637 638 639 640 641 642 643 |
# File 'lib/groupdocs/document.rb', line 631 def fields!(access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/fields" end api.add_params(:include_geometry => true) json = api.execute! json[:fields].map do |field| Document::Field.new(field) end end |
#formats!(access = {}) ⇒ Array<Symbol>
Returns array of file formats document can be converted to.
581 582 583 584 585 586 587 588 589 590 591 |
# File 'lib/groupdocs/document.rb', line 581 def formats!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.id}/formats" end.execute! json[:types].map do |format| format.downcase.to_sym end end |
#hyperlinks!(access = {}) ⇒ Object
added in release 1.5.8
Returns document hyperlinks
1312 1313 1314 1315 1316 1317 1318 1319 1320 |
# File 'lib/groupdocs/document.rb', line 1312 def hyperlinks!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/hyperlinks" end.execute! json[:links] end |
#metadata!(access = {}) ⇒ GroupDocs::Document::MetaData
Cnanged in release 2.0.0
Returns document metadata.
603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 |
# File 'lib/groupdocs/document.rb', line 603 def (access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/metadata" end.execute! Document::MetaData.new do || .id = json[:id] .guid = json[:guid] .page_count = json[:page_count] .views_count = json[:views_count] .type = json[:type] .url = json[:url] if json[:last_view] .last_view = json[:last_view] end end end |
#page_image!(path, name, page_number, dimension, options = {}, access = {}) ⇒ Object
Returns a stream of bytes representing a particular document page image.
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 |
# File 'lib/groupdocs/document.rb', line 341 def page_image!(path, name, page_number, dimension, = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :DOWNLOAD request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/#{page_number}/images/#{dimension}" end api.add_params() response = api.execute! filepath = "#{path}/#{name}" Object::File.open(filepath, 'wb') do |file| file.write(response) end filepath end |
#page_images!(width, height, options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to images representing document pages.
385 386 387 388 389 390 391 392 393 394 395 |
# File 'lib/groupdocs/document.rb', line 385 def page_images!(width, height, = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/images/#{width}x#{height}/urls" end api.add_params() json = api.execute! json[:url] end |
#password_set!(password, access = {}) ⇒ Array<GroupDocs::User>
Sets document password.
725 726 727 728 729 730 731 732 733 |
# File 'lib/groupdocs/document.rb', line 725 def password_set!(password, access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/doc/{{client_id}}/files/#{file.guid}/password" request[:request_body] = password end.execute! end |
#public_sign_document!(options = {}, access = {}) ⇒ Array
Changed in release 1.5.8
Public Sign document
1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 |
# File 'lib/groupdocs/document.rb', line 1344 def public_sign_document!( = {}, access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/signature/public/documents/#{file.guid}/sign" request[:request_body] = end.execute! json[:jobId] end |
#questionnaire_template!(fields, access = {}) ⇒ Object
added in release 1.7.0
Create questionnaire template from file.
@example
file = GroupDocs::Storage::File.new(=> ‘3be4e06494caed131d912c75e17d5f22592e3044032e0f81b35f13a8c9fefb49’).to_document field = GroupDocs::Document::TemplateEditorFields.new field.name = ‘test’ field.fieldtype = ‘TextBox’ field.page = 1 file.questionnaire_template!( )
1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 |
# File 'lib/groupdocs/document.rb', line 1414 def questionnaire_template!(fields, access = {}) fields.each do |field| field.is_a?(GroupDocs::Document::TemplateEditorFields) or raise ArgumentError, "Fields should be List GroupDocs::Document::TemplateEditorFields objects, received: #{fields.inspect}" end json = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/merge/{{client_id}}/files/#{file.guid}/templates" request[:request_body] = fields end.execute! json[:templateFields].map do |field| Document::Field.new(field) end end |
#questionnaires!(access = {}) ⇒ Array<GroupDocs::Questionnaire>
Returns an array of questionnaires.
877 878 879 880 881 882 883 884 885 886 887 |
# File 'lib/groupdocs/document.rb', line 877 def questionnaires!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires" end.execute! json[:questionnaires].map do |questionnaire| Questionnaire.new(questionnaire) end end |
#remove_collaborators!(reviewerId, access = {}) ⇒ Object
Delete document reviewer
1199 1200 1201 1202 1203 1204 1205 1206 |
# File 'lib/groupdocs/document.rb', line 1199 def remove_collaborators!(reviewerId, access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :DELETE request[:path] = "/ant/{{client_id}}/files/#{file.guid}/collaborators/#{reviewerId}" end.execute! end |
#remove_questionnaire!(questionnaire, access = {}) ⇒ Object
Detaches questionnaire from document.
946 947 948 949 950 951 952 953 954 955 |
# File 'lib/groupdocs/document.rb', line 946 def remove_questionnaire!(questionnaire, access = {}) questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError, "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}" Api::Request.new do |request| request[:access] = access request[:method] = :DELETE request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires/#{questionnaire.id}" end.execute! end |
#respond_to?(method) ⇒ Boolean
1298 1299 1300 |
# File 'lib/groupdocs/document.rb', line 1298 def respond_to?(method) super or file.respond_to?(method) end |
#set_collaborators!(emails, version = 1, access = {}) ⇒ Array<GroupDocs::User>
Sets document annotations collaborators to given emails.
1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 |
# File 'lib/groupdocs/document.rb', line 1157 def set_collaborators!(emails, version = 1, access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/ant/{{client_id}}/files/#{file.guid}/version/#{version}/collaborators" request[:request_body] = emails end.execute! json[:collaborators].map do |collaborator| User.new(collaborator) end end |
#set_reviewers!(reviewers, access = {}) ⇒ Object
Sets reviewers for document.
1223 1224 1225 1226 1227 1228 1229 1230 |
# File 'lib/groupdocs/document.rb', line 1223 def set_reviewers!(reviewers, access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/ant/{{client_id}}/files/#{file.guid}/reviewerRights" request[:request_body] = reviewers.map(&:to_hash) end.execute! end |
#set_session_callback!(url, access = {}) ⇒ Object
Sets session callback URL.
1280 1281 1282 1283 1284 1285 1286 1287 |
# File 'lib/groupdocs/document.rb', line 1280 def set_session_callback!(url, access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/ant/{{client_id}}/files/#{file.guid}/sessionCallbackUrl" request[:request_body] = url end.execute! end |
#set_shared_link_access_rights!(rights, access = {}) ⇒ Array<Symbol>
Sets access rights for shared link.
1263 1264 1265 1266 1267 1268 1269 1270 |
# File 'lib/groupdocs/document.rb', line 1263 def set_shared_link_access_rights!(rights, access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/ant/{{client_id}}/files/#{file.guid}/sharedLinkAccessRights" request[:request_body] = convert_access_rights_to_byte(rights) end.execute! end |
#shared_documents!(sharers_types, options = {}, access = {}) ⇒ Array<GroupDocs::User>
Returns an array of users a document is shared with.
678 679 680 681 682 683 684 685 686 |
# File 'lib/groupdocs/document.rb', line 678 def shared_documents!(sharers_types, = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/shares/#{sharers_types}" end api.add_params().execute! end |
#shared_link_access_rights!(access = {}) ⇒ Array<Symbol>
Returns an array of access rights for shared link.
1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 |
# File 'lib/groupdocs/document.rb', line 1240 def shared_link_access_rights!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/ant/{{client_id}}/files/#{file.guid}/sharedLinkAccessRights" end.execute! if json[:accessRights] convert_byte_to_access_rights json[:accessRights] else [] end end |
#sharers!(access = {}) ⇒ Array<GroupDocs::User>
Returns an array of users a document is shared with.
653 654 655 656 657 658 659 660 661 662 663 |
# File 'lib/groupdocs/document.rb', line 653 def sharers!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.id}/accessinfo" end.execute! json[:sharers].map do |user| User.new(user) end end |
#sharers_clear!(access = {}) ⇒ Object
Clears sharers list.
762 763 764 765 766 767 768 769 |
# File 'lib/groupdocs/document.rb', line 762 def sharers_clear!(access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :DELETE request[:path] = "/doc/{{client_id}}/files/#{file.id}/sharers" end.execute![:shared_users] end |
#sharers_set!(emails, access = {}) ⇒ Array<GroupDocs::User>
Sets document sharers to given emails.
If empty array or nil passed, clears sharers.
699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 |
# File 'lib/groupdocs/document.rb', line 699 def sharers_set!(emails, access = {}) if emails.nil? || emails.empty? sharers_clear!(access) else json = Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/doc/{{client_id}}/files/#{file.id}/sharers" request[:request_body] = emails end.execute! json[:shared_users].map do |user| User.new(user) end end end |
#tags!(access = {}) ⇒ Array<String>
Returns tags assigned to the document
440 441 442 443 444 445 446 |
# File 'lib/groupdocs/document.rb', line 440 def (access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/tags" end.execute! end |
#tags_clear!(access = {}) ⇒ String
Removes tags assigned to the document
472 473 474 475 476 477 478 |
# File 'lib/groupdocs/document.rb', line 472 def (access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :DELETE request[:path] = "/doc/{{client_id}}/files/#{file.guid}/tags" end.execute! end |
#tags_set!(access = {}) ⇒ String
Assign tags to the document.
456 457 458 459 460 461 462 |
# File 'lib/groupdocs/document.rb', line 456 def (access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/doc/{{client_id}}/files/#{file.guid}/tags" end.execute! end |
#thumbnails!(options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to images representing document pages thumbnails.
518 519 520 521 522 523 524 525 526 527 528 |
# File 'lib/groupdocs/document.rb', line 518 def thumbnails!( = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/doc/{{client_id}}/files/#{file.guid}/thumbnails" end api.add_params() json = api.execute! json[:image_urls] end |
#update_changes!(changes, access = {}) ⇒ GroupDocs::Change
Schedules a job for comparing document with given.
1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 |
# File 'lib/groupdocs/document.rb', line 1043 def update_changes!(changes, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/comparison/public/#{file.guid}/changes" request[:request_body] = changes end json = api.execute! json[:changes].map do |change| Document::Change.new(change) end end |
#update_questionnaire_template!(fields, access = {}) ⇒ Object
added in release 1.8.0
Update template’s fields
@example
file = GroupDocs::Storage::File.new(=> ‘3be4e06494caed131d912c75e17d5f22592e3044032e0f81b35f13a8c9fefb49’).to_document field = GroupDocs::Document::TemplateEditorFields.new field.name = ‘test’ field.fieldtype = ‘TextBox’ field.page = 1 file.update_questionnaire_template!( )
1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 |
# File 'lib/groupdocs/document.rb', line 1489 def update_questionnaire_template!(fields, access = {}) fields.each do |field| field.is_a?(GroupDocs::Document::TemplateEditorFields) or raise ArgumentError, "Fields should be List GroupDocs::Document::TemplateEditorFields objects, received: #{fields.inspect}" end json = Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/merge/{{client_id}}/files/#{file.guid}/templates/update" request[:request_body] = fields end.execute! json[:templateFields].map do |field| Document::Field.new(field) end end |
#user_status_set!(status, access = {}) ⇒ String
Sets document user status.
744 745 746 747 748 749 750 751 752 |
# File 'lib/groupdocs/document.rb', line 744 def user_status_set!(status, access = {}) Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/doc/{{client_id}}/files/#{file.guid}/sharer" request[:request_body] = status end.execute! end |