base-api-io 1.3.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e74548e5c837271421a840efb03a5f1628fd966d983c4c625b5e9f9cfb46030
4
- data.tar.gz: 29fb96e090096e92481bf4f5dd469cb78209b1bb0e2c10c781a30e747abfb491
3
+ metadata.gz: 2f086dfdafe3a95bac7eeae96906a961d0384c0f084362764b36255e88ef020c
4
+ data.tar.gz: 8a2e73d49677a5fa9abf2ab1361c5c0d3533cf70e26a3e13553321cae5643e23
5
5
  SHA512:
6
- metadata.gz: d7ebd5db36d69905b2865580e7af8789e62c94a81044421d80fc9eabcaeb6edd661f5ce56238bd4ac37c9d071c9c0d081820a7843adc75e8e73aad34279b04e9
7
- data.tar.gz: a0a1580044bbb747f038840f3976b75477c312add6df34d2228e13a8ef98981c50e9ddfe98e6cfb796caf5e2b7fbb68790133a5cc579bc9b97e9db393b408876
6
+ metadata.gz: 065f852cf4e48ac7ef6a535c804b8658e2948fd474e902d7d3160ef48da0c19ffb1fbc4941fffd369dcfd7e71fa7cea61ca01b60c1b9926d528375cc988af09f
7
+ data.tar.gz: ee36bec80f5c6940b9e24382da0355dcdd6eee658112bb4e2e8e8fb310347e900b0d5e4fc01e96229f7a3ffd0259dce9cc7f5d3a9c2236ef6685ea6f9789e9ac
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- base-api-io (1.3.0)
4
+ base-api-io (1.4.0)
5
5
  faraday (~> 0.15.4)
6
+ mimetype-fu (~> 0.1.2)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
@@ -17,6 +18,7 @@ GEM
17
18
  multipart-post (>= 1.2, < 3)
18
19
  hashdiff (1.0.0)
19
20
  jaro_winkler (1.5.3)
21
+ mimetype-fu (0.1.2)
20
22
  multipart-post (2.1.1)
21
23
  parallel (1.17.0)
22
24
  parser (2.6.3.0)
data/README.md CHANGED
@@ -232,6 +232,53 @@ results =
232
232
  text: 'Text')
233
233
  ```
234
234
 
235
+ ### Forms
236
+
237
+ A project can have many forms and those form can have many submissions.
238
+
239
+ The `forms` endpoint allows you to programatically create, submit and manage forms.
240
+
241
+ ```ruby
242
+ # List forms
243
+ forms = client.forms.list(page: 1, per_page: 10)
244
+ forms.items # The array of forms
245
+ forms.metadata # The metadata object containing the total count
246
+
247
+ # Create a form
248
+ form =
249
+ client.forms.create(name: 'Form')
250
+
251
+ # Get a form
252
+ form =
253
+ client.forms.get('form_id')
254
+
255
+ # Delete a form (and it's submissions)
256
+ form =
257
+ client.forms.delete('form_id')
258
+
259
+ # Submit a form
260
+ submission =
261
+ client.forms.submit(
262
+ id: 'form_id',
263
+ form: {
264
+ file: File.open('description.txt'),
265
+ key: 'value'
266
+ })
267
+
268
+ # List form submissions
269
+ submissions = client.forms.submissions(id: 'form_id', page: 1, per_page: 10)
270
+ submissions.items # The array of forms submissions
271
+ submissions.metadata # The metadata object containing the total count
272
+
273
+ # Get a submission
274
+ submission =
275
+ client.forms.get_submission('form_id', 'submission_id')
276
+
277
+ # Delete a submission
278
+ submission =
279
+ client.forms.delete_submission('form_id', 'submission_id')
280
+ ```
281
+
235
282
  ## Development
236
283
 
237
284
  This library uses [Faraday](https://lostisland.github.io/faraday/), you can run the
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.require_paths = ['lib']
27
27
 
28
28
  spec.add_dependency 'faraday', '~> 0.15.4'
29
+ spec.add_dependency 'mimetype-fu', '~> 0.1.2'
29
30
 
30
31
  spec.add_development_dependency 'bundler', '~> 1.17'
31
32
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -2,5 +2,6 @@
2
2
 
3
3
  require 'faraday'
4
4
  require 'json'
5
+ require 'mimetype_fu'
5
6
 
6
7
  require_relative 'base/client'
@@ -11,6 +11,7 @@ require_relative 'endpoints/images'
11
11
  require_relative 'endpoints/emails'
12
12
  require_relative 'endpoints/users'
13
13
  require_relative 'endpoints/files'
14
+ require_relative 'endpoints/forms'
14
15
 
15
16
  module Base
16
17
  # A client containing all the endpoints.
@@ -36,6 +37,9 @@ module Base
36
37
  # Endpoint for the files.
37
38
  attr_reader :files
38
39
 
40
+ # Endpoint for the files.
41
+ attr_reader :forms
42
+
39
43
  # Initializes a new client with an access_token and optional url.
40
44
  def initialize(access_token:, url: 'https://api.base-api.io')
41
45
  @users =
@@ -79,6 +83,12 @@ module Base
79
83
  access_token: access_token,
80
84
  url: url
81
85
  )
86
+
87
+ @forms =
88
+ Endpoints::Forms.new(
89
+ access_token: access_token,
90
+ url: url
91
+ )
82
92
  end
83
93
  end
84
94
  end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Base
4
+ module Endpoints
5
+ # This endpoint contains methods for forms.
6
+ class Forms < Endpoint
7
+ # Initializes this endpoint.
8
+ def initialize(access_token:, url:)
9
+ @path = 'forms'
10
+ super
11
+ end
12
+
13
+ # Lists the forms of a project
14
+ def list(page: 1, per_page: 10)
15
+ request do
16
+ response =
17
+ connection.get('', per_page: per_page, page: page)
18
+
19
+ parse(response.body)
20
+ end
21
+ end
22
+
23
+ # Creates a form with the given name
24
+ def create(name:)
25
+ request do
26
+ response =
27
+ connection.post('', 'name' => name)
28
+
29
+ parse(response.body)
30
+ end
31
+ end
32
+
33
+ # Returns the form with the given ID.
34
+ def get(id)
35
+ request do
36
+ response =
37
+ connection.get id
38
+
39
+ parse(response.body)
40
+ end
41
+ end
42
+
43
+ # Deletes the form with the given ID.
44
+ def delete(id)
45
+ request do
46
+ response =
47
+ connection.delete id
48
+
49
+ parse(response.body)
50
+ end
51
+ end
52
+
53
+ # Submits a new submission for the form with the given ID.
54
+ def submit(id:, form:)
55
+ request do
56
+ payload =
57
+ form.each_with_object({}) do |(key, value), memo|
58
+ memo[key] =
59
+ case value
60
+ when File, Tempfile
61
+ Faraday::UploadIO.new(
62
+ value.path,
63
+ File.mime_type?(value),
64
+ File.basename(value)
65
+ )
66
+ else
67
+ value
68
+ end
69
+ end
70
+
71
+ response =
72
+ connection.post("#{id}/submit", payload)
73
+
74
+ parse(response.body)
75
+ end
76
+ end
77
+
78
+ # Returns the submission for the form with the given ID.
79
+ def submissions(id:,
80
+ page: 1,
81
+ per_page: 10)
82
+ request do
83
+ response =
84
+ connection.get("#{id}/submissions", per_page: per_page, page: page)
85
+
86
+ parse(response.body)
87
+ end
88
+ end
89
+
90
+ # Returns the submission with the given ID of the form with the given ID.
91
+ def get_submission(id, submission_id)
92
+ request do
93
+ response =
94
+ connection.get "#{id}/submissions/#{submission_id}"
95
+
96
+ parse(response.body)
97
+ end
98
+ end
99
+
100
+ # Deletes the submission with the given ID of the form with the given ID.
101
+ def delete_submission(id, submission_id)
102
+ request do
103
+ response =
104
+ connection.delete "#{id}/submissions/#{submission_id}"
105
+
106
+ parse(response.body)
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Base
4
- VERSION = '1.3.0'
4
+ VERSION = '1.4.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: base-api-io
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gusztáv Szikszai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-03 00:00:00.000000000 Z
11
+ date: 2019-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.15.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: mimetype-fu
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.2
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +132,7 @@ files:
118
132
  - lib/base/endpoint.rb
119
133
  - lib/base/endpoints/emails.rb
120
134
  - lib/base/endpoints/files.rb
135
+ - lib/base/endpoints/forms.rb
121
136
  - lib/base/endpoints/images.rb
122
137
  - lib/base/endpoints/mailing_lists.rb
123
138
  - lib/base/endpoints/passwords.rb