groupdocs 0.3.11 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. data/CHANGELOG.md +150 -0
  2. data/README.md +6 -58
  3. data/Rakefile +1 -1
  4. data/examples/README.md +13 -0
  5. data/examples/annotations/Gemfile +5 -0
  6. data/examples/annotations/app.rb +67 -0
  7. data/groupdocs.gemspec +3 -3
  8. data/lib/groupdocs.rb +11 -2
  9. data/lib/groupdocs/api/entity.rb +17 -1
  10. data/lib/groupdocs/api/helpers/path_helper.rb +10 -10
  11. data/lib/groupdocs/api/helpers/rest_helper.rb +7 -2
  12. data/lib/groupdocs/api/helpers/url_helper.rb +2 -4
  13. data/lib/groupdocs/api/request.rb +2 -4
  14. data/lib/groupdocs/datasource.rb +2 -2
  15. data/lib/groupdocs/datasource/field.rb +1 -1
  16. data/lib/groupdocs/document.rb +6 -18
  17. data/lib/groupdocs/document/annotation.rb +25 -2
  18. data/lib/groupdocs/document/annotation/reply.rb +6 -10
  19. data/lib/groupdocs/document/change.rb +1 -1
  20. data/lib/groupdocs/document/field.rb +1 -1
  21. data/lib/groupdocs/document/metadata.rb +1 -1
  22. data/lib/groupdocs/document/rectangle.rb +1 -1
  23. data/lib/groupdocs/document/view.rb +1 -1
  24. data/lib/groupdocs/job.rb +51 -8
  25. data/lib/groupdocs/questionnaire.rb +2 -2
  26. data/lib/groupdocs/questionnaire/execution.rb +1 -1
  27. data/lib/groupdocs/questionnaire/page.rb +1 -1
  28. data/lib/groupdocs/questionnaire/question.rb +1 -1
  29. data/lib/groupdocs/questionnaire/question/answer.rb +1 -1
  30. data/lib/groupdocs/signature.rb +134 -0
  31. data/lib/groupdocs/signature/contact.rb +141 -0
  32. data/lib/groupdocs/signature/envelope.rb +376 -0
  33. data/lib/groupdocs/signature/envelope/log.rb +22 -0
  34. data/lib/groupdocs/signature/field.rb +253 -0
  35. data/lib/groupdocs/signature/field/location.rb +72 -0
  36. data/lib/groupdocs/signature/form.rb +202 -0
  37. data/lib/groupdocs/signature/list.rb +93 -0
  38. data/lib/groupdocs/signature/recipient.rb +47 -0
  39. data/lib/groupdocs/signature/role.rb +84 -0
  40. data/lib/groupdocs/signature/shared.rb +6 -0
  41. data/lib/groupdocs/signature/shared/document_methods.rb +98 -0
  42. data/lib/groupdocs/signature/shared/entity_fields.rb +94 -0
  43. data/lib/groupdocs/signature/shared/entity_methods.rb +145 -0
  44. data/lib/groupdocs/signature/shared/field_methods.rb +282 -0
  45. data/lib/groupdocs/signature/shared/recipient_methods.rb +63 -0
  46. data/lib/groupdocs/signature/shared/resource_methods.rb +65 -0
  47. data/lib/groupdocs/signature/template.rb +104 -0
  48. data/lib/groupdocs/storage/file.rb +69 -62
  49. data/lib/groupdocs/storage/folder.rb +54 -88
  50. data/lib/groupdocs/storage/package.rb +1 -1
  51. data/lib/groupdocs/subscription.rb +113 -0
  52. data/lib/groupdocs/subscription/limit.rb +24 -0
  53. data/lib/groupdocs/user.rb +22 -2
  54. data/lib/groupdocs/version.rb +1 -1
  55. data/spec/groupdocs/api/entity_spec.rb +14 -0
  56. data/spec/groupdocs/api/helpers/path_helper_spec.rb +6 -19
  57. data/spec/groupdocs/api/helpers/rest_helper_spec.rb +9 -0
  58. data/spec/groupdocs/api/request_spec.rb +2 -7
  59. data/spec/groupdocs/datasource_spec.rb +3 -7
  60. data/spec/groupdocs/document/annotation/reply_spec.rb +11 -20
  61. data/spec/groupdocs/document/annotation_spec.rb +35 -31
  62. data/spec/groupdocs/document/field_spec.rb +1 -4
  63. data/spec/groupdocs/document/rectangle_spec.rb +10 -22
  64. data/spec/groupdocs/document_spec.rb +7 -27
  65. data/spec/groupdocs/job_spec.rb +43 -0
  66. data/spec/groupdocs/questionnaire/question_spec.rb +2 -6
  67. data/spec/groupdocs/questionnaire_spec.rb +3 -7
  68. data/spec/groupdocs/signature/contact_spec.rb +129 -0
  69. data/spec/groupdocs/signature/envelope/log_spec.rb +23 -0
  70. data/spec/groupdocs/signature/envelope_spec.rb +296 -0
  71. data/spec/groupdocs/signature/field/location_spec.rb +73 -0
  72. data/spec/groupdocs/signature/field_spec.rb +264 -0
  73. data/spec/groupdocs/signature/form_spec.rb +174 -0
  74. data/spec/groupdocs/signature/list_spec.rb +92 -0
  75. data/spec/groupdocs/signature/recipient_spec.rb +37 -0
  76. data/spec/groupdocs/signature/role_spec.rb +100 -0
  77. data/spec/groupdocs/signature/template_spec.rb +82 -0
  78. data/spec/groupdocs/signature_spec.rb +117 -0
  79. data/spec/groupdocs/storage/file_spec.rb +76 -61
  80. data/spec/groupdocs/storage/folder_spec.rb +43 -90
  81. data/spec/groupdocs/storage/package_spec.rb +1 -2
  82. data/spec/groupdocs/subscription/limit_spec.rb +24 -0
  83. data/spec/groupdocs/subscription_spec.rb +85 -0
  84. data/spec/groupdocs/user_spec.rb +27 -18
  85. data/spec/groupdocs_spec.rb +11 -0
  86. data/spec/spec_helper.rb +10 -1
  87. data/spec/support/files/envelope.zip +0 -0
  88. data/spec/support/json/annotation_access_set.json +11 -0
  89. data/spec/support/json/contact_add.json +12 -0
  90. data/spec/support/json/contacts_get.json +19 -0
  91. data/spec/support/json/contacts_import.json +8 -0
  92. data/spec/support/json/envelope_get.json +46 -0
  93. data/spec/support/json/envelope_logs.json +16 -0
  94. data/spec/support/json/envelopes_all.json +48 -0
  95. data/spec/support/json/envelopes_resources.json +31 -0
  96. data/spec/support/json/form_get.json +21 -0
  97. data/spec/support/json/forms_all.json +23 -0
  98. data/spec/support/json/job_get.json +30 -0
  99. data/spec/support/json/list_add.json +12 -0
  100. data/spec/support/json/lists_get.json +19 -0
  101. data/spec/support/json/signature_create.json +12 -0
  102. data/spec/support/json/signature_field_add.json +25 -0
  103. data/spec/support/json/signature_fields_get.json +27 -0
  104. data/spec/support/json/signature_roles_get.json +17 -0
  105. data/spec/support/json/signatures_get.json +19 -0
  106. data/spec/support/json/subscription_plan_get.json +9 -0
  107. data/spec/support/json/subscription_plans_get.json +17 -0
  108. data/spec/support/json/template_get.json +35 -0
  109. data/spec/support/json/template_get_documents.json +15 -0
  110. data/spec/support/json/template_get_recipients.json +20 -0
  111. data/spec/support/json/templates_all.json +37 -0
  112. data/spec/support/json/user_users_get.json +27 -0
  113. data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -0
  114. data/spec/support/shared_examples/signature/shared/entity_fields.rb +89 -0
  115. data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -0
  116. data/spec/support/shared_examples/signature/shared/field_methods.rb +188 -0
  117. data/spec/support/shared_examples/signature/shared/recipient_methods.rb +42 -0
  118. data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -0
  119. metadata +139 -29
  120. data/lib/groupdocs/extensions.rb +0 -1
  121. data/lib/groupdocs/extensions/lookup.rb +0 -52
  122. data/spec/support/shared_examples/extensions/lookup.rb +0 -57
@@ -0,0 +1,22 @@
1
+ module GroupDocs
2
+ class Signature::Envelope::Log < Api::Entity
3
+
4
+ # @attr [String] id
5
+ attr_accessor :id
6
+ # @attr [String] date
7
+ attr_accessor :date
8
+ # @attr [String] userName
9
+ attr_accessor :userName
10
+ # @attr [String] action
11
+ attr_accessor :action
12
+ # @attr [String] remoteAddress
13
+ attr_accessor :remoteAddress
14
+
15
+ # Human-readable accessors
16
+ alias_method :remote_address, :remoteAddress
17
+ alias_method :remote_address=, :remoteAddress=
18
+ alias_method :user_name, :userName
19
+ alias_method :user_name=, :userName=
20
+
21
+ end # Signature::Envelope::Log
22
+ end # GroupDocs
@@ -0,0 +1,253 @@
1
+ module GroupDocs
2
+ class Signature::Field < Api::Entity
3
+
4
+ require 'groupdocs/signature/field/location'
5
+
6
+ FIELD_TYPES = {
7
+ signature: 1,
8
+ single_line: 2,
9
+ multiline: 3,
10
+ date: 4,
11
+ dropdown: 5,
12
+ checkbox: 6,
13
+ }
14
+
15
+ #
16
+ # Returns array of predefined lists.
17
+ #
18
+ # @param [Hash] options Hash of options
19
+ # @option options [String] :id Filter by identifier
20
+ # @param [Hash] access Access credentials
21
+ # @option access [String] :client_id
22
+ # @option access [String] :private_key
23
+ # @return [Array<GroupDocs::Signature::Field>]
24
+ #
25
+ def self.get!(options = {}, access = {})
26
+ api = Api::Request.new do |request|
27
+ request[:access] = access
28
+ request[:method] = :GET
29
+ request[:path] = '/signature/{{client_id}}/fields'
30
+ end
31
+ api.add_params(options)
32
+ json = api.execute!
33
+
34
+ json[:fields].map do |field|
35
+ new(field)
36
+ end
37
+ end
38
+
39
+ # @attr [String] id
40
+ attr_accessor :id
41
+ # @attr [String] templateId
42
+ attr_accessor :templateId
43
+ # @attr [String] recipientId
44
+ attr_accessor :recipientId
45
+ # @attr [String] signatureFieldId
46
+ attr_accessor :signatureFieldId
47
+ # @attr [String] name
48
+ attr_accessor :name
49
+ # @attr [Integer] graphSizeW
50
+ attr_accessor :graphSizeW
51
+ # @attr [Integer] graphSizeH
52
+ attr_accessor :graphSizeH
53
+ # @attr [String] getDataFrom
54
+ attr_accessor :getDataFrom
55
+ # @attr [String] regularExpression
56
+ attr_accessor :regularExpression
57
+ # @attr [String] fontName
58
+ attr_accessor :fontName
59
+ # @attr [String] fontColor
60
+ attr_accessor :fontColor
61
+ # @attr [Integer] fontSize
62
+ attr_accessor :fontSize
63
+ # @attr [Boolean] fontBold
64
+ attr_accessor :fontBold
65
+ # @attr [Boolean] fontItalic
66
+ attr_accessor :fontItalic
67
+ # @attr [Boolean] fontUnderline
68
+ attr_accessor :fontUnderline
69
+ # @attr [Boolean] isSystem
70
+ attr_accessor :isSystem
71
+ # @attr [Boolean] mandatory
72
+ attr_accessor :mandatory
73
+ # @attr [Symbol] fieldType
74
+ attr_accessor :fieldType
75
+ # @attr [Boolean] acceptableValues
76
+ attr_accessor :acceptableValues
77
+ # @attr [String] defaultValue
78
+ attr_accessor :defaultValue
79
+ # @attr [String] tooltip
80
+ attr_accessor :tooltip
81
+ # @attr [Integer] input
82
+ attr_accessor :input
83
+ # @attr [Integer] order
84
+ attr_accessor :order
85
+ # @attr [String] textRows
86
+ attr_accessor :textRows
87
+ # @attr [String] textColumns
88
+ attr_accessor :textColumns
89
+ # @attr [GroupDocs::Signature::Field::Location] location
90
+ attr_accessor :location
91
+ # @attr [Array<GroupDocs::Signature::Field::Location>] locations
92
+ attr_accessor :locations
93
+
94
+ # Human-readable accessors
95
+ alias_method :template_id, :templateId
96
+ alias_method :template_id=, :templateId=
97
+ alias_method :recipient_id, :recipientId
98
+ alias_method :recipient_id=, :recipientId=
99
+ alias_method :signature_field_id, :signatureFieldId
100
+ alias_method :signature_field_id=, :signatureFieldId=
101
+ alias_method :graph_size_w, :graphSizeW
102
+ alias_method :graph_size_w=, :graphSizeW=
103
+ alias_method :graph_size_w, :graphSizeW
104
+ alias_method :graph_size_w=, :graphSizeW=
105
+ alias_method :graph_size_width, :graphSizeW
106
+ alias_method :graph_size_width=, :graphSizeW=
107
+ alias_method :graph_size_h, :graphSizeH
108
+ alias_method :graph_size_h=, :graphSizeH=
109
+ alias_method :graph_size_height, :graphSizeH
110
+ alias_method :graph_size_height=, :graphSizeH=
111
+ alias_method :get_data_from, :getDataFrom
112
+ alias_method :get_data_from=, :getDataFrom=
113
+ alias_method :regular_expression, :regularExpression
114
+ alias_method :regular_expression=, :regularExpression=
115
+ alias_method :font_name, :fontName
116
+ alias_method :font_name=, :fontName=
117
+ alias_method :font_color, :fontColor
118
+ alias_method :font_color=, :fontColor=
119
+ alias_method :font_size, :fontSize
120
+ alias_method :font_size=, :fontSize=
121
+ alias_method :font_bold, :fontBold
122
+ alias_method :font_bold=, :fontBold=
123
+ alias_method :font_italic, :fontItalic
124
+ alias_method :font_italic=, :fontItalic=
125
+ alias_method :font_underline, :fontUnderline
126
+ alias_method :font_underline=, :fontUnderline=
127
+ alias_method :is_system, :isSystem
128
+ alias_method :is_system=, :isSystem=
129
+ alias_method :acceptable_values, :acceptableValues
130
+ alias_method :acceptable_values=, :acceptableValues=
131
+ alias_method :default_value, :defaultValue
132
+ alias_method :default_value=, :defaultValue=
133
+ alias_method :text_rows, :textRows
134
+ alias_method :text_rows=, :textRows=
135
+ alias_method :text_columns, :textColumns
136
+ alias_method :text_columns=, :textColumns=
137
+
138
+ #
139
+ # Converts location to GroupDocs::Signature::Field::Location object.
140
+ #
141
+ # @param [GroupDocs::Signature::Field::Location, Hash] location
142
+ #
143
+ def location=(location)
144
+ if location
145
+ @location = (location.is_a?(GroupDocs::Signature::Field::Location) ? location : Signature::Field::Location.new(location))
146
+ locations ? locations << @location : self.locations = [@location]
147
+ end
148
+ end
149
+
150
+ #
151
+ # Converts each location to GroupDocs::Signature::Field::Location object.
152
+ #
153
+ # @param [Array<GroupDocs::Signature::Field::Location, Hash>] locations
154
+ #
155
+ def locations=(locations)
156
+ if locations
157
+ @locations = locations.map do |location|
158
+ if location.is_a?(GroupDocs::Signature::Field::Location)
159
+ location
160
+ else
161
+ Signature::Field::Location.new(location)
162
+ end
163
+ end
164
+ end
165
+ end
166
+
167
+ #
168
+ # Saves field type in machine-readable format.
169
+ # @param [Symbol, Integer] type
170
+ #
171
+ def field_type=(type)
172
+ if type.is_a?(Symbol)
173
+ type = FIELD_TYPES[type]
174
+ end
175
+
176
+ @fieldType = type
177
+ end
178
+ alias_method :type=, :field_type=
179
+
180
+ #
181
+ # Returns field type in human-readable format.
182
+ # @return [Symbol]
183
+ #
184
+ def field_type
185
+ FIELD_TYPES.invert[@fieldType]
186
+ end
187
+ alias_method :type, :field_type
188
+
189
+ #
190
+ # Creates signature field.
191
+ #
192
+ # @example
193
+ # field = GroupDocs::Signature::Field.new
194
+ # field.name = 'Field'
195
+ # field.create!
196
+ #
197
+ # @param [Hash] access Access credentials
198
+ # @option access [String] :client_id
199
+ # @option access [String] :private_key
200
+ #
201
+ def create!(access = {})
202
+ json = Api::Request.new do |request|
203
+ request[:access] = access
204
+ request[:method] = :POST
205
+ request[:path] = '/signature/{{client_id}}/field'
206
+ request[:request_body] = to_hash
207
+ end.execute!
208
+
209
+ self.id = json[:field][:id]
210
+ end
211
+
212
+ #
213
+ # Modifies signature field.
214
+ #
215
+ # @example
216
+ # field = GroupDocs::Signature::Field.get!.first
217
+ # field.name = 'Field'
218
+ # field.modify!
219
+ #
220
+ # @param [Hash] access Access credentials
221
+ # @option access [String] :client_id
222
+ # @option access [String] :private_key
223
+ #
224
+ def modify!(access = {})
225
+ Api::Request.new do |request|
226
+ request[:access] = access
227
+ request[:method] = :POST
228
+ request[:path] = "/signature/{{client_id}}/fields/#{id}"
229
+ request[:request_body] = to_hash
230
+ end.execute!
231
+ end
232
+
233
+ #
234
+ # Deletes signature field.
235
+ #
236
+ # @example Remove all created fields
237
+ # fields = GroupDocs::Signature::Field.get!.select { |field| !field.is_system }
238
+ # fields.each { |field| field.delete! }
239
+ #
240
+ # @param [Hash] access Access credentials
241
+ # @option access [String] :client_id
242
+ # @option access [String] :private_key
243
+ #
244
+ def delete!(access = {})
245
+ Api::Request.new do |request|
246
+ request[:access] = access
247
+ request[:method] = :DELETE
248
+ request[:path] = "/signature/{{client_id}}/fields/#{id}"
249
+ end.execute!
250
+ end
251
+
252
+ end # Signature::Field
253
+ end # GroupDocs
@@ -0,0 +1,72 @@
1
+ module GroupDocs
2
+ class Signature::Field::Location < Api::Entity
3
+
4
+ # @attr [String] id
5
+ attr_accessor :id
6
+ # @attr [String] documentId
7
+ attr_accessor :documentId
8
+ # @attr [String] fieldId
9
+ attr_accessor :fieldId
10
+ # @attr [Integer] page
11
+ attr_accessor :page
12
+ # @attr [Float] locationX
13
+ attr_accessor :locationX
14
+ # @attr [Float] locationY
15
+ attr_accessor :locationY
16
+ # @attr [Float] locationWidth
17
+ attr_accessor :locationWidth
18
+ # @attr [Float] locationHeight
19
+ attr_accessor :locationHeight
20
+ # @attr [String] fontName
21
+ attr_accessor :fontName
22
+ # @attr [String] fontColor
23
+ attr_accessor :fontColor
24
+ # @attr [Integer] fontSize
25
+ attr_accessor :fontSize
26
+ # @attr [Boolean] fontBold
27
+ attr_accessor :fontBold
28
+ # @attr [Boolean] fontItalic
29
+ attr_accessor :fontItalic
30
+ # @attr [Boolean] fontUnderline
31
+ attr_accessor :fontUnderline
32
+
33
+ # Human-readable accessors
34
+ alias_method :document_id, :documentId
35
+ alias_method :document_id=, :documentId=
36
+ alias_method :field_id, :fieldId
37
+ alias_method :field_id=, :fieldId=
38
+ alias_method :location_x, :locationX
39
+ alias_method :location_x=, :locationX=
40
+ alias_method :x, :locationX
41
+ alias_method :x=, :locationX=
42
+ alias_method :location_y, :locationY
43
+ alias_method :location_y=, :locationY=
44
+ alias_method :y, :locationY
45
+ alias_method :y=, :locationY=
46
+ alias_method :location_w, :locationWidth
47
+ alias_method :location_w=, :locationWidth=
48
+ alias_method :location_width, :locationWidth
49
+ alias_method :location_width=, :locationWidth=
50
+ alias_method :w, :locationWidth
51
+ alias_method :w=, :locationWidth=
52
+ alias_method :location_h, :locationHeight
53
+ alias_method :location_h=, :locationHeight=
54
+ alias_method :location_height, :locationHeight
55
+ alias_method :location_height=, :locationHeight=
56
+ alias_method :h, :locationHeight
57
+ alias_method :h=, :locationHeight=
58
+ alias_method :font_name, :fontName
59
+ alias_method :font_name=, :fontName=
60
+ alias_method :font_color, :fontColor
61
+ alias_method :font_color=, :fontColor=
62
+ alias_method :font_size, :fontSize
63
+ alias_method :font_size=, :fontSize=
64
+ alias_method :font_bold, :fontBold
65
+ alias_method :font_bold=, :fontBold=
66
+ alias_method :font_italic, :fontItalic
67
+ alias_method :font_italic=, :fontItalic=
68
+ alias_method :font_underline, :fontUnderline
69
+ alias_method :font_underline=, :fontUnderline=
70
+
71
+ end # Signature::Field::Location
72
+ end # GroupDocs
@@ -0,0 +1,202 @@
1
+ module GroupDocs
2
+ class Signature::Form < Api::Entity
3
+
4
+ include Signature::EntityMethods
5
+ extend Signature::ResourceMethods
6
+
7
+ STATUSES = {
8
+ draft: -1,
9
+ in_progress: 1,
10
+ completed: 2,
11
+ archived: 3,
12
+ }
13
+
14
+ #
15
+ # Returns a list of all forms.
16
+ #
17
+ # @param [Hash] options Hash of options
18
+ # @option options [Integer] :page Page to start with
19
+ # @option options [Integer] :records How many items to list
20
+ # @option options [Integer] :status_id Filter by status identifier
21
+ # @option options [String] :document Filter by document GUID
22
+ # @option options [String] :date Filter by date
23
+ # @option options [String] :name Filter by name
24
+ # @param [Hash] access Access credentials
25
+ # @option access [String] :client_id
26
+ # @option access [String] :private_key
27
+ # @return [Array<GroupDocs::Signature::Envelope>]
28
+ #
29
+ def self.all!(options = {}, access = {})
30
+ status_id = options.delete(:status_id)
31
+ options[:statusId] = status_id if status_id
32
+
33
+ api = Api::Request.new do |request|
34
+ request[:access] = access
35
+ request[:method] = :GET
36
+ request[:path] = '/signature/{{client_id}}/forms'
37
+ end
38
+ api.add_params(options)
39
+ json = api.execute!
40
+
41
+ json[:forms].map do |form|
42
+ new(form)
43
+ end
44
+ end
45
+
46
+ # @attr [String] id
47
+ attr_accessor :id
48
+ # @attr [String] name
49
+ attr_accessor :name
50
+ # @attr [String] ownerGuid
51
+ attr_accessor :ownerGuid
52
+ # @attr [String] templateGuid
53
+ attr_accessor :templateGuid
54
+ # @attr [String] createdTimeStamp
55
+ attr_accessor :createdTimeStamp
56
+ # @attr [String] statusDateTime
57
+ attr_accessor :statusDateTime
58
+ # @attr [Integer] documentsCount
59
+ attr_accessor :documentsCount
60
+ # @attr [Integer] documentsPages
61
+ attr_accessor :documentsPages
62
+ # @attr [Integer] participantsCount
63
+ attr_accessor :participantsCount
64
+ # @attr [Array] fieldsInFinalFileName
65
+ attr_accessor :fieldsInFinalFileName
66
+ # @attr [Boolean] canParticipantDownloadForm
67
+ attr_accessor :canParticipantDownloadForm
68
+ # @attr [Symbol] status
69
+ attr_accessor :status
70
+
71
+ # Human-readable accessors
72
+ alias_method :owner_guid, :ownerGuid
73
+ alias_method :owner_guid=, :ownerGuid=
74
+ alias_method :template_guid, :templateGuid
75
+ alias_method :template_guid=, :templateGuid=
76
+ alias_method :created_time_stamp, :createdTimeStamp
77
+ alias_method :created_time_stamp=, :createdTimeStamp=
78
+ alias_method :status_date_time, :statusDateTime
79
+ alias_method :status_date_time=, :statusDateTime=
80
+ alias_method :documents_count, :documentsCount
81
+ alias_method :documents_count=, :documentsCount=
82
+ alias_method :documents_pages, :documentsPages
83
+ alias_method :documents_pages=, :documentsPages=
84
+ alias_method :participants_count, :participantsCount
85
+ alias_method :participants_count=, :participantsCount=
86
+ alias_method :fields_in_final_file_name, :fieldsInFinalFileName
87
+ alias_method :fields_in_final_file_name=, :fieldsInFinalFileName=
88
+ alias_method :can_participant_download_form, :canParticipantDownloadForm
89
+ alias_method :can_participant_download_form=, :canParticipantDownloadForm=
90
+
91
+ #
92
+ # Converts status to human-readable format.
93
+ # @return [Symbol]
94
+ #
95
+ def status
96
+ STATUSES.invert[@status]
97
+ end
98
+
99
+ #
100
+ # Creates form.
101
+ #
102
+ # @example
103
+ # template = GroupDocs::Singature::Template!.get!('09662aab7187f31444476288ebaf7da4')
104
+ # form = GroupDocs::Signature::Form.new
105
+ # form.name = "Form"
106
+ # form.create! template
107
+ #
108
+ # @param [GroupDocs::Signature::Template] template
109
+ # @param [Hash] options Hash of options
110
+ # @option options [Integer] :assembly_id Assembly GUID to use
111
+ # @param [Hash] access Access credentials
112
+ # @option access [String] :client_id
113
+ # @option access [String] :private_key
114
+ # @raise [ArgumentError] if template is not GroupDocs::Signature::Template
115
+ #
116
+ def create!(template, options = {}, access = {})
117
+ template.is_a?(GroupDocs::Signature::Template) or raise ArgumentError,
118
+ "Template should be GroupDocs::Signature::Template object, received: #{template.inspect}"
119
+
120
+ assembly_id = options.delete(:assembly_id)
121
+ options[:assemblyId] = assembly_id if assembly_id
122
+
123
+ api = Api::Request.new do |request|
124
+ request[:access] = access
125
+ request[:method] = :POST
126
+ request[:path] = '/signature/{{client_id}}/form'
127
+ request[:request_body] = to_hash
128
+ end
129
+ api.add_params(options.merge(name: name, templateId: template.id))
130
+ json = api.execute!
131
+
132
+ self.id = json[:form][:id]
133
+ end
134
+
135
+ #
136
+ # Returns documents array.
137
+ #
138
+ # @param [Hash] access Access credentials
139
+ # @option access [String] :client_id
140
+ # @option access [String] :private_key
141
+ # @return [Array<GroupDocs::Document>]
142
+ #
143
+ def documents!(access = {})
144
+ json = Api::Request.new do |request|
145
+ request[:access] = access
146
+ request[:method] = :GET
147
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/documents"
148
+ end.execute!
149
+
150
+ json[:documents].map do |document|
151
+ file = Storage::File.new(guid: document[:documentId], name: document[:name])
152
+ Document.new(document.merge(file: file))
153
+ end
154
+ end
155
+
156
+ #
157
+ # Publishes form.
158
+ #
159
+ # @param [Hash] access Access credentials
160
+ # @option access [String] :client_id
161
+ # @option access [String] :private_key
162
+ #
163
+ def publish!(access = {})
164
+ Api::Request.new do |request|
165
+ request[:access] = access
166
+ request[:method] = :PUT
167
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/publish"
168
+ end.execute!
169
+ end
170
+
171
+ #
172
+ # Completes form.
173
+ #
174
+ # @param [Hash] access Access credentials
175
+ # @option access [String] :client_id
176
+ # @option access [String] :private_key
177
+ #
178
+ def complete!(access = {})
179
+ Api::Request.new do |request|
180
+ request[:access] = access
181
+ request[:method] = :PUT
182
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/complete"
183
+ end.execute!
184
+ end
185
+
186
+ #
187
+ # Archives completed form.
188
+ #
189
+ # @param [Hash] access Access credentials
190
+ # @option access [String] :client_id
191
+ # @option access [String] :private_key
192
+ #
193
+ def archive!(access = {})
194
+ Api::Request.new do |request|
195
+ request[:access] = access
196
+ request[:method] = :PUT
197
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/archive"
198
+ end.execute!
199
+ end
200
+
201
+ end # Signature::Form
202
+ end # GroupDocs