From 0eecc44a40da9263816c6ecbdcb7a662e20aecc6 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:22:29 +0530 Subject: [PATCH 01/21] sca-scan.yml From 06701295ef13a68d217e080e9901992c78874b1c Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:22:40 +0530 Subject: [PATCH 02/21] jira.yml --- .github/workflows/jira.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index caa4bbd..250abc7 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -21,7 +21,7 @@ jobs: project: ${{ secrets.JIRA_PROJECT }} issuetype: ${{ secrets.JIRA_ISSUE_TYPE }} summary: | - ${{ github.event.pull_request.title }} + Snyk | Vulnerability | ${{ github.event.repository.name }} | ${{ github.event.pull_request.title }} description: | PR: ${{ github.event.pull_request.html_url }} From 372ab3dd4af822087b6b5764f478d8bcfd08ae4e Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:22:40 +0530 Subject: [PATCH 03/21] sast-scan.yml From d14789a1c7a804da4c61856a386f00783dcdbd20 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:22:42 +0530 Subject: [PATCH 04/21] codeql-analysis.yml From 10485352f5f9b24cb3b9b395e6606019947e44db Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:22:45 +0530 Subject: [PATCH 05/21] Updated codeowners --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 0773923..1be7e0d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1 @@ -* @contentstack/security-admin \ No newline at end of file +* @contentstack/security-admin From 9c5ad9cf0552a7ddfa28a85e9d86b7ea289c9059 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:49:55 +0530 Subject: [PATCH 06/21] policy-scan.yml --- .github/workflows/policy-scan.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/policy-scan.yml diff --git a/.github/workflows/policy-scan.yml b/.github/workflows/policy-scan.yml new file mode 100644 index 0000000..13bd362 --- /dev/null +++ b/.github/workflows/policy-scan.yml @@ -0,0 +1,27 @@ +name: Checks the security policy and configurations +on: + pull_request: + types: [opened, synchronize, reopened] +jobs: + security-policy: + if: github.event.repository.visibility == 'public' + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@master + - name: Checks for SECURITY.md policy file + run: | + if ! [[ -f "SECURITY.md" || -f ".github/SECURITY.md" ]]; then exit 1; fi + security-license: + if: github.event.repository.visibility == 'public' + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@master + - name: Checks for License file + run: | + if ! [[ -f "LICENSE" || -f "License.txt" || -f "LICENSE.md" ]]; then exit 1; fi \ No newline at end of file From 2446d4164d9291b97433d7495e64093c4d49f1b8 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:50:04 +0530 Subject: [PATCH 07/21] issues-jira.yml --- .github/workflows/issues-jira.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/issues-jira.yml diff --git a/.github/workflows/issues-jira.yml b/.github/workflows/issues-jira.yml new file mode 100644 index 0000000..7bf0469 --- /dev/null +++ b/.github/workflows/issues-jira.yml @@ -0,0 +1,31 @@ +name: Create Jira Ticket for Github Issue + +on: + issues: + types: [opened] + +jobs: + issue-jira: + runs-on: ubuntu-latest + steps: + + - name: Login to Jira + uses: atlassian/gajira-login@master + env: + JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} + JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + + - name: Create Jira Issue + id: create_jira + uses: atlassian/gajira-create@master + with: + project: ${{ secrets.JIRA_PROJECT }} + issuetype: ${{ secrets.JIRA_ISSUE_TYPE }} + summary: Github | Issue | ${{ github.event.repository.name }} | ${{ github.event.issue.title }} + description: | + *GitHub Issue:* ${{ github.event.issue.html_url }} + + *Description:* + ${{ github.event.issue.body }} + fields: "${{ secrets.ISSUES_JIRA_FIELDS }}" \ No newline at end of file From 276acd190ead605bac4d2be1fb0fda34c16a2db5 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:50:05 +0530 Subject: [PATCH 08/21] Delete jira.yml --- .github/workflows/jira.yml | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 .github/workflows/jira.yml diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml deleted file mode 100644 index 250abc7..0000000 --- a/.github/workflows/jira.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Create JIRA ISSUE -on: - pull_request: - types: [opened] -jobs: - security-jira: - if: ${{ github.actor == 'dependabot[bot]' || github.actor == 'snyk-bot' || contains(github.event.pull_request.head.ref, 'snyk-fix-') || contains(github.event.pull_request.head.ref, 'snyk-upgrade-')}} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Login into JIRA - uses: atlassian/gajira-login@master - env: - JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} - JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} - JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} - - name: Create a JIRA Issue - id: create - uses: atlassian/gajira-create@master - with: - project: ${{ secrets.JIRA_PROJECT }} - issuetype: ${{ secrets.JIRA_ISSUE_TYPE }} - summary: | - Snyk | Vulnerability | ${{ github.event.repository.name }} | ${{ github.event.pull_request.title }} - description: | - PR: ${{ github.event.pull_request.html_url }} - - fields: "${{ secrets.JIRA_FIELDS }}" - - name: Transition issue - uses: atlassian/gajira-transition@v3 - with: - issue: ${{ steps.create.outputs.issue }} - transition: ${{ secrets.JIRA_TRANSITION }} From a6ac380ea23b9330427822ce2b3a8ba26d6f8fd4 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:50:06 +0530 Subject: [PATCH 09/21] Delete sast-scan.yml --- .github/workflows/sast-scan.yml | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .github/workflows/sast-scan.yml diff --git a/.github/workflows/sast-scan.yml b/.github/workflows/sast-scan.yml deleted file mode 100644 index 3b9521a..0000000 --- a/.github/workflows/sast-scan.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: SAST Scan -on: - pull_request: - types: [opened, synchronize, reopened] -jobs: - security-sast: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Semgrep Scan - run: docker run -v /var/run/docker.sock:/var/run/docker.sock -v "${PWD}:/src" returntocorp/semgrep semgrep scan --config auto \ No newline at end of file From 4c6dfea3fec4b5a47a355f1f7da8d3473a973118 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:50:08 +0530 Subject: [PATCH 10/21] codeql-analysis.yml From 1a9d128e91958a3a6a7ebc477f658a51b47e355a Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:50:11 +0530 Subject: [PATCH 11/21] Updated codeowners From f6e4b5f5054ee2c02b3351dc53003ad04dc6e086 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 23 Apr 2025 21:41:46 +0530 Subject: [PATCH 12/21] policy-scan.yml --- .github/workflows/policy-scan.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/policy-scan.yml b/.github/workflows/policy-scan.yml index 13bd362..ff25923 100644 --- a/.github/workflows/policy-scan.yml +++ b/.github/workflows/policy-scan.yml @@ -24,4 +24,23 @@ jobs: - uses: actions/checkout@master - name: Checks for License file run: | - if ! [[ -f "LICENSE" || -f "License.txt" || -f "LICENSE.md" ]]; then exit 1; fi \ No newline at end of file + expected_license_files=("LICENSE" "LICENSE.txt" "LICENSE.md" "License.txt") + license_file_found=false + current_year=$(date +"%Y") + + for license_file in "${expected_license_files[@]}"; do + if [ -f "$license_file" ]; then + license_file_found=true + # check the license file for the current year, if not exists, exit with error + if ! grep -q "$current_year" "$license_file"; then + echo "License file $license_file does not contain the current year." + exit 2 + fi + break + fi + done + + if [ "$license_file_found" = false ]; then + echo "No license file found. Please add a license file to the repository." + exit 1 + fi \ No newline at end of file From da17c18a393d99acba132ce6074ab3fefed90a6f Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 5 May 2025 22:12:25 +0530 Subject: [PATCH 13/21] policy-scan.yml From 8cea81e70c6b03a65fffb991a77b6d9ed77f60a6 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 5 May 2025 22:12:33 +0530 Subject: [PATCH 14/21] issues-jira.yml From 4ff653d842e1d8baf631aec318aec5fbbb9b8259 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 5 May 2025 22:12:34 +0530 Subject: [PATCH 15/21] secrets-scan.yml --- .github/workflows/secrets-scan.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/secrets-scan.yml diff --git a/.github/workflows/secrets-scan.yml b/.github/workflows/secrets-scan.yml new file mode 100644 index 0000000..049c02f --- /dev/null +++ b/.github/workflows/secrets-scan.yml @@ -0,0 +1,29 @@ +name: Secrets Scan +on: + pull_request: + types: [opened, synchronize, reopened] +jobs: + security-secrets: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: '2' + ref: '${{ github.event.pull_request.head.ref }}' + - run: | + git reset --soft HEAD~1 + - name: Install Talisman + run: | + # Download Talisman + wget https://github.com/thoughtworks/talisman/releases/download/v1.37.0/talisman_linux_amd64 -O talisman + + # Checksum verification + checksum=$(sha256sum ./talisman | awk '{print $1}') + if [ "$checksum" != "8e0ae8bb7b160bf10c4fa1448beb04a32a35e63505b3dddff74a092bccaaa7e4" ]; then exit 1; fi + + # Make it executable + chmod +x talisman + - name: Run talisman + run: | + # Run Talisman with the pre-commit hook + ./talisman --githook pre-commit \ No newline at end of file From baae9edb3dd0f4bb7d16144d3cce3a2eab668191 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 5 May 2025 22:12:38 +0530 Subject: [PATCH 16/21] Updated codeowners From a266f0594a5fc5ec2adb0cc7235d08635badac82 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 5 May 2025 23:35:56 +0530 Subject: [PATCH 17/21] talismanrc file updated From 64709a034b3436fb9310d028d251aa9e8faefb77 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 8 Sep 2025 22:18:04 +0530 Subject: [PATCH 18/21] Delete secrets-scan.yml --- .github/workflows/secrets-scan.yml | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 .github/workflows/secrets-scan.yml diff --git a/.github/workflows/secrets-scan.yml b/.github/workflows/secrets-scan.yml deleted file mode 100644 index 049c02f..0000000 --- a/.github/workflows/secrets-scan.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Secrets Scan -on: - pull_request: - types: [opened, synchronize, reopened] -jobs: - security-secrets: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: '2' - ref: '${{ github.event.pull_request.head.ref }}' - - run: | - git reset --soft HEAD~1 - - name: Install Talisman - run: | - # Download Talisman - wget https://github.com/thoughtworks/talisman/releases/download/v1.37.0/talisman_linux_amd64 -O talisman - - # Checksum verification - checksum=$(sha256sum ./talisman | awk '{print $1}') - if [ "$checksum" != "8e0ae8bb7b160bf10c4fa1448beb04a32a35e63505b3dddff74a092bccaaa7e4" ]; then exit 1; fi - - # Make it executable - chmod +x talisman - - name: Run talisman - run: | - # Run Talisman with the pre-commit hook - ./talisman --githook pre-commit \ No newline at end of file From 9036111927f879fe8fbb88bc4386493a0768e97f Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 8 Sep 2025 22:18:07 +0530 Subject: [PATCH 19/21] Updated codeowners --- CODEOWNERS | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 1be7e0d..0496bc6 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1,11 @@ -* @contentstack/security-admin +* @contentstack/devex-pr-reviewers + +.github/workflows/sca-scan.yml @contentstack/security-admin + +.github/workflows/codeql-anaylsis.yml @contentstack/security-admin + +**/.snyk @contentstack/security-admin + +.github/workflows/policy-scan.yml @contentstack/security-admin + +.github/workflows/issues-jira.yml @contentstack/security-admin From 5094f520be6c0e3b1f1087a7f68e568071da4595 Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Mon, 15 Dec 2025 12:15:36 +0530 Subject: [PATCH 20/21] Update dependencies and improve error handling --- Gemfile.lock | 61 +++++++++++++++++++++----------------- lib/contentstack/api.rb | 6 ++-- lib/contentstack/client.rb | 16 +++++----- lib/contentstack/error.rb | 20 +++++++++++++ 4 files changed, 65 insertions(+), 38 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 505e9c9..3d71715 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,41 +8,45 @@ PATH GEM remote: https://rubygems.org/ specs: - activesupport (7.1.3.2) + activesupport (8.1.1) base64 bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + json + logger (>= 1.4.2) minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) - addressable (2.8.6) - public_suffix (>= 2.0.2, < 6.0) - base64 (0.2.0) - bigdecimal (3.1.8) - concurrent-ruby (1.2.3) - connection_pool (2.4.1) - contentstack_utils (1.2.0) - activesupport (>= 3.2) - nokogiri (~> 1.11) - crack (1.0.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + addressable (2.8.8) + public_suffix (>= 2.0.2, < 8.0) + base64 (0.3.0) + bigdecimal (3.3.1) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + contentstack_utils (1.2.1) + activesupport (>= 7.0) + nokogiri (>= 1.11) + crack (1.0.1) bigdecimal rexml - diff-lcs (1.5.1) - docile (1.4.0) - drb (2.2.1) - hashdiff (1.1.0) - i18n (1.14.5) + diff-lcs (1.6.2) + docile (1.4.1) + drb (2.2.3) + hashdiff (1.2.1) + i18n (1.14.7) concurrent-ruby (~> 1.0) - minitest (5.22.3) - mutex_m (0.2.0) - nokogiri (1.15.6-arm64-darwin) + json (2.18.0) + logger (1.7.0) + minitest (5.27.0) + nokogiri (1.18.10-arm64-darwin) racc (~> 1.4) - public_suffix (5.0.5) - racc (1.7.3) - rexml (3.2.6) + public_suffix (7.0.0) + racc (1.8.1) + rexml (3.4.4) rspec (3.10.0) rspec-core (~> 3.10.0) rspec-expectations (~> 3.10.0) @@ -56,22 +60,25 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.10.0) rspec-support (3.10.3) + securerandom (0.4.1) simplecov (0.21.2) docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) - simplecov-html (0.12.3) + simplecov-html (0.13.2) simplecov_json_formatter (0.1.4) tzinfo (2.0.6) concurrent-ruby (~> 1.0) + uri (1.1.1) webmock (3.11.3) addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.36) + yard (0.9.38) PLATFORMS arm64-darwin-22 + arm64-darwin-24 DEPENDENCIES contentstack! diff --git a/lib/contentstack/api.rb b/lib/contentstack/api.rb index f68fa5e..88f48b3 100644 --- a/lib/contentstack/api.rb +++ b/lib/contentstack/api.rb @@ -82,7 +82,7 @@ def self.fetch_retry(path, query=nil, count=0) sleep(retryDelay_in_seconds.to_i) #sleep method requires time in seconds as parameter response = fetch_retry(path, query, (count + 1)) else - raise Contentstack::Error.new(response) #Retry Limit exceeded + raise Contentstack::Error.new(Contentstack::ErrorMessages.request_failed(response)) #Retry Limit exceeded end else to_render_content(response) @@ -125,7 +125,7 @@ def self.send_request(path, q=nil) error_response = JSON.parse(response.string) error_status = {"status_code" => response.status[0], "status_message" => response.status[1]} error = error_response.merge(error_status) - raise Contentstack::Error.new(error.to_s) + raise Contentstack::Error.new(Contentstack::ErrorMessages.request_error(error)) end end @@ -165,7 +165,7 @@ def self.send_preview_request(path, q=nil) error_response = JSON.parse(response.string) error_status = {"status_code" => response.status[0], "status_message" => response.status[1]} error = error_response.merge(error_status) - raise Contentstack::Error.new(error.to_s) + raise Contentstack::Error.new(Contentstack::ErrorMessages.request_error(error)) end end diff --git a/lib/contentstack/client.rb b/lib/contentstack/client.rb index e66d5de..7d9a0cd 100644 --- a/lib/contentstack/client.rb +++ b/lib/contentstack/client.rb @@ -10,12 +10,12 @@ class Client attr_reader :region, :host # Initialize "Contentstack" Client instance def initialize(api_key, delivery_token, environment, options={}) - raise Contentstack::Error.new("Api Key is not valid") if api_key.class != String - raise Contentstack::Error.new("Api Key Field Should not be Empty") if api_key.empty? - raise Contentstack::Error.new("Delivery Token is not valid") if delivery_token.class != String - raise Contentstack::Error.new("Delivery Token Field Should not be Empty") if delivery_token.empty? - raise Contentstack::Error.new("Envirnoment Field is not valid") if environment.class != String - raise Contentstack::Error.new("Envirnoment Field Should not be Empty") if environment.empty? + raise Contentstack::Error.new(Contentstack::ErrorMessages::API_KEY_INVALID) if api_key.class != String + raise Contentstack::Error.new(Contentstack::ErrorMessages::API_KEY_REQUIRED) if api_key.empty? + raise Contentstack::Error.new(Contentstack::ErrorMessages::DELIVERY_TOKEN_INVALID) if delivery_token.class != String + raise Contentstack::Error.new(Contentstack::ErrorMessages::DELIVERY_TOKEN_REQUIRED) if delivery_token.empty? + raise Contentstack::Error.new(Contentstack::ErrorMessages::ENVIRONMENT_INVALID) if environment.class != String + raise Contentstack::Error.new(Contentstack::ErrorMessages::ENVIRONMENT_REQUIRED) if environment.empty? @region = options[:region].nil? ? Contentstack::Region::US : options[:region] # @host = options[:host].nil? ? get_default_region_hosts(@region) : options[:host] #removed for not supporting custom host with regions @host = get_host_by_region(@region, options) # Added new method for custom host support with different regions @@ -32,8 +32,8 @@ def initialize(api_key, delivery_token, environment, options={}) "retryLimit"=> @retryLimit, "errorRetry" => @errorRetry } - raise Contentstack::Error.new("Proxy URL Should not be Empty") if @proxy_details.present? && @proxy_details[:url].empty? - raise Contentstack::Error.new("Proxy Port Should not be Empty") if @proxy_details.present? && @proxy_details[:port].empty? + raise Contentstack::Error.new(Contentstack::ErrorMessages::PROXY_URL_REQUIRED) if @proxy_details.present? && @proxy_details[:url].empty? + raise Contentstack::Error.new(Contentstack::ErrorMessages::PROXY_PORT_REQUIRED) if @proxy_details.present? && @proxy_details[:port].empty? API.init_api(api_key, delivery_token, environment, @host, @branch, @live_preview, @proxy_details, retry_options) end diff --git a/lib/contentstack/error.rb b/lib/contentstack/error.rb index 8a68926..288542a 100644 --- a/lib/contentstack/error.rb +++ b/lib/contentstack/error.rb @@ -1,4 +1,24 @@ module Contentstack + # Centralized error messages for the SDK + module ErrorMessages + API_KEY_INVALID = "API Key is invalid. Provide a valid API Key and try again." + API_KEY_REQUIRED = "API Key is required. Provide a valid API Key and try again." + DELIVERY_TOKEN_INVALID = "Delivery Token is invalid. Provide a valid Delivery Token and try again." + DELIVERY_TOKEN_REQUIRED = "Delivery Token is required. Provide a valid Delivery Token and try again." + ENVIRONMENT_INVALID = "Environment is invalid. Provide a valid Environment and try again." + ENVIRONMENT_REQUIRED = "Environment is required. Provide a valid Environment and try again." + PROXY_URL_REQUIRED = "Proxy URL is required. Provide a valid Proxy URL and try again." + PROXY_PORT_REQUIRED = "Proxy Port is required. Provide a valid Proxy Port and try again." + + def self.request_failed(response) + "The request could not be completed due to #{response}. Review the details and try again." + end + + def self.request_error(error) + "The request encountered an issue due to #{error}. Review the details and try again." + end + end + class Error < StandardError def initialize(msg="Something Went Wrong.") super From 6153ba6299676af7298589343a152c8aa475569e Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Wed, 7 Jan 2026 16:02:47 +0530 Subject: [PATCH 21/21] Update version to 0.8.2 and enhance error messages in CHANGELOG --- CHANGELOG.md | 9 ++++++++- lib/contentstack/version.rb | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6785b7..c423f28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ ## CHANGELOG -## Version 0.8.0 +## Version 0.8.2 +### Date: 12th-January-2026 + ### Improved error messages + - + +------------------------------------------------ + +## Version 0.8.1 ### Date: 05th-January-2026 ### Security Bug - Fixed snyk security issues and updated license year diff --git a/lib/contentstack/version.rb b/lib/contentstack/version.rb index 33ee66d..bd4bbe0 100644 --- a/lib/contentstack/version.rb +++ b/lib/contentstack/version.rb @@ -1,3 +1,3 @@ module Contentstack - VERSION = "0.8.1" + VERSION = "0.8.2" end