diff --git a/app/assets/less/application.less b/app/assets/less/application.less index d01dfa6..850a879 100644 --- a/app/assets/less/application.less +++ b/app/assets/less/application.less @@ -28,6 +28,7 @@ @import "layout/footer"; // Components +@import "components/url"; @import "components/icon"; @import "components/button"; @import "components/badge"; diff --git a/app/assets/less/components/request-item.less b/app/assets/less/components/request-item.less index 8231834..72b2772 100644 --- a/app/assets/less/components/request-item.less +++ b/app/assets/less/components/request-item.less @@ -35,13 +35,17 @@ } } - &-index { + &-uri { + display: inline-block; + width: 45%; + } + + &-size { display: inline-block; width: 10%; } &-type, - &-size, &-timestamp { display: inline-block; width: 20%; diff --git a/app/assets/less/components/url.less b/app/assets/less/components/url.less new file mode 100644 index 0000000..9006d2c --- /dev/null +++ b/app/assets/less/components/url.less @@ -0,0 +1,8 @@ + +.url { + + &-query, + &-fragment { + color: #9c9c9c; + } +} diff --git a/app/controllers/CallbackController.php b/app/controllers/CallbackController.php index 3b4341f..02692f3 100644 --- a/app/controllers/CallbackController.php +++ b/app/controllers/CallbackController.php @@ -136,6 +136,8 @@ class CallbackController extends ControllerBase $meta = new Model\Data\RequestMeta(); $meta->Callback = $callback; $meta->RequestObject = $request; + $meta->setUri($this->request->getServer('REQUEST_URI')); + $result = $meta->save(); if ($result == false) { var_dump($meta->getMessages()); diff --git a/app/library/ViewHelper/UrlStyle.php b/app/library/ViewHelper/UrlStyle.php new file mode 100644 index 0000000..de358d4 --- /dev/null +++ b/app/library/ViewHelper/UrlStyle.php @@ -0,0 +1,69 @@ + tags with class names. + * + * classes/parts are: + * scheme + * host + * port + * path + * query + * fragment + * + * @package ViewHelper + */ +class UrlStyle extends AbstractHelper +{ + /** + * Prefix (or namespace) for css classes. + * + * @var string + */ + protected $_classPrefix = 'url-'; + + public function urlStyle($url) + { + $parts = parse_url($url); + + if ($parts === null) { + return $url; + } + + $xhtml = ''; + + if (isset($parts['scheme'])) { + $xhtml .= $this->_htmlElement('scheme', $parts['scheme'] . '://'); + } + + if (isset($parts['host'])) { + $xhtml .= $this->_htmlElement('host', $parts['host']); + } + + if (isset($parts['port'])) { + $xhtml .= $this->_htmlElement('port', ':' . $parts['port']); + } + + $xhtml .= $this->_htmlElement('path', $parts['path']); + + if (isset($parts['query'])) { + $xhtml .= $this->_htmlElement('query', '?' . $parts['query']); + } + + if (isset($parts['fragment'])) { + $xhtml .= $this->_htmlElement('fragment', '#' . $parts['fragment']); + } + + return $xhtml; + } + + protected function _htmlElement($class, $content) + { + $class = $this->_classPrefix . $class; + return '' . $content . ''; + } +} diff --git a/app/models/Data/RequestMeta.php b/app/models/Data/RequestMeta.php index e4ce3af..df164fa 100644 --- a/app/models/Data/RequestMeta.php +++ b/app/models/Data/RequestMeta.php @@ -18,6 +18,20 @@ class RequestMeta extends Model */ protected $callbackid; + /** + * HTTP Request Uri + * + * @var string + */ + protected $uri; + + /** + * Cached query parameters from request uri. + * + * @var array|null + */ + protected $_uri_query = null; + /** * * @var string @@ -65,6 +79,50 @@ class RequestMeta extends Model return $this; } + /** + * @param string $uri + * @return RequestMeta + */ + public function setUri($uri) + { + $this->uri = (string) $uri; + + // New uri string, invalidate query. + $this->_uri_query = null; + return $this; + } + + /** + * @return string + */ + public function getUri() + { + return $this->uri; + } + + /** + * @return array + */ + public function getUriQuery() + { + if ($this->_uri_query === null) { + + $query = (string) parse_url($this->getUri(), PHP_URL_QUERY); + + $ret = array(); + foreach(explode('&', $query) as $v) { + @list($k, $v) = explode('=', $v, 2); + if (strlen($k) > 0) { + $ret[$k] = $v; + } + } + $this->_uri_query = $ret; + } + + return $this->_uri_query; + } + + /** * Method to set the value of field Timestamp * diff --git a/app/views/callback/show.volt b/app/views/callback/show.volt index 2462b3e..afa613a 100644 --- a/app/views/callback/show.volt +++ b/app/views/callback/show.volt @@ -14,8 +14,8 @@ data-toggle="collapse" data-parent="#request-log" aria-expanded="true" aria-controls="request{{ index }}"> - - #{{ index + 1 }} + + {{ icon('android-locate') }} {{ urlStyle(req.getUri()) }} @@ -36,6 +36,33 @@
+ {% if req.getUriQuery()|length > 0 %} + + + +
+ + + + + + + {% for key, val in req.getUriQuery() %} + + + + + {% endfor %} + +
KeyValue
{{ key|e }}{{ val|e }}
+
+ + {% endif %} +