Class: Anvil::Webform
- Inherits:
-
Resources::Base
- Object
- Resources::Base
- Anvil::Webform
- Defined in:
- lib/anvil/resources/webform.rb
Instance Attribute Summary
Attributes inherited from Resources::Base
Class Method Summary collapse
-
.create(name:, fields: [], **options) ⇒ Webform
Create a new webform.
-
.find(form_eid, client: nil) ⇒ Webform
Find a webform by EID.
Instance Method Summary collapse
- #eid ⇒ Object
- #fields ⇒ Object
- #id ⇒ Object
- #name ⇒ Object
-
#reload! ⇒ Object
Reload from API.
- #slug ⇒ Object
-
#submissions(limit: 10, offset: 0) ⇒ Array<Hash>
Get submissions for this webform.
-
#submit(data: {}) ⇒ Hash
Submit data to this webform.
Methods inherited from Resources::Base
#==, build_from_response, #initialize, #inspect, list, #method_missing, #respond_to_missing?, #to_h, #to_json, with_client
Constructor Details
This class inherits a constructor from Anvil::Resources::Base
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Anvil::Resources::Base
Class Method Details
.create(name:, fields: [], **options) ⇒ Webform
Create a new webform
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/anvil/resources/webform.rb', line 72 def create(name:, fields: [], **) api_key = .delete(:api_key) client = api_key ? Client.new(api_key: api_key) : self.client payload = { name: name, fields: fields } payload[:slug] = [:slug] if [:slug] result = client.graphql(create_forge_mutation, variables: { input: payload }) raise APIError, "Failed to create webform: #{result}" unless result && result[:createForge] new(result[:createForge], client: client) end |
.find(form_eid, client: nil) ⇒ Webform
Find a webform by EID
90 91 92 93 94 95 96 97 |
# File 'lib/anvil/resources/webform.rb', line 90 def find(form_eid, client: nil) client ||= self.client result = client.graphql(forge_query, variables: { eid: form_eid }) raise NotFoundError, "Webform not found: #{form_eid}" unless result && result[:forge] new(result[:forge], client: client) end |
Instance Method Details
#eid ⇒ Object
9 10 11 |
# File 'lib/anvil/resources/webform.rb', line 9 def eid attributes[:eid] end |
#fields ⇒ Object
21 22 23 |
# File 'lib/anvil/resources/webform.rb', line 21 def fields Array(attributes[:fields]) end |
#id ⇒ Object
5 6 7 |
# File 'lib/anvil/resources/webform.rb', line 5 def id attributes[:eid] || attributes[:id] end |
#name ⇒ Object
13 14 15 |
# File 'lib/anvil/resources/webform.rb', line 13 def name attributes[:name] end |
#reload! ⇒ Object
Reload from API
59 60 61 62 63 |
# File 'lib/anvil/resources/webform.rb', line 59 def reload! refreshed = self.class.find(eid, client: client) @attributes = refreshed.attributes self end |
#slug ⇒ Object
17 18 19 |
# File 'lib/anvil/resources/webform.rb', line 17 def slug attributes[:slug] end |
#submissions(limit: 10, offset: 0) ⇒ Array<Hash>
Get submissions for this webform
44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/anvil/resources/webform.rb', line 44 def submissions(limit: 10, offset: 0) result = client.graphql(self.class.send(:submissions_query), variables: { forgeEid: eid, limit: limit, offset: offset }) if result && result[:forgeSubmissions] Array(result[:forgeSubmissions]) else [] end end |
#submit(data: {}) ⇒ Hash
Submit data to this webform
29 30 31 32 33 34 35 36 37 |
# File 'lib/anvil/resources/webform.rb', line 29 def submit(data: {}) result = client.graphql(self.class.send(:create_submission_mutation), variables: { forgeEid: eid, input: data }) raise APIError, "Failed to submit form data: #{eid}" unless result && result[:createSubmission] result[:createSubmission] end |