From db40642ea8e9e526e9c8747fcdb6bedf651f4b74 Mon Sep 17 00:00:00 2001 From: "Daniel (dB.) Doubrovkine" Date: Tue, 30 Sep 2025 07:26:15 -0400 Subject: [PATCH] Re-added common errors. --- .rubocop_todo.yml | 4 +-- methods/_errors/common.json | 32 ++++++++++++++++++++++++ tasks/lib/slack_api/methods_generator.rb | 6 ++++- tasks/methods.rake | 5 +++- 4 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 methods/_errors/common.json diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 3b050322..104df33c 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2025-09-21 15:55:34 UTC using RuboCop version 1.80.2. +# on 2025-09-30 11:28:27 UTC using RuboCop version 1.80.2. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new @@ -20,7 +20,7 @@ Metrics/BlockLength: # Offense count: 1 # Configuration parameters: CountComments, CountAsOne. Metrics/ClassLength: - Max: 132 + Max: 135 # Offense count: 2 # Configuration parameters: AllowedMethods, AllowedPatterns. diff --git a/methods/_errors/common.json b/methods/_errors/common.json new file mode 100644 index 00000000..d0e4f225 --- /dev/null +++ b/methods/_errors/common.json @@ -0,0 +1,32 @@ +{ + "errors": { + "ratelimited": "The request has been ratelimited. Refer to the Retry-After header for when to retry the request.", + "unknown_method": "This method is currently not available.", + "access_denied": "Access to a resource specified in the request is denied.", + "account_inactive": "Authentication token is for a deleted user or workspace when using a bot token.", + "deprecated_endpoint": "The endpoint has been deprecated.", + "ekm_access_denied": "Administrators have suspended the ability to post a message.", + "enterprise_is_restricted": "The method cannot be called from an Enterprise.", + "is_bot": "This method cannot be called by a legacy bot.", + "method_deprecated": "The method has been deprecated.", + "missing_scope": "The token used is not granted the specific scope permissions required to complete this request.", + "not_allowed_token_type": "The token type used in this request is not allowed.", + "not_authed": "No authentication token provided.", + "no_permission": "The workspace token used in this request does not have the permissions necessary to complete the request. Make sure your app is a member of the conversation it's attempting to post a message to.", + "org_login_required": "The workspace is undergoing an enterprise migration and will not be available until migration is complete.", + "token_expired": "Authentication token has expired.", + "token_revoked": "Authentication token is for a deleted user or workspace or the app has been removed when using a user token.", + "two_factor_setup_required": "Two factor setup is required.", + "accesslimited": "Access to this method is limited on the current network.", + "fatal_error": "The server could not complete your operation(s) without encountering a catastrophic error. It's possible some aspect of the operation succeeded before the error was raised.", + "invalid_arg_name": "The method was passed an argument whose name falls outside the bounds of accepted or expected values. This includes very long names and names with non-alphanumeric characters other than _. If you get this error, it is typically an indication that you have made a very malformed API call.", + "invalid_array_arg": "The method was passed an array as an argument. Please only input valid strings.", + "invalid_charset": "The method was called via a POST request, but the charset specified in the Content-Type header was invalid. Valid charset names are: utf-8 iso-8859-1.", + "invalid_form_data": "The method was called via a POST request with Content-Type application/x-www-form-urlencoded or multipart/form-data, but the form data was either missing or syntactically invalid.", + "invalid_post_type": "The method was called via a POST request, but the specified Content-Type was invalid. Valid types are: application/json application/x-www-form-urlencoded multipart/form-data text/plain.", + "missing_post_type": "The method was called via a POST request and included a data payload, but the request did not include a Content-Type header.", + "request_timeout": "The method was called via a POST request, but the POST data was either missing or truncated.", + "service_unavailable": "The service is temporarily unavailable.", + "team_added_to_org": "The workspace associated with your request is currently undergoing migration to an Enterprise Organization. Web API and other platform operations will be intermittently unavailable until the transition is complete." + } +} \ No newline at end of file diff --git a/tasks/lib/slack_api/methods_generator.rb b/tasks/lib/slack_api/methods_generator.rb index 453628d6..e7a35058 100644 --- a/tasks/lib/slack_api/methods_generator.rb +++ b/tasks/lib/slack_api/methods_generator.rb @@ -32,6 +32,10 @@ def generate! private + def common_errors + @common_errors ||= JSON.load_file('methods/_errors/common.json')['errors'] + end + def process_method(data) args, fields = parse_args(data) @@ -45,7 +49,7 @@ def process_method(data) desc: strip_markdown(data['desc']), args: args, response: response, - errors: errors + errors: common_errors.merge(errors).sort.to_h }.merge(fields) patch_filename = "methods/_patches/#{data['group']}/#{data['name']}.json" diff --git a/tasks/methods.rake b/tasks/methods.rake index 0b39091f..ee502cc8 100644 --- a/tasks/methods.rake +++ b/tasks/methods.rake @@ -7,7 +7,10 @@ namespace :api do task :validate do schema = File.read('schemas/methods.json') validator = SlackApi::SpecValidator.new(schema) - Dir.glob('methods/**/*.json').grep_v(%r{/_patches\b}).each do |file| + Dir.glob('methods/**/*.json') + .grep_v(%r{/_patches\b}) + .grep_v(%r{/_errors\b}) + .each do |file| puts file abort "Invalid file format: #{file}" unless validator.valid?(file) end