zendesk_apps_support 4.23.0 → 4.25.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
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b29599afad604e6a6adae9e02073bd95466b9e33
|
4
|
+
data.tar.gz: ee73401ed11aab0e76f126532e95f535d6c07305
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d0a284d1868be7d4af01943e2db275291d3505585df2ca322cf5e97d2776137e1c224e4220d215cc96da6312e424ebb0e266c553e6793c7b4c304d301608ca7
|
7
|
+
data.tar.gz: b556b25327365c6066954be876a3966bbc9b9ec972754aa8afac61c4aba096dddd6f0776bb291cbd37d55439ed1b0025a4f3ae521883c251f3ad9d33e8550e35
|
data/config/locales/en.yml
CHANGED
@@ -46,6 +46,9 @@ en:
|
|
46
46
|
requirements_not_json: requirements.json is not proper JSON. %{errors}
|
47
47
|
excessive_requirements: The requirements.json file contains too many requirements.
|
48
48
|
The current limit is %{max} requirements. This app has %{count} requirements.
|
49
|
+
excessive_custom_objects_requirements: The requirements.json file contains
|
50
|
+
too many custom objects requirements. The current limit is %{max} requirements.
|
51
|
+
This app has %{count} requirements.
|
49
52
|
missing_required_fields: 'Missing required fields in requirements.json:
|
50
53
|
"%{field}" is required in "%{identifier}"'
|
51
54
|
duplicate_requirements:
|
@@ -62,6 +65,9 @@ en:
|
|
62
65
|
invalid_cr_schema_keys:
|
63
66
|
one: 'Custom resources schema contains an invalid key: %{invalid_keys}'
|
64
67
|
other: 'Custom resources schema contains invalid keys: %{invalid_keys}'
|
68
|
+
invalid_custom_objects_schema_keys:
|
69
|
+
one: 'Custom objects schema contains an invalid key: %{invalid_keys}'
|
70
|
+
other: 'Custom objects schema contains invalid keys: %{invalid_keys}'
|
65
71
|
banner:
|
66
72
|
invalid_format: Banner image must be a PNG file.
|
67
73
|
invalid_size: Invalid banner image dimensions. Must be %{required_banner_width}x%{required_banner_height}px.
|
@@ -101,6 +101,11 @@ parts:
|
|
101
101
|
key: "txt.apps.admin.error.app_build.excessive_requirements"
|
102
102
|
title: "App builder job: requirements file contains too many requirements"
|
103
103
|
value: "The requirements.json file contains too many requirements. The current limit is %{max} requirements. This app has %{count} requirements."
|
104
|
+
- translation:
|
105
|
+
key: "txt.apps.admin.error.app_build.excessive_custom_objects_requirements"
|
106
|
+
title: "App builder job: requirements file contains too many custom objects requirements. Leave requirements.json as is (do not localize)"
|
107
|
+
value: "The requirements.json file contains too many custom objects requirements. The current limit is %{max} requirements. This app has %{count} requirements."
|
108
|
+
screenshot: "https://drive.google.com/open?id=18yac8rV7kMe5qm49ERVFVCA7WOZl8vcP"
|
104
109
|
- translation:
|
105
110
|
key: "txt.apps.admin.error.app_build.missing_required_fields"
|
106
111
|
title: "App builder job: required key missing in requirements, e.g. \"title\" is required in \"my_custom_email_target\""
|
@@ -140,11 +145,23 @@ parts:
|
|
140
145
|
title: "App builder job: custom resources schema contains invalid key error"
|
141
146
|
value: "Custom resources schema contains an invalid key: %{invalid_keys}"
|
142
147
|
screenshot: "https://drive.google.com/open?id=1-CHVDcmr5mf1DKKeWqiOuGWrW25gDY4y"
|
148
|
+
obsolete: "2020-01-01"
|
143
149
|
- translation:
|
144
150
|
key: "txt.apps.admin.error.app_build.invalid_cr_schema_keys.other"
|
145
151
|
title: "App builder job: custom resources schema contains invalid keys error"
|
146
152
|
value: "Custom resources schema contains invalid keys: %{invalid_keys}"
|
147
153
|
screenshot: "https://drive.google.com/open?id=1iEx7f7PYnum_qDQESD3Gz2PwLDza3zI0"
|
154
|
+
obsolete: "2020-01-01"
|
155
|
+
- translation:
|
156
|
+
key: "txt.apps.admin.error.app_build.invalid_custom_objects_schema_keys.one"
|
157
|
+
title: "App builder job: custom objects schema contains invalid key error"
|
158
|
+
value: "Custom objects schema contains an invalid key: %{invalid_keys}"
|
159
|
+
screenshot: "https://drive.google.com/open?id=1-CHVDcmr5mf1DKKeWqiOuGWrW25gDY4y"
|
160
|
+
- translation:
|
161
|
+
key: "txt.apps.admin.error.app_build.invalid_custom_objects_schema_keys.other"
|
162
|
+
title: "App builder job: custom objects schema contains invalid keys error"
|
163
|
+
value: "Custom objects schema contains invalid keys: %{invalid_keys}"
|
164
|
+
screenshot: "https://drive.google.com/open?id=1iEx7f7PYnum_qDQESD3Gz2PwLDza3zI0"
|
148
165
|
- translation:
|
149
166
|
key: "txt.apps.admin.error.app_build.banner.invalid_format"
|
150
167
|
title: "App builder job: Banner image invalid format error"
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module ZendeskAppsSupport
|
4
4
|
class AppRequirement
|
5
|
-
TYPES = %w[automations channel_integrations
|
5
|
+
TYPES = %w[automations channel_integrations custom_objects macros targets views ticket_fields
|
6
6
|
triggers user_fields organization_fields].freeze
|
7
7
|
end
|
8
8
|
end
|
@@ -4,6 +4,7 @@ module ZendeskAppsSupport
|
|
4
4
|
module Validations
|
5
5
|
module Requirements
|
6
6
|
MAX_REQUIREMENTS = 5000
|
7
|
+
MAX_CUSTOM_OBJECTS_REQUIREMENTS = 50
|
7
8
|
|
8
9
|
class << self
|
9
10
|
def call(package)
|
@@ -24,9 +25,10 @@ module ZendeskAppsSupport
|
|
24
25
|
[].tap do |errors|
|
25
26
|
errors << invalid_requirements_types(requirements)
|
26
27
|
errors << excessive_requirements(requirements)
|
28
|
+
errors << excessive_custom_objects_requirements(requirements)
|
27
29
|
errors << invalid_channel_integrations(requirements)
|
28
30
|
errors << invalid_custom_fields(requirements)
|
29
|
-
errors <<
|
31
|
+
errors << invalid_custom_objects(requirements)
|
30
32
|
errors << missing_required_fields(requirements)
|
31
33
|
errors.flatten!
|
32
34
|
errors.compact!
|
@@ -44,9 +46,9 @@ module ZendeskAppsSupport
|
|
44
46
|
def missing_required_fields(requirements)
|
45
47
|
[].tap do |errors|
|
46
48
|
requirements.each do |requirement_type, requirement|
|
47
|
-
next if %w[channel_integrations
|
49
|
+
next if %w[channel_integrations custom_objects].include? requirement_type
|
48
50
|
requirement.each do |identifier, fields|
|
49
|
-
next if fields.include?
|
51
|
+
next if fields.nil? || fields.include?('title')
|
50
52
|
errors << ValidationError.new(:missing_required_fields,
|
51
53
|
field: 'title',
|
52
54
|
identifier: identifier)
|
@@ -56,10 +58,23 @@ module ZendeskAppsSupport
|
|
56
58
|
end
|
57
59
|
|
58
60
|
def excessive_requirements(requirements)
|
59
|
-
count = requirements.values.map
|
61
|
+
count = requirements.values.map do |req|
|
62
|
+
req.is_a?(Hash) ? req.values : req
|
63
|
+
end.flatten.size
|
60
64
|
ValidationError.new(:excessive_requirements, max: MAX_REQUIREMENTS, count: count) if count > MAX_REQUIREMENTS
|
61
65
|
end
|
62
66
|
|
67
|
+
def excessive_custom_objects_requirements(requirements)
|
68
|
+
custom_objects = requirements['custom_objects']
|
69
|
+
return unless custom_objects
|
70
|
+
|
71
|
+
count = custom_objects.values.flatten.size
|
72
|
+
if count > MAX_CUSTOM_OBJECTS_REQUIREMENTS
|
73
|
+
ValidationError.new(:excessive_custom_objects_requirements, max: MAX_CUSTOM_OBJECTS_REQUIREMENTS,
|
74
|
+
count: count)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
63
78
|
def invalid_custom_fields(requirements)
|
64
79
|
user_fields = requirements['user_fields']
|
65
80
|
organization_fields = requirements['organization_fields']
|
@@ -92,23 +107,26 @@ module ZendeskAppsSupport
|
|
92
107
|
end
|
93
108
|
end
|
94
109
|
|
95
|
-
def
|
96
|
-
|
97
|
-
return
|
98
|
-
|
110
|
+
def invalid_custom_objects(requirements)
|
111
|
+
custom_objects = requirements['custom_objects']
|
112
|
+
return if custom_objects.nil?
|
113
|
+
|
99
114
|
[].tap do |errors|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
count: invalid_keys.length)
|
115
|
+
unless custom_objects.key?('custom_object_types')
|
116
|
+
errors << ValidationError.new(:missing_required_fields,
|
117
|
+
field: 'custom_object_types',
|
118
|
+
identifier: 'custom_objects')
|
105
119
|
end
|
106
120
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
121
|
+
valid_schema = {
|
122
|
+
'custom_object_types' => %w[key schema],
|
123
|
+
'custom_object_relationship_types' => %w[key source target]
|
124
|
+
}
|
125
|
+
|
126
|
+
valid_schema.keys.each do |requirement_type|
|
127
|
+
(custom_objects[requirement_type] || []).each do |requirement|
|
128
|
+
validate_custom_objects_keys(requirement.keys, valid_schema[requirement_type], requirement_type, errors)
|
129
|
+
end
|
112
130
|
end
|
113
131
|
end
|
114
132
|
end
|
@@ -121,6 +139,15 @@ module ZendeskAppsSupport
|
|
121
139
|
count: invalid_types.length)
|
122
140
|
end
|
123
141
|
end
|
142
|
+
|
143
|
+
def validate_custom_objects_keys(keys, expected_keys, identifier, errors = [])
|
144
|
+
missing_keys = expected_keys - keys
|
145
|
+
missing_keys.each do |key|
|
146
|
+
errors << ValidationError.new(:missing_required_fields,
|
147
|
+
field: key,
|
148
|
+
identifier: identifier)
|
149
|
+
end
|
150
|
+
end
|
124
151
|
end
|
125
152
|
end
|
126
153
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zendesk_apps_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.25.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James A. Rosen
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2019-
|
14
|
+
date: 2019-11-14 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: i18n
|