http_client.html.twig 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. {% extends '@WebProfiler/Profiler/layout.html.twig' %}
  2. {% block toolbar %}
  3. {% if collector.requestCount %}
  4. {% set icon %}
  5. {{ include('@WebProfiler/Icon/http-client.svg') }}
  6. {% set status_color = '' %}
  7. <span class="sf-toolbar-value">{{ collector.requestCount }}</span>
  8. {% endset %}
  9. {% set text %}
  10. <div class="sf-toolbar-info-piece">
  11. <b>Total requests</b>
  12. <span>{{ collector.requestCount }}</span>
  13. </div>
  14. <div class="sf-toolbar-info-piece">
  15. <b>HTTP errors</b>
  16. <span class="sf-toolbar-status {{ collector.errorCount > 0 ? 'sf-toolbar-status-red' }}">{{ collector.errorCount }}</span>
  17. </div>
  18. {% endset %}
  19. {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status_color }) }}
  20. {% endif %}
  21. {% endblock %}
  22. {% block menu %}
  23. <span class="label {{ collector.requestCount == 0 ? 'disabled' }}">
  24. <span class="icon">{{ include('@WebProfiler/Icon/http-client.svg') }}</span>
  25. <strong>HTTP Client</strong>
  26. {% if collector.requestCount %}
  27. <span class="count">
  28. {{ collector.requestCount }}
  29. </span>
  30. {% endif %}
  31. </span>
  32. {% endblock %}
  33. {% block panel %}
  34. <h2>HTTP Client</h2>
  35. {% if collector.requestCount == 0 %}
  36. <div class="empty">
  37. <p>No HTTP requests were made.</p>
  38. </div>
  39. {% else %}
  40. <div class="metrics">
  41. <div class="metric">
  42. <span class="value">{{ collector.requestCount }}</span>
  43. <span class="label">Total requests</span>
  44. </div>
  45. <div class="metric">
  46. <span class="value">{{ collector.errorCount }}</span>
  47. <span class="label">HTTP errors</span>
  48. </div>
  49. </div>
  50. <h2>Clients</h2>
  51. <div class="sf-tabs">
  52. {% for name, client in collector.clients %}
  53. <div class="tab {{ client.traces|length == 0 ? 'disabled' }}">
  54. <h3 class="tab-title">{{ name }} <span class="badge">{{ client.traces|length }}</span></h3>
  55. <div class="tab-content">
  56. {% if client.traces|length == 0 %}
  57. <div class="empty">
  58. <p>No requests were made with the "{{ name }}" service.</p>
  59. </div>
  60. {% else %}
  61. <h4>Requests</h4>
  62. {% for trace in client.traces %}
  63. {% set profiler_token = '' %}
  64. {% set profiler_link = '' %}
  65. {% if trace.info.response_headers is defined %}
  66. {% for header in trace.info.response_headers %}
  67. {% if header matches '/^x-debug-token: .*$/i' %}
  68. {% set profiler_token = (header.getValue | slice('x-debug-token: ' | length)) %}
  69. {% endif %}
  70. {% if header matches '/^x-debug-token-link: .*$/i' %}
  71. {% set profiler_link = (header.getValue | slice('x-debug-token-link: ' | length)) %}
  72. {% endif %}
  73. {% endfor %}
  74. {% endif %}
  75. <table>
  76. <thead>
  77. <tr>
  78. <th>
  79. <span class="label">{{ trace.method }}</span>
  80. </th>
  81. <th class="full-width">
  82. {{ trace.url }}
  83. {% if trace.options is not empty %}
  84. {{ profiler_dump(trace.options, maxDepth=1) }}
  85. {% endif %}
  86. </th>
  87. {% if profiler_token and profiler_link %}
  88. <th>
  89. Profile
  90. </th>
  91. {% endif %}
  92. </tr>
  93. </thead>
  94. <tbody>
  95. <tr>
  96. <th>
  97. {% if trace.http_code >= 500 %}
  98. {% set responseStatus = 'error' %}
  99. {% elseif trace.http_code >= 400 %}
  100. {% set responseStatus = 'warning' %}
  101. {% else %}
  102. {% set responseStatus = 'success' %}
  103. {% endif %}
  104. <span class="label status-{{ responseStatus }}">
  105. {{ trace.http_code }}
  106. </span>
  107. </th>
  108. <td>
  109. {{ profiler_dump(trace.info, maxDepth=1) }}
  110. </td>
  111. {% if profiler_token and profiler_link %}
  112. <td>
  113. <span><a href="{{ profiler_link }}" target="_blank">{{ profiler_token }}</a></span>
  114. </td>
  115. {% endif %}
  116. </tr>
  117. </tbody>
  118. </table>
  119. {% endfor %}
  120. {% endif %}
  121. </div>
  122. </div>
  123. {% endfor %}
  124. {% endif %}
  125. </div>
  126. {% endblock %}