Skip to Main Navigation Skip to Main Content Skip to Footer
This website uses cookies to ensure you get the best experience on our website.  
Resource Center Is Now CommandHQ: Access Enhanced Insights and Strategic Tools
SouthState Correspondent Division
  • Solutions
    • ARC Loan Hedging
    • Loan Pricing Model
    • Debt Capital Markets
    • International Services
    • Clearing & Cash Management
  • Blog
  • Podcast
  • Events
  • Connect
    • About Us
    • Contact Us
    • Reg F (Quarterly)
  • My CommandHQ
  • Solutions
    • ARC Loan Hedging
    • Loan Pricing Model
    • Debt Capital Markets
    • International Services
    • Clearing & Cash Management
  • Blog
  • Podcast
  • Events
  • Connect
    • About Us
    • Contact Us
    • Reg F (Quarterly)
  • My CommandHQ

The 4 Factors in Loan Pricing Series: Loan Size

Video 2

« Previous   Next »
Visit the ARC Hub
SouthState Correspondent Division
  • CCPA
  • Online Privacy Notice
  • Accessibility
  • Security & Privacy
  • FDIC Coverage
  • Customer Notice

SouthState Securities Corp., a registered member of FINRA and SIPC, is a wholly owned subsidiary of SouthState Bank, N.A. (SSB). SouthState Securities Debt Capital Markets is a division of SSB and is not registered as a broker dealer. SouthState Securities Corp. and SouthState Securities Debt Capital Markets are collectively referred to as "SouthState Securities". Securities may be offered to Institutional customers through either SouthState Securities Corp. or SouthState Securities Debt Capital Markets. Broker-dealer services are offered by SouthState Securities Corp. Securities and investment products offered through SouthState are not insured by the FDIC or any other government agency, are not bank guaranteed, are not bank deposits or obligations, and may lose value.

© 2025 SouthState Bank
Member FDIC   |   Equal Housing Lender

Exit Warning!

You are now leaving our website to visit a site operated by a third party.

SouthState does not provide, and is not responsible for, the products, services, overall content, security or privacy policies on any external third-party site, and their level of security may be different from ours. Please refer to their privacy policy and terms of use for details.

Stay On Site     Leave Site
Save
Share
My Stuff
Sign Up
Blog
Podcast
Events
Powered by CommandHQ
CommandHQ
Data, insights, and tools for community bankers.
Banker to Banker
Articles and strategies delivered to your inbox.
View All
// Cloudflare Worker: SouthState Content Proxy // Deploy at: https://ss-content.{your-account}.workers.dev // Or add a custom route like: api.southstatecorrespondent.com/content/* const ORIGIN = 'https://southstatecorrespondent.com'; const CORS_ORIGIN = 'https://southstatecorrespondent.com'; // Cache content in Cloudflare's edge for 10 minutes // This is YOUR cache, separate from WP Engine's const EDGE_CACHE_TTL = 600; async function handleRequest(request) { const url = new URL(request.url); const path = url.pathname; // Handle CORS preflight if (request.method === 'OPTIONS') { return new Response(null, { headers: corsHeaders(), }); } // Route: /content/blog → latest 3 blog posts // Route: /content/podcast → latest 3 podcast episodes let apiUrl = ''; if (path === '/content/blog') { apiUrl = ORIGIN + '/wp-json/wp/v2/posts?per_page=6&orderby=date&order=desc'; } else if (path === '/content/podcast') { apiUrl = ORIGIN + '/wp-json/wp/v2/podcast?per_page=3&orderby=date&order=desc'; } else { return new Response(JSON.stringify({ error: 'Not found' }), { status: 404, headers: { ...corsHeaders(), 'Content-Type': 'application/json' }, }); } // Check Cloudflare edge cache first const cacheKey = new Request(apiUrl, request); const cache = caches.default; let response = await cache.match(cacheKey); if (!response) { // Fetch from WP Engine origin, bypassing their cache const originResponse = await fetch(apiUrl, { headers: { 'Cache-Control': 'no-cache, no-store', 'Pragma': 'no-cache', 'User-Agent': 'SouthState-Widget/1.0', }, }); if (!originResponse.ok) { return new Response(JSON.stringify({ error: 'Origin error', status: originResponse.status }), { status: 502, headers: { ...corsHeaders(), 'Content-Type': 'application/json' }, }); } const data = await originResponse.json(); // Transform to slim payload let items = []; if (path === '/content/blog') { // Filter out podcasts/events that might be in the posts endpoint items = data .filter(p => { const link = p.link || ''; return link.indexOf('/podcast/') < 0 && link.indexOf('/event/') < 0; }) .slice(0, 3) .map(p => ({ title: decodeHTML(p.title.rendered), desc: decodeHTML(p.excerpt.rendered).substring(0, 120), url: p.link, date: p.date, })); } else { items = data.slice(0, 3).map(p => ({ title: decodeHTML(p.title.rendered), desc: decodeHTML(p.excerpt.rendered).substring(0, 120), url: p.link, date: p.date, })); } response = new Response(JSON.stringify(items), { headers: { ...corsHeaders(), 'Content-Type': 'application/json', 'Cache-Control': `public, max-age=${EDGE_CACHE_TTL}`, }, }); // Store in Cloudflare edge cache response = new Response(response.body, response); await cache.put(cacheKey, response.clone()); } else { // Add CORS headers to cached response response = new Response(response.body, { status: response.status, headers: { ...Object.fromEntries(response.headers), ...corsHeaders(), }, }); } return response; } function corsHeaders() { return { 'Access-Control-Allow-Origin': CORS_ORIGIN, 'Access-Control-Allow-Methods': 'GET, OPTIONS', 'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Max-Age': '86400', }; } function decodeHTML(html) { return html .replace(/<[^>]*>/g, '') .replace(/&#(\d+);/g, (_, n) => String.fromCharCode(n)) .replace(/&#x([0-9a-fA-F]+);/g, (_, n) => String.fromCharCode(parseInt(n, 16))) .replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/"/g, '"') .replace(/'/g, "'") .replace(/’/g, '\u2019') .replace(/‘/g, '\u2018') .replace(/”/g, '\u201D') .replace(/“/g, '\u201C') .replace(/—/g, '\u2014') .replace(/–/g, '\u2013') .replace(/…/g, '\u2026') .replace(/ /g, ' ') .trim(); } addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)); });