<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Response Object Demo &middot; Learn ASPPY</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="/assets/app.css" rel="stylesheet">
</head>
<body>
    <nav class="navbar navbar-expand-lg starter-nav">
        <div class="container">
            <a class="navbar-brand" href="/">Learn ASPPY</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navMenu">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navMenu">
                <ul class="navbar-nav me-auto">
                    <li class="nav-item"><a class="nav-link" href="/">Home</a></li>
                    <li class="nav-item"><a class="nav-link" href="/courses">Courses</a></li>
                    <li class="nav-item"><a class="nav-link" href="/lessons">Lessons</a></li>
                    
                </ul>
                <ul class="navbar-nav">
                    
                    <li class="nav-item"><a class="nav-link" href="/login">Log In</a></li>
                    <li class="nav-item"><a class="nav-link" href="/register">Sign Up</a></li>
                    
                </ul>
            </div>
        </div>
    </nav>
    <main class="py-4 py-lg-5">
        <div class="container">
            
<section class="hero-panel mb-4">
  <span class="eyebrow">Live Demo</span>
  <h1 class="h4 mt-3 mb-2">Response Object Deep Dive</h1>
  <p class="text-secondary small mb-0">Buffer control, content types, headers, and status codes</p>
</section>

<div class="row g-4">
  <div class="col-lg-6">
    <div class="surface-card p-4 mb-4">
      <h2 class="h6 mb-3">Buffer Control</h2>
      <p class="small mb-2">Response.Buffer controls whether output is sent immediately or buffered.</p>
      <div class='small mb-2'>This text was written with Response.Write. Buffer is <strong>True</strong>.</div>

      <div class="d-flex gap-2 mb-3 flex-wrap">
        <a class="btn btn-sm btn-outline-secondary" href="/demos/response?action=flush">Test Response.Flush</a>
        <a class="btn btn-sm btn-outline-secondary" href="/demos/response?action=clear">Test Response.Clear</a>
        <a class="btn btn-sm btn-outline-secondary" href="/demos/response?action=end">Test Response.End</a>
      </div>
      
    </div>

    <div class="surface-card p-4 mb-4">
      <h2 class="h6 mb-3">Content Type</h2>
      <p class="small text-secondary mb-2">Current ContentType: <code>text/html</code></p>
      <div class="d-flex gap-2 flex-wrap">
        <a class="btn btn-sm btn-outline-primary" href="/demos/response?ct=text/plain">text/plain</a>
        <a class="btn btn-sm btn-outline-primary" href="/demos/response?ct=text/html">text/html</a>
        <a class="btn btn-sm btn-outline-primary" href="/demos/response?ct=application/json">application/json</a>
        <a class="btn btn-sm btn-outline-primary" href="/demos/response?ct=text/xml">text/xml</a>
      </div>
      <div class='alert alert-success small py-2 mt-2 mb-0'>ContentType set to <code>application/json</code>. View page source or check DevTools Network tab to verify.</div>
    </div>
  </div>

  <div class="col-lg-6">
    <div class="surface-card p-4 mb-4">
      <h2 class="h6 mb-3">Custom Headers &amp; Status</h2>
      <p class="small text-secondary mb-2">Set custom HTTP headers and different status codes.</p>
      <div class="d-flex gap-2 flex-wrap mb-3">
        <a class="btn btn-sm btn-outline-info" href="/demos/response?header=1">Add X-Custom header</a>
        <a class="btn btn-sm btn-outline-info" href="/demos/response?status=401">Status 401</a>
        <a class="btn btn-sm btn-outline-info" href="/demos/response?status=404">Status 404</a>
        <a class="btn btn-sm btn-outline-info" href="/demos/response?status=500">Status 500</a>
      </div>
      
    </div>

    <div class="surface-card p-4">
      <h2 class="h6 mb-3">Cache Control &amp; Expires</h2>
      <p class="small text-secondary mb-2">Control browser/proxy caching behavior.</p>
      <div class="mb-3">
        <span class="badge bg-secondary me-1">Expires: </span>
        <span class="badge bg-secondary me-1">CacheControl: </span>
        <span class="badge bg-secondary">Charset: utf-8</span>
      </div>
      <div class="d-flex gap-2 flex-wrap">
        <a class="btn btn-sm btn-outline-secondary" href="/demos/response?cache=no-cache">No Cache</a>
        <a class="btn btn-sm btn-outline-secondary" href="/demos/response?expires=60">Expires 60min</a>
      </div>
      
    </div>
  </div>
</div>

<div class="surface-card p-4 mt-4">
  <h2 class="h6 mb-3">Redirect Demo</h2>
  <p class="small text-secondary mb-2">Clicking these links sends a 302 redirect via Response.Redirect.</p>
  <div class="d-flex gap-2 flex-wrap">
    <a class="btn btn-sm btn-primary" href="/demos/response?redirect=/">Redirect to /</a>
    <a class="btn btn-sm btn-primary" href="/demos/response?redirect=/courses">Redirect to /courses</a>
    <a class="btn btn-sm btn-primary" href="/demos/response?redirect=/lessons">Redirect to /lessons</a>
  </div>
  
</div>


        </div>
    </main>
    <footer class="footer text-center py-4">
        <div class="container">
            <p class="text-secondary small mb-0">&copy; 2026 Learn ASPPY. Built with ASPPY &middot; <a href="https://github.com/PieterCooreman/ASPPY" target="_blank">GitHub</a></p>
        </div>
    </footer>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
