fulcrum 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: '042913b24cb5329436bfbd8654dca7acfe06f78a'
4
- data.tar.gz: d9412eb5815aeb76f06a1216fbdbde3aa66be5f4
2
+ SHA256:
3
+ metadata.gz: e109e3981651935f824c5685b7e40ff48cf623a8e446ebf2d2523f5c0bf0901a
4
+ data.tar.gz: 7b0db440781edb8b8e20d07172faa41253791a050200a52ff5659fd3d04c2bab
5
5
  SHA512:
6
- metadata.gz: 93c2c1fd1c06c468459d89b8a716a3940acddbaebab3bb1e4477d755750ec9eacdf873bb0aed7db0b7afb4e01a5e21e401a1bc63bc60ab606fdf602fd5620dfa
7
- data.tar.gz: 1b5ba47cdd2ac875ad5bc870c4c1830895db1309d58b67089600240722c9fd9a3e3c16db4c10df9811d39037b10188c83658af78c1789d4493ec6aa10aed50dd
6
+ metadata.gz: 5d5c671acf8d1b0e23dac08eddbe724eed9f133e79028b455e12c10fe7e9b88c1bf3848e8c123883c97c429f29e08f9fe9439fd978ae9064ba8080ef48767881
7
+ data.tar.gz: 4fcc76118fb41b6788a79786f257de432008642f6e94ee3f44d5c799cd5b028478b6ae08f736aa6f18626d6d019b97d8858395ad2307c8efdc40011423e29a14
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## v0.8.0 (February 20, 2020)
2
+ * Add form history support (#28)
3
+
1
4
  ## v0.7.0 (April 12, 2019)
2
5
  * Add roles support (#20)
3
6
  * Add audit logs support (#13)
data/README.md CHANGED
@@ -291,6 +291,22 @@ Format can be 'json', 'geojson', 'gpx', or 'kml'.
291
291
 
292
292
 
293
293
 
294
+ ## Attachments
295
+
296
+ ### client.attachments.all(params = {})
297
+
298
+ ### client.attachments.find(id)
299
+
300
+ ### client.attachments.create(file_or_path, attributes = {})
301
+
302
+ Suggestion pass a File.open(file) to this as parameter
303
+
304
+ ### client.attachments.finalize(id)
305
+
306
+ ### client.attachments.delete(id)
307
+
308
+
309
+
294
310
  ## Changesets
295
311
 
296
312
  ### client.changesets.all(params = {})
data/fulcrum.gemspec CHANGED
@@ -16,11 +16,11 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ["lib"]
17
17
  gem.version = Fulcrum::VERSION
18
18
 
19
- gem.add_development_dependency 'rake', '~> 10.4', '>= 10.4.2'
20
- gem.add_development_dependency 'rspec', '~> 3.2', '>= 3.2.0'
21
- gem.add_development_dependency 'webmock', '~> 1.12', '>= 1.12.0'
19
+ gem.add_development_dependency 'rake'
20
+ gem.add_development_dependency 'rspec'
21
+ gem.add_development_dependency 'webmock'
22
22
 
23
- gem.add_dependency 'activesupport', '>= 4.1.0'
24
- gem.add_dependency 'faraday', '~> 0.9', '>= 0.9.1'
25
- gem.add_dependency 'faraday_middleware', '~> 0.9', '>= 0.9.1'
23
+ gem.add_dependency 'activesupport'
24
+ gem.add_dependency 'faraday'
25
+ gem.add_dependency 'faraday_middleware'
26
26
  end
@@ -0,0 +1,46 @@
1
+ module Fulcrum
2
+ class Attachment < MediaResource
3
+ include Actions::Delete
4
+
5
+ def finalize(id)
6
+ call(:post, "#{collection}/finalize", {id: id})
7
+ end
8
+
9
+ def collection
10
+ resources_name
11
+ end
12
+
13
+ def member(id)
14
+ "#{resources_name}/#{id}"
15
+ end
16
+
17
+ def find(id)
18
+ call(:get, member(id))
19
+ end
20
+
21
+ def all(params = {})
22
+ call(:get, collection, params)
23
+ end
24
+
25
+ def create(file, attrs = {})
26
+ response = call(:post, create_action, attrs)
27
+ binary_upload(file, response['url'], attrs[:file_size])
28
+ { name: attrs[:name], attachment_id: response['id'] }
29
+ end
30
+
31
+ private
32
+
33
+ def binary_upload(file, url, file_size)
34
+ connection = Faraday.new(url: url) do |faraday|
35
+ faraday.request :multipart
36
+ faraday.adapter :net_http
37
+ end
38
+ connection.put do |req|
39
+ req.headers['Content-Type'] = 'octet/stream'
40
+ req.headers['Content-Length'] = "#{file_size}"
41
+ req.headers['Content-Transfer-Encoding'] = 'binary'
42
+ req.body = Faraday::UploadIO.new(file, 'octet/stream')
43
+ end
44
+ end
45
+ end
46
+ end
@@ -120,6 +120,10 @@ module Fulcrum
120
120
  @audio ||= Fulcrum::Audio.new(self)
121
121
  end
122
122
 
123
+ def attachments
124
+ @attachment ||= Fulcrum::Attachment.new(self)
125
+ end
126
+
123
127
  def signatures
124
128
  @signatures ||= Fulcrum::Signature.new(self)
125
129
  end
data/lib/fulcrum/form.rb CHANGED
@@ -5,5 +5,12 @@ module Fulcrum
5
5
  include Actions::Create
6
6
  include Actions::Update
7
7
  include Actions::Delete
8
+
9
+ def history(id, params = {})
10
+ result = call(:get, member_action(id, 'history'), params)
11
+
12
+ Page.new(result, resources_name)
13
+ end
14
+
8
15
  end
9
16
  end
@@ -1,3 +1,3 @@
1
1
  module Fulcrum
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
data/lib/fulcrum.rb CHANGED
@@ -17,6 +17,7 @@ require 'fulcrum/actions/media_versions'
17
17
  require 'fulcrum/actions/gps_track'
18
18
  require 'fulcrum/video'
19
19
  require 'fulcrum/audio'
20
+ require 'fulcrum/attachment'
20
21
  require 'fulcrum/signature'
21
22
  require 'fulcrum/project'
22
23
  require 'fulcrum/record'
@@ -26,5 +27,4 @@ require 'fulcrum/webhook'
26
27
  require 'fulcrum/role'
27
28
  require 'fulcrum/audit_log'
28
29
  require 'fulcrum/authorization'
29
- require 'fulcrum/client'
30
-
30
+ require 'fulcrum/client'
@@ -0,0 +1,56 @@
1
+ %PDF-1.7
2
+ %����
3
+ 1 0 obj
4
+ <</Pages 2 0 R /Type/Catalog>>
5
+ endobj
6
+ 2 0 obj
7
+ <</Count 2/Kids[ 4 0 R 8 0 R ]/Type/Pages>>
8
+ endobj
9
+ 3 0 obj
10
+ <</CreationDate(D:20210803100643)/Creator(PDFium)/Producer(PDFium)>>
11
+ endobj
12
+ 4 0 obj
13
+ <</Contents 5 0 R /MediaBox[ 0 0 612 792]/Parent 2 0 R /Resources<</Font<</F1 6 0 R >>/ProcSet 7 0 R >>/Type/Page>>
14
+ endobj
15
+ 5 0 obj
16
+ <</Filter/FlateDecode/Length 311>>stream
17
+ x����j�0����[h������ɡ(��.b�Q��`ɥ��k'$�@�J��;}�β�a�(€a�}��� EIF�,a�8'.CQ��
18
+ �����Ryz������9s_S�G��V�sNrNy��r���>�d��hv}nr���A;�T�q ��V� �o�/,��
19
+ endstream
20
+ endobj
21
+ 6 0 obj
22
+ <</BaseFont/Helvetica/Encoding/WinAnsiEncoding/Name/F1/Subtype/Type1/Type/Font>>
23
+ endobj
24
+ 7 0 obj
25
+ [/PDF/Text]
26
+ endobj
27
+ 8 0 obj
28
+ <</Contents 9 0 R /MediaBox[ 0 0 612 792]/Parent 2 0 R /Resources<</Font<</F1 6 0 R >>/ProcSet 7 0 R >>/Type/Page>>
29
+ endobj
30
+ 9 0 obj
31
+ <</Filter/FlateDecode/Length 274>>stream
32
+ x����j�0����[X�1��+��Bi�^z�k�,E#v߾YE��"%�̐��f�p��^���e
33
+ V�Z³)n�{�R���&��ۙ�ъ�$ 7�
34
+ ����?ݠM{�#F;�%!�,Lg���%͹=֗x�7�$#�y�\�b8�����2r3����z�����
35
+ endstream
36
+ endobj
37
+ xref
38
+ 0 10
39
+ 0000000000 65535 f
40
+ 0000000017 00000 n
41
+ 0000000066 00000 n
42
+ 0000000129 00000 n
43
+ 0000000216 00000 n
44
+ 0000000350 00000 n
45
+ 0000000733 00000 n
46
+ 0000000832 00000 n
47
+ 0000000862 00000 n
48
+ 0000000996 00000 n
49
+ trailer
50
+ <<
51
+ /Root 1 0 R
52
+ /Info 3 0 R
53
+ /Size 10/ID[<06CD5B1232D77C2A68B8A7743652C304><06CD5B1232D77C2A68B8A7743652C304>]>>
54
+ startxref
55
+ 1342
56
+ %%EOF
@@ -0,0 +1,93 @@
1
+ require 'spec_helper'
2
+
3
+ include Support::ResourceExamples
4
+
5
+ describe Fulcrum::Attachment do
6
+ let(:test_file) { './spec/data/test.pdf' }
7
+
8
+ include_context 'with client'
9
+ include_context 'with media resource'
10
+ include_context 'with resource parameters'
11
+
12
+ let(:resource) { client.attachments }
13
+
14
+ include_examples 'finds resource'
15
+ include_examples 'deletes resource'
16
+
17
+ let(:create_url) do
18
+ "#{client.url}/#{resource.create_action}"
19
+ end
20
+
21
+ describe '#all' do
22
+ let(:list_response) do
23
+ data = {}
24
+ data["form_id"] = {}
25
+ data.to_json
26
+ end
27
+
28
+ it 'lists all attachments' do
29
+ stub_request(:get, create_url)
30
+ .to_return(status: 200, body: list_response,
31
+ headers: {"Content-Type" => "application/json"})
32
+
33
+ resources = resource.all
34
+
35
+ expect(client.response.status).to eq(200)
36
+
37
+ expect(resources).to be_a(Hash)
38
+ end
39
+ end
40
+
41
+ describe '#create' do
42
+ let(:ws_url) do
43
+ 'https://fulcrumapp.s3.amazonaws.com/attachments/example'
44
+ end
45
+
46
+ let(:attrs) do
47
+ { "name": "Test",
48
+ "owners": [ {
49
+ "type": "form",
50
+ "id": "12345"
51
+ } ] }
52
+ end
53
+
54
+ let(:response) do
55
+ data = {}
56
+ data['url'] = ws_url
57
+ data['id'] = "123"
58
+ data.to_json
59
+ end
60
+
61
+ let(:create_parameters) { [ File.open(test_file) , attrs ] }
62
+
63
+ it 'creates attachment data' do
64
+ stub_request(:post, create_url)
65
+ .with(body: attrs)
66
+ .to_return(status: 200, body: response,
67
+ headers: {"Content-Type" => "application/json"})
68
+ stub_request(:put, ws_url)
69
+ .to_return(status: 200,
70
+ headers: {"Content-Type" => "application/json"})
71
+
72
+ object = resource.create(*create_parameters)
73
+
74
+ expect(client.response.status).to eq(200)
75
+
76
+ expect(object[:name]).to eq(attrs[:name])
77
+
78
+ expect(object[:attachment_id]).to eq(JSON.parse(response)['id'])
79
+ end
80
+ end
81
+
82
+ describe '#finalize' do
83
+ it 'finalizes the attachment' do
84
+ stub_request(:post, "#{create_url}/finalize")
85
+ .to_return(status: 201,
86
+ headers: {"Content-Type" => "application/json"})
87
+
88
+ object = resource.finalize(resource_id)
89
+
90
+ expect(client.response.status).to eq(201)
91
+ end
92
+ end
93
+ end
@@ -13,4 +13,24 @@ describe Fulcrum::Form do
13
13
  include_examples 'creates resource'
14
14
  include_examples 'updates resource'
15
15
  include_examples 'deletes resource'
16
+
17
+ it 'lists all resources' do
18
+ url = "#{client.url}/forms/8ae9115-0430-459e-a1b7-7ac46011e0ce/history.json"
19
+
20
+ stub_request(:get, url)
21
+ .to_return(status: 200, body: list_response,
22
+ headers: {"Content-Type" => "application/json"})
23
+
24
+ page = resource.history('8ae9115-0430-459e-a1b7-7ac46011e0ce')
25
+
26
+ expect(client.response.status).to eq(200)
27
+
28
+ expect(page).to respond_to(:current_page)
29
+ expect(page).to respond_to(:total_pages)
30
+ expect(page).to respond_to(:total_count)
31
+ expect(page).to respond_to(:per_page)
32
+
33
+ expect(page.objects).to be_a(Array)
34
+ end
35
+
16
36
  end
metadata CHANGED
@@ -1,129 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fulcrum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fulcrum
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-20 00:00:00.000000000 Z
11
+ date: 2022-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '10.4'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
- version: 10.4.2
19
+ version: '0'
23
20
  type: :development
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '10.4'
30
24
  - - ">="
31
25
  - !ruby/object:Gem::Version
32
- version: 10.4.2
26
+ version: '0'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: rspec
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '3.2'
40
31
  - - ">="
41
32
  - !ruby/object:Gem::Version
42
- version: 3.2.0
33
+ version: '0'
43
34
  type: :development
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
46
37
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '3.2'
50
38
  - - ">="
51
39
  - !ruby/object:Gem::Version
52
- version: 3.2.0
40
+ version: '0'
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: webmock
55
43
  requirement: !ruby/object:Gem::Requirement
56
44
  requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '1.12'
60
45
  - - ">="
61
46
  - !ruby/object:Gem::Version
62
- version: 1.12.0
47
+ version: '0'
63
48
  type: :development
64
49
  prerelease: false
65
50
  version_requirements: !ruby/object:Gem::Requirement
66
51
  requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '1.12'
70
52
  - - ">="
71
53
  - !ruby/object:Gem::Version
72
- version: 1.12.0
54
+ version: '0'
73
55
  - !ruby/object:Gem::Dependency
74
56
  name: activesupport
75
57
  requirement: !ruby/object:Gem::Requirement
76
58
  requirements:
77
59
  - - ">="
78
60
  - !ruby/object:Gem::Version
79
- version: 4.1.0
61
+ version: '0'
80
62
  type: :runtime
81
63
  prerelease: false
82
64
  version_requirements: !ruby/object:Gem::Requirement
83
65
  requirements:
84
66
  - - ">="
85
67
  - !ruby/object:Gem::Version
86
- version: 4.1.0
68
+ version: '0'
87
69
  - !ruby/object:Gem::Dependency
88
70
  name: faraday
89
71
  requirement: !ruby/object:Gem::Requirement
90
72
  requirements:
91
- - - "~>"
92
- - !ruby/object:Gem::Version
93
- version: '0.9'
94
73
  - - ">="
95
74
  - !ruby/object:Gem::Version
96
- version: 0.9.1
75
+ version: '0'
97
76
  type: :runtime
98
77
  prerelease: false
99
78
  version_requirements: !ruby/object:Gem::Requirement
100
79
  requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.9'
104
80
  - - ">="
105
81
  - !ruby/object:Gem::Version
106
- version: 0.9.1
82
+ version: '0'
107
83
  - !ruby/object:Gem::Dependency
108
84
  name: faraday_middleware
109
85
  requirement: !ruby/object:Gem::Requirement
110
86
  requirements:
111
- - - "~>"
112
- - !ruby/object:Gem::Version
113
- version: '0.9'
114
87
  - - ">="
115
88
  - !ruby/object:Gem::Version
116
- version: 0.9.1
89
+ version: '0'
117
90
  type: :runtime
118
91
  prerelease: false
119
92
  version_requirements: !ruby/object:Gem::Requirement
120
93
  requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '0.9'
124
94
  - - ">="
125
95
  - !ruby/object:Gem::Version
126
- version: 0.9.1
96
+ version: '0'
127
97
  description: Fulcrum API
128
98
  email:
129
99
  - info@fulcrumapp.com
@@ -147,6 +117,7 @@ files:
147
117
  - lib/fulcrum/actions/list.rb
148
118
  - lib/fulcrum/actions/media_versions.rb
149
119
  - lib/fulcrum/actions/update.rb
120
+ - lib/fulcrum/attachment.rb
150
121
  - lib/fulcrum/audio.rb
151
122
  - lib/fulcrum/audit_log.rb
152
123
  - lib/fulcrum/authorization.rb
@@ -172,7 +143,9 @@ files:
172
143
  - spec/data/test.jpg
173
144
  - spec/data/test.m4a
174
145
  - spec/data/test.mp4
146
+ - spec/data/test.pdf
175
147
  - spec/data/test.png
148
+ - spec/lib/attachment_spec.rb
176
149
  - spec/lib/audio_spec.rb
177
150
  - spec/lib/audit_log_spec.rb
178
151
  - spec/lib/authorization_spec.rb
@@ -195,7 +168,7 @@ homepage: https://github.com/fulcrumapp/fulcrum-ruby
195
168
  licenses:
196
169
  - MIT
197
170
  metadata: {}
198
- post_install_message:
171
+ post_install_message:
199
172
  rdoc_options: []
200
173
  require_paths:
201
174
  - lib
@@ -210,9 +183,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
183
  - !ruby/object:Gem::Version
211
184
  version: '0'
212
185
  requirements: []
213
- rubyforge_project:
214
- rubygems_version: 2.5.2.3
215
- signing_key:
186
+ rubygems_version: 3.3.11
187
+ signing_key:
216
188
  specification_version: 4
217
189
  summary: Fulcrum API client for ruby
218
190
  test_files:
@@ -220,7 +192,9 @@ test_files:
220
192
  - spec/data/test.jpg
221
193
  - spec/data/test.m4a
222
194
  - spec/data/test.mp4
195
+ - spec/data/test.pdf
223
196
  - spec/data/test.png
197
+ - spec/lib/attachment_spec.rb
224
198
  - spec/lib/audio_spec.rb
225
199
  - spec/lib/audit_log_spec.rb
226
200
  - spec/lib/authorization_spec.rb