dashing-contrib 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +36 -4
  3. data/dashing-contrib.gemspec +4 -1
  4. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/FontAwesome.otf +0 -0
  5. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  6. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.svg +504 -0
  7. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  8. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  9. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_bordered-pulled.scss +16 -0
  10. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_core.scss +12 -0
  11. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_fixed-width.scss +6 -0
  12. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_icons.scss +506 -0
  13. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_larger.scss +13 -0
  14. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_list.scss +19 -0
  15. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_mixins.scss +20 -0
  16. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_path.scss +14 -0
  17. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_rotated-flipped.scss +9 -0
  18. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_spinning.scss +32 -0
  19. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_stacked.scss +20 -0
  20. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_variables.scss +515 -0
  21. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/font-awesome.scss +17 -0
  22. data/lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.coffee +12 -0
  23. data/lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.html +44 -0
  24. data/lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.scss +89 -0
  25. data/lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.coffee +1 -0
  26. data/lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.html +8 -0
  27. data/lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.scss +58 -0
  28. data/lib/dashing-contrib/assets/widgets.scss +2 -1
  29. data/lib/dashing-contrib/bottles/pingdom/checks.rb +21 -0
  30. data/lib/dashing-contrib/bottles/pingdom/client.rb +23 -0
  31. data/lib/dashing-contrib/bottles/pingdom/credentials.rb +29 -0
  32. data/lib/dashing-contrib/bottles/pingdom/uptime.rb +33 -0
  33. data/lib/dashing-contrib/bottles/pingdom.rb +5 -0
  34. data/lib/dashing-contrib/bottles/time.rb +12 -0
  35. data/lib/dashing-contrib/history.rb +1 -0
  36. data/lib/dashing-contrib/version.rb +1 -1
  37. data/lib/dashing-contrib.rb +3 -0
  38. metadata +88 -2
@@ -0,0 +1,89 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Sass declarations
3
+ // ----------------------------------------------------------------------------
4
+ $background-color: #2A2A2A;
5
+ $value-color: #73AA3A;
6
+
7
+ $title-color: #8b8b8b;
8
+ $moreinfo-color: rgba(255, 255, 255, 0.7);
9
+
10
+ // ----------------------------------------------------------------------------
11
+ // Widget styles
12
+ // ----------------------------------------------------------------------------
13
+ .widget-pingdom-uptime {
14
+ //refreshing default widget definition
15
+ vertical-align: baseline !important;
16
+ padding:0px !important;
17
+
18
+ background-color: $background-color;
19
+
20
+ header{
21
+ background-color: #272727;
22
+ text-transform: uppercase;
23
+ padding: 5px 0px 5px 0px;
24
+ font-weight: 700;
25
+ font-size: 12px;
26
+ text-shadow: 1px 1px #0e0e0e;
27
+ }
28
+ .title {
29
+ color: $title-color;
30
+ font-size: inherit;
31
+ }
32
+
33
+ .body {
34
+ padding: 16px;
35
+ color: #d3d4d4;
36
+ text-shadow: 1px 1px #0e0e0e;
37
+ font-family: Helvetica, Arial, sans-serif;
38
+ z-index: 1;
39
+
40
+ .row {
41
+ width:100%;
42
+ }
43
+ .left {
44
+ float:left;
45
+ width:50%;
46
+ }
47
+ .right {
48
+ float:right;
49
+ width:49%;
50
+ border-left: 1px dotted #8b8b8b;
51
+ }
52
+ }
53
+
54
+ .current-status-container {
55
+ padding: 10px;
56
+ font-size: 35px;
57
+ text-shadow: none;
58
+ &.status-up {
59
+ color: #9ACA3C;
60
+ }
61
+ &.status-down {
62
+ color: #C32026;
63
+ }
64
+
65
+ i.fa {
66
+ font-size: 55px;
67
+ }
68
+ }
69
+
70
+ .value {
71
+ font-size: 60px;
72
+ }
73
+
74
+ .more-info {
75
+ color: $moreinfo-color;
76
+ p {
77
+ font-size:12px;
78
+ color: #8b8b8b;
79
+ }
80
+ .figure {
81
+ font-size:18px;
82
+ color: #CECFCF;
83
+ }
84
+ &.past-status {
85
+ bottom: 80px;
86
+ }
87
+ }
88
+
89
+ }
@@ -0,0 +1 @@
1
+ class Dashing.Sidekiq extends Dashing.Widget
@@ -0,0 +1,8 @@
1
+ <h1 class="title" data-bind="title"></h1>
2
+ <ul>
3
+ <li data-foreach-metric="metrics">
4
+ <span class="label" data-bind="metric.label"></span>
5
+ <span class="value" data-bind="metric.value"></span>
6
+ </li>
7
+ </ul>
8
+ <p class="updated-at" data-bind="updatedAtMessage"></p>
@@ -0,0 +1,58 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Sass declarations
3
+ // ----------------------------------------------------------------------------
4
+ $background-color: #f0f0f0;
5
+
6
+ $value-color: #636466;
7
+
8
+
9
+ // ----------------------------------------------------------------------------
10
+ // Widget-sidekiq styles
11
+ // ----------------------------------------------------------------------------
12
+ .widget-sidekiq {
13
+ $background-image-url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAABVCAYAAADnu9JFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA1ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0iREMzRTU4OEUzN0ZDRUJEMzMyQ0REM0VDODYwRkNCQzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUVFODE1RkVGOUU4MTFFMTkyMjhBOTJFMTRGRjU0QjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUVFODE1RkRGOUU4MTFFMTkyMjhBOTJFMTRGRjU0QjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGODdGMTE3NDA3MjA2ODExODA4M0I0QjMyM0I1QzJCRiIgc3RSZWY6ZG9jdW1lbnRJRD0iREMzRTU4OEUzN0ZDRUJEMzMyQ0REM0VDODYwRkNCQzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7yAf1LAAAMb0lEQVR42uxdeZAcZRX/vu7ZmIQEQU0QiOJJBa8/QoiklATLAzwIcUOJWpaKlqIlKIqhtFBBy5tSORT+ULEQ75JsUsYS5NBkoTxAxQMkpHBTMSYUiSKQGLLb3Z/v7by3efPmdW/Pzkwzs5uuejW9PT09Pb9+x+/9vq97/Qa3wnVp8WQZWEyvQb2HlorPRLRPcBUtq8KmKX0u6uI5MWgM0KnivUDvMWg1es2qBK2dJericTNaR297C9iVAsRY7Z9VdDF7HjgOT7QEbDnYC8AeAvu28LTYAC6bycBx7mKA9tF3PQ3sHLBn0fbUyIluJgMniwAuz1XetMoI16C8sKeXWkWZ+DACjavm88nbvAItKC+cNh4Xq8/GxnFi8cqAvBdsN/3tCThveGZV3jaREjb4lU3pAbZF8j1rH78+n8d58UMDUYZE/DhJJRJVSSNRIJh6vA7s5/T3AbAFYPvFcfwTQEWiM8OmjIAa/634twFigO0B13n/POAkaD6n0klQJFh5JBb3vxXsFDrmBYKi6DzX7SUWF2wCGAEUApgyUOx1vM84QEPjv6Pw4DIPyW1BfHFEXpcHfkSfexPYj0WlvR1sL9gA2GfA/lCxx413NKvD5vHfst6vqMF6QusRrGe0fji8fIqiZhTsrdEkdMIJ74nUNi8qZaJy30BOwv+X2DYH7DSwNVRlj68wz02cO4IGwMjfokHD8/wG2IVgJ4BtB9tSxuOOAHsthdhJYIvB7iLv2a3CtKZA9MLzIgLnHuWNDCR+xy8rznOcbgJ7HS8IHrycAfZVsOfQfnjhlyGRL6qqLwH7Gdi/wX4A9j6wpWBzwVaCXS7aJ85zidGwZ+J1tyoGmfDohwXAVXhcjar76ezlGKr0Og9ersJVAm0M7LfoPADwLrDUr7M97tlgd4PN1+VbLNg+Pb3AQyLR5MvE/2WwtQSgDEsMg/srarlmU+hdQgD+Dmw15V3sbD5IpJ3PHd9f8caweXTIr4jhNa3lHPh8Iq1FLdAA2agBmKy2mqstU7ksoZPfL4AOJTxGememqnpmiA2O8uqbwS4W4YfHOhlsM9ixtI88X7zA3+PjIGhFBPiFKgRTQxI6EuylVsJVFVd+7kV45QweyB5clssF8V2ZWK8J/ugE/3wZ2NVgu8CuVd7EC+bfJ9E5ayaxAwBL0NuGqJDUCk4uFQUiVmEXiS8bNvZzQhmRHjJLKSdjdA6Pgj2uCHcZ2corD88EI0Av+ggVnXlGCpDeyQDVxPaEjrUDbJP0tqJedQvYq1RIRcZVX6NkopQ8cS+BEpHrLyVbqfIa05Y9IvTK5LiMPjtmFJvjiVifpoh4lJNSIpEyYqIeWBgeoBy/d1AANhFeN9jFAUPqz+LgXvCxmqqgTwY7CuyLFLrH0b576XNzVS7S8hFuuxHs9W3wsUA/8qNgH6NzjHI8LFVto7yQd2AqGSQOV6iO5ETF3wj1DxklXHx2/IsxFK6gxDom9p0vAOYT1vmDQ21IMvkSoRqrvHsOdR6LDIB0+OuihMtvwC4aDMO3l75iP3UvL1JNfkXJPFX5RFed2EjcMgw4l3l19XHZRlRkrEVJKSLadD0pzMG4KHlhLsNz7ZowfHmnZCV2VWTO31GJ1CvyGqu85AXI/CMGxFWXgKaUwA+oprsM4/8ApZNlBtfUBca6mA9SHr9iSkLmJFULq925VPHer3JeVFLX07obg/9fSgVDBp2xzoX3OY46meUlKItXHsbLfVTY7gVv66iQmQlQB0mIzCYJActjU8MbHgP7LNjzwL5rcD3tsehdbwP7PNhGyr/LDZBT5V2RAp4py2XUc9+Lb97gT5nSOEeRdJ6JHxpP8YJIfjdCYfF9sP+UlLDeCfZpsGPomGMU9lZujdVFSgQv20m58Jt0HhN05KwwHDoZqpI6nCBOoqzHOQEEE+E3gG1VhUYy/zNdffx1Nm1bTJwszjlfWTETUeUlgKi2fIVerdQxZSWmNkleOpXCKlY5KioRqrEK+18QWV4H9gpSSpZScl9MUro3wlZWQj07wCsQ+WKgZ32dwtoLUGuCMrUlJhSFKhLSH1Kb5AsYeJmwzSipX0p8y6mwy4wQC9bgiqrumpT/CPkY6WZSZEjEd3ZEqs8jwIHK/XyD+5QJ18gguUH0kTGBxuveiALdtQTVn6aiv9xHYxjXKRIeDNXEd0K6yvM4zDNLFGihBaHRAtoaAozV8X2OFKVDUgLzF+oc/mS0YZFST1wL0tWknmF5z+eo/3TGIIzl4iHH43wL3ulzJHer4LD3XUp58m4thU+Sx9qW52tGH7eE2LwTUlAekXVG/+lc+3NArHTAOTGjQnMREVl5HmmLslRboapJ5MWqAdYM3OocrFzV7pgAe/uAaNt+Txf1DqOjaCUEs054nHTxjNTSWkHT7BUXc0pxzVznhvhk1V1HHcSo4fGyiFQyI0A22ywCPtU1jk5ZxFECFVTS7RRoY2L9a2BnC4kqKFBDlaBxqMry/hrx5ZZUZMlCmoeFDoUsDwSdR4RW04gxo2ULnchfZXkck0gcqHiP8qBIgTRKxSIy+kXfocLAx8Xx3LeD3WRUWT30mBpFq9vATVyxd5Nk7g2Vgddx4OJL9KNmk5CIPSgO7D5FdQPtLP8jBWO78iYLnMkmB3UtVNm7zi+QnDJSSRCkv6ur/wVaRxL6DsqTh5Nnxi0ospJgryfQnCGS5gmUlU4RYw52Iv1g3RWMCg94tQLNq0p6HcnsR7v6AM1DlMwlnbEmSVsU52ajy+ip+cFRqCe5j4eD63z5MrBZYCnY2WB30XZPxvvhZ2KwRGzztG0DrSd0/Eh8Rn6fp3W0x8A2inOQ+7hOWzset4i0sNS4qrjtXcTUI+UpQXhLKiohew8OD97p6pMJawVdQVDbsRg8rNo173rs5pFI5KJYnRjqZaeTvO2M3lPP3/BK68LR84WuPlfjE6RgaErjja7kKlWQenKB4hC2E0gLRIuDuQ2HzG4R1TdvxqVWU/ECrCTQcCLNHiogIySbWx4XiYs17JoHbkKnesxOelwikjFTiVnKQ3RDb6kqNdGOrabP/ER4z1YhJAbXPFcY99+mPC1SXt5ToYondaNxhbcZFVAKiplxARiQC4jb/VXkpqOFuiHDXY5G7VEaXWbQD98joTp+MreoPIOhutFQUUMJtYHX/6HC+iRnj1fIbftEocly9LPQSx6H88Zwds8lpKjitjkqVGtT5FNcdBaoCxCUjsY5ri/u5+LOISKvuw3sW2DXkAI80oErnZZQhfm9na5P7leVN9hy5dxJvC5SXUKaU12LxEjZEbzSCFU9fvBP1ycLqyNeaF0cWonRHyaueYpVEWi874tdfc6tUz2pHmd4wD0xtyZNOVSd6ielspupXFVmKpYeClzsDk4NjY1+l5cR10e3lsdKuJQkM1W5qpX7ECR4CynM8+5RxeURoiOuX4BLRahaUxy8UjGyFnMcfu5IxQVTQ0Pb4Q6OJ/RNVdVtk8XLWm115LGOUKTXkotGXB8t3b79h0GZXeBJ7HX391pb1QvAzcvpNiRI97k+ephBt+/J58MfZvSaWlLa6iocpeoEj6sCuDkF/Snvs6WfQrVbHqdJ7ECBsoEAouL74KEcZzf61veyxPRHV929qj0NnJ46Yc27lUDd6SoeF+314pA3BVZPknmkX3rUqkKVgdiXAyb3xse6xmmqMxo4STsed81jCXJ91xRaumkLnMxleVNMWX3Z4Do3m3Na5bi5rll74wWfNHGPEhJ6H7gunycDN1AA3GWueZbAjC8ODMSBnO3bXH0+bzs3oEzLUGXv2q9yH4fkra5xlCtyhx712ADUUapTYP62p58UkapbLqycz3SNE58ZrIWGt/VHVe0yFeFRrgOu8RaAUWqzfu2aJfQZrY7wop+Qk5ISgvcr3Oaax2hnueZHDs2oUJVqCGpxi9zB+0ZxTsnNInTlyH5fgNZN4OQzRvTTbY5xjY/j0U4/cMjj6qCc6xpnez7D1e+6Tpz9BJyxPslxoVsehwtO7VolKAqP7C9RBUE/zDRMd4/LewoD56zzXPNdODi2cKFrnFAY3AzR4/T/Yqi55plHWBQGlRKCU8hOpKY+VU191Fd0pE2exgAmio/hK973yuOpmLfwSTnXqn3ksfqq7WqHx+kb5Djc8LFoH3b1x5HxtisJNOcap8xmiij3jcdFbYJmPaHmLLBP0nvIy/CZbmsVIPrfsKQq3037UE1d8+Mp8KEsONscb5i7SchG+mlgzvCwvmn4/y/AAPSapoT6anwmAAAAAElFTkSuQmCC";
14
+
15
+ background: $background-color url($background-image-url) 20px 25px no-repeat;
16
+
17
+ &.large h3 {
18
+ font-size: 65px;
19
+ }
20
+
21
+ .title {
22
+ color: $value-color;
23
+ }
24
+
25
+ .more-info {
26
+ color: $value-color;
27
+ }
28
+
29
+ .updated-at {
30
+ color: rgba(0, 0, 0, 1);
31
+ }
32
+
33
+ ul {
34
+ margin: 0 15px;
35
+ text-align: left;
36
+ color: $value-color;
37
+ }
38
+
39
+ li {
40
+ margin-bottom: 5px;
41
+ }
42
+
43
+ .list-nostyle {
44
+ list-style: none;
45
+ }
46
+
47
+ .label {
48
+ color: $value-color;
49
+ }
50
+
51
+ .value {
52
+ float: right;
53
+ margin-left: 12px;
54
+ font-weight: 600;
55
+ color: $value-color;
56
+ }
57
+
58
+ }
@@ -1,2 +1,3 @@
1
1
  //=require_tree ./widgets
2
- //=require_tree ./javascripts
2
+ //=require_tree ./javascripts
3
+ //=require ./stylesheets/font-awesome/scss/font-awesome
@@ -0,0 +1,21 @@
1
+ require 'rest-client'
2
+ require 'cgi'
3
+
4
+ module DashingContrib
5
+ module Pingdom
6
+ module Checks
7
+ extend self
8
+
9
+ def fetch(credentials, id)
10
+ make_request(credentials, id)
11
+ end
12
+
13
+ private
14
+ def make_request(credentials, id)
15
+ request_url = "https://#{credentials.username}:#{credentials.password}@api.pingdom.com/api/2.0/checks/#{id}"
16
+ response = RestClient.get(request_url, { 'App-Key' => credentials.api_key })
17
+ MultiJson.load(response.body, { symbolize_keys: true })
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ require 'rest-client'
2
+ require_relative './credentials'
3
+
4
+ module DashingContrib
5
+ module Pingdom
6
+ class Client
7
+ # Initialize Pingdom client
8
+ attr_accessor :credentials
9
+
10
+ def initialize(options)
11
+ @credentials = ::DashingContrib::Pingdom::Credentials.new(options)
12
+ end
13
+
14
+ def checks(id)
15
+ ::DashingContrib::Pingdom::Checks.fetch(credentials, id)
16
+ end
17
+
18
+ def uptime(id, from_time, to_time)
19
+ ::DashingContrib::Pingdom::Uptime.calc(credentials, id, from_time, to_time)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ require 'cgi'
2
+
3
+ module DashingContrib
4
+ module Pingdom
5
+ class Credentials
6
+ attr_accessor :api_key, :username, :password
7
+
8
+ def initialize(options = {})
9
+ user_options = default_options.merge(options)
10
+ @api_key = user_options[:api_key] || missing_args(:api_key)
11
+ @password = CGI.escape(user_options[:password]) || missing_args(:password)
12
+ @username = CGI.escape(user_options[:username]) || missing_args(:username)
13
+ end
14
+
15
+ private
16
+ def default_options
17
+ {
18
+ api_key: '',
19
+ password: '',
20
+ username: ''
21
+ }
22
+ end
23
+
24
+ def missing_args(name)
25
+ raise "Pingdom credentials requires #{name.to_s}"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,33 @@
1
+ require 'rest-client'
2
+ require 'multi_json'
3
+ require 'cgi'
4
+
5
+ module DashingContrib
6
+ module Pingdom
7
+ module Uptime
8
+ extend self
9
+
10
+ def calc(credentials, id, from_time, to_time, rounding = 2)
11
+ payload = make_request(credentials, id, from_time, to_time)
12
+ summary = payload[:summary][:status]
13
+ up = summary[:totalup]
14
+ unkown = summary[:totalunknown]
15
+ down = summary[:totaldown]
16
+
17
+ uptime = (up.to_f - (unkown.to_f + down.to_f)) * 100 / up.to_f
18
+ uptime.round(rounding)
19
+ end
20
+
21
+ private
22
+ def make_request(credentials, id, from_time, to_time)
23
+ request_url = uptime_request_url(credentials, id, from_time, to_time)
24
+ response = RestClient.get(request_url, { 'App-Key' => credentials.api_key })
25
+ MultiJson.load(response.body, { symbolize_keys: true })
26
+ end
27
+
28
+ def uptime_request_url(credentials, id, from_time, to_time)
29
+ "https://#{credentials.username}:#{credentials.password}@api.pingdom.com/api/2.0/summary.average/#{id}?from=#{from_time}&to=#{to_time}&includeuptime=true"
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,5 @@
1
+ require 'dashing-contrib/bottles/pingdom/credentials'
2
+ require 'dashing-contrib/bottles/pingdom/checks'
3
+ require 'dashing-contrib/bottles/pingdom/uptime'
4
+
5
+ require 'dashing-contrib/bottles/pingdom/client'
@@ -0,0 +1,12 @@
1
+ require 'time_diff'
2
+
3
+ module DashingContrib
4
+ class Time
5
+ class << self
6
+ def readable_diff(old_time, new_time = ::Time.now)
7
+ t = ::Time.diff(new_time, old_time)
8
+ "#{t[:day]}d #{t[:hour]}h #{t[:minute]}m"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -10,6 +10,7 @@ module DashingContrib
10
10
  end
11
11
 
12
12
  def raw_event(event_name)
13
+ return nil if history[event_name].nil?
13
14
  history[event_name].gsub(/^data:/, '')
14
15
  rescue
15
16
  nil
@@ -1,3 +1,3 @@
1
1
  module DashingContrib
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -2,6 +2,8 @@ require 'dashing-contrib/version'
2
2
  require 'dashing-contrib/configuration'
3
3
  require 'dashing-contrib/history'
4
4
  require 'dashing-contrib/routes'
5
+ require 'dashing-contrib/bottles/time'
6
+ require 'dotenv'
5
7
 
6
8
  module DashingContrib
7
9
  class << self
@@ -15,6 +17,7 @@ module DashingContrib
15
17
  def self.configure
16
18
  yield configuration if block_given?
17
19
  self.configure_sprockets
20
+ Dotenv.load
18
21
  end
19
22
 
20
23
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dashing-contrib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jing Dong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-12 00:00:00.000000000 Z
11
+ date: 2014-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -38,6 +38,62 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.18.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: rest-client
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.6.7
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.6.7
55
+ - !ruby/object:Gem::Dependency
56
+ name: multi_json
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.10.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.10.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: time_diff
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.3.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.3.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: sidekiq
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 3.0.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 3.0.0
41
97
  - !ruby/object:Gem::Dependency
42
98
  name: rake
43
99
  requirement: !ruby/object:Gem::Requirement
@@ -68,13 +124,43 @@ files:
68
124
  - dashing-contrib.gemspec
69
125
  - lib/dashing-contrib.rb
70
126
  - lib/dashing-contrib/assets/javascripts/rickshaw/rickshaw.min.js
127
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/FontAwesome.otf
128
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.eot
129
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.svg
130
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.ttf
131
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.woff
132
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_bordered-pulled.scss
133
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_core.scss
134
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_fixed-width.scss
135
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_icons.scss
136
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_larger.scss
137
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_list.scss
138
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_mixins.scss
139
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_path.scss
140
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_rotated-flipped.scss
141
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_spinning.scss
142
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_stacked.scss
143
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_variables.scss
144
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/font-awesome.scss
71
145
  - lib/dashing-contrib/assets/widgets.coffee
72
146
  - lib/dashing-contrib/assets/widgets.scss
147
+ - lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.coffee
148
+ - lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.html
149
+ - lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.scss
73
150
  - lib/dashing-contrib/assets/widgets/rickshawgraph/rickshawgraph.coffee
74
151
  - lib/dashing-contrib/assets/widgets/rickshawgraph/rickshawgraph.html
75
152
  - lib/dashing-contrib/assets/widgets/rickshawgraph/rickshawgraph.scss
153
+ - lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.coffee
154
+ - lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.html
155
+ - lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.scss
76
156
  - lib/dashing-contrib/bottles/nagios.rb
77
157
  - lib/dashing-contrib/bottles/nagios/client.rb
158
+ - lib/dashing-contrib/bottles/pingdom.rb
159
+ - lib/dashing-contrib/bottles/pingdom/checks.rb
160
+ - lib/dashing-contrib/bottles/pingdom/client.rb
161
+ - lib/dashing-contrib/bottles/pingdom/credentials.rb
162
+ - lib/dashing-contrib/bottles/pingdom/uptime.rb
163
+ - lib/dashing-contrib/bottles/time.rb
78
164
  - lib/dashing-contrib/configuration.rb
79
165
  - lib/dashing-contrib/history.rb
80
166
  - lib/dashing-contrib/routes.rb