putsreq 0.0.1

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 (233) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +7 -0
  3. data/.coffeelint.json +5 -0
  4. data/.gitignore +20 -0
  5. data/.hound.yml +14 -0
  6. data/.jshintrc +3 -0
  7. data/.rspec +3 -0
  8. data/.rubocop.yml +110 -0
  9. data/.ruby-version +1 -0
  10. data/.travis.yml +18 -0
  11. data/Gemfile +91 -0
  12. data/Gemfile.lock +270 -0
  13. data/LICENSE +5 -0
  14. data/Procfile +1 -0
  15. data/README.md +147 -0
  16. data/Rakefile +8 -0
  17. data/app/assets/javascripts/application.js +27 -0
  18. data/app/assets/javascripts/buckets.js.coffee +68 -0
  19. data/app/assets/javascripts/initializers.js.coffee +8 -0
  20. data/app/assets/stylesheets/application.css +15 -0
  21. data/app/assets/stylesheets/base.css +68 -0
  22. data/app/assets/stylesheets/buckets.css.scss +91 -0
  23. data/app/assets/stylesheets/helpers.css +154 -0
  24. data/app/controllers/application_controller.rb +35 -0
  25. data/app/controllers/buckets_controller.rb +88 -0
  26. data/app/controllers/concerns/.keep +0 -0
  27. data/app/controllers/home_controller.rb +18 -0
  28. data/app/helpers/application_helper.rb +14 -0
  29. data/app/interactors/create_request.rb +15 -0
  30. data/app/interactors/create_response.rb +11 -0
  31. data/app/interactors/eval_response_builder.rb +55 -0
  32. data/app/interactors/filter_headers.rb +28 -0
  33. data/app/interactors/forward_request.rb +39 -0
  34. data/app/interactors/notify_count.rb +15 -0
  35. data/app/interactors/record_request.rb +5 -0
  36. data/app/mailers/.keep +0 -0
  37. data/app/models/.keep +0 -0
  38. data/app/models/bucket.rb +99 -0
  39. data/app/models/concerns/.keep +0 -0
  40. data/app/models/request.rb +36 -0
  41. data/app/models/response.rb +22 -0
  42. data/app/models/user.rb +42 -0
  43. data/app/views/buckets/_buttons.html.erb +4 -0
  44. data/app/views/buckets/_form.html.erb +33 -0
  45. data/app/views/buckets/_readonly_buttons.html.erb +1 -0
  46. data/app/views/buckets/_requests.html.erb +45 -0
  47. data/app/views/buckets/show.html.erb +58 -0
  48. data/app/views/home/index.html.erb +45 -0
  49. data/app/views/layouts/_header.html.erb +18 -0
  50. data/app/views/layouts/application.html.erb +28 -0
  51. data/app/views/layouts/devise.html.erb +22 -0
  52. data/app/views/shared/_flash.html.erb +10 -0
  53. data/app/views/users/confirmations/new.html.erb +12 -0
  54. data/app/views/users/mailer/confirmation_instructions.html.erb +5 -0
  55. data/app/views/users/mailer/reset_password_instructions.html.erb +8 -0
  56. data/app/views/users/mailer/unlock_instructions.html.erb +7 -0
  57. data/app/views/users/passwords/edit.html.erb +32 -0
  58. data/app/views/users/passwords/new.html.erb +23 -0
  59. data/app/views/users/registrations/edit.html.erb +59 -0
  60. data/app/views/users/registrations/new.html.erb +46 -0
  61. data/app/views/users/sessions/new.html.erb +38 -0
  62. data/app/views/users/shared/_links.erb +25 -0
  63. data/app/views/users/unlocks/new.html.erb +12 -0
  64. data/bin/bundle +3 -0
  65. data/bin/putsreq +71 -0
  66. data/bin/rails +4 -0
  67. data/bin/rake +4 -0
  68. data/bin/rspec +16 -0
  69. data/config.ru +4 -0
  70. data/config/application.rb +42 -0
  71. data/config/boot.rb +4 -0
  72. data/config/environment.rb +5 -0
  73. data/config/environments/development.rb +33 -0
  74. data/config/environments/production.rb +82 -0
  75. data/config/environments/test.rb +36 -0
  76. data/config/initializers/backtrace_silencers.rb +7 -0
  77. data/config/initializers/devise.rb +256 -0
  78. data/config/initializers/filter_parameter_logging.rb +4 -0
  79. data/config/initializers/inflections.rb +16 -0
  80. data/config/initializers/mime_types.rb +5 -0
  81. data/config/initializers/redis.rb +17 -0
  82. data/config/initializers/secret_token.rb +12 -0
  83. data/config/initializers/session_store.rb +3 -0
  84. data/config/initializers/setup_email.rb +10 -0
  85. data/config/initializers/wrap_parameters.rb +14 -0
  86. data/config/locales/devise.en.yml +59 -0
  87. data/config/locales/en.yml +23 -0
  88. data/config/mongoid.yml +47 -0
  89. data/config/routes.rb +15 -0
  90. data/config/unicorn.rb +16 -0
  91. data/lib/assets/.keep +0 -0
  92. data/lib/putsreq/version.rb +3 -0
  93. data/lib/tasks/.keep +0 -0
  94. data/public/404.html +58 -0
  95. data/public/422.html +58 -0
  96. data/public/500.html +57 -0
  97. data/public/favicon.ico +0 -0
  98. data/public/images/.keep +0 -0
  99. data/public/images/favicon.png +0 -0
  100. data/public/images/favicon144.png +0 -0
  101. data/public/images/favicon152.png +0 -0
  102. data/public/images/glyphicons-halflings-white.png +0 -0
  103. data/public/images/glyphicons-halflings.png +0 -0
  104. data/public/images/logo.png +0 -0
  105. data/public/javascripts/vendor/ace/theme-monokai.js +1 -0
  106. data/public/javascripts/vendor/ace/theme-textmate.js +1 -0
  107. data/public/javascripts/vendor/ace/worker-javascript.js +1 -0
  108. data/public/javascripts/vendor/ace/worker-json.js +1 -0
  109. data/public/robots.txt +5 -0
  110. data/putsreq.gemspec +22 -0
  111. data/spec/controllers/buckets_controller_spec.rb +164 -0
  112. data/spec/interactors/create_request_spec.rb +34 -0
  113. data/spec/interactors/create_response_spec.rb +14 -0
  114. data/spec/interactors/eval_response_builder_spec.rb +63 -0
  115. data/spec/interactors/forward_request_spec.rb +39 -0
  116. data/spec/models/bucket_spec.rb +96 -0
  117. data/spec/models/user_spec.rb +5 -0
  118. data/spec/spec_helper.rb +66 -0
  119. data/vendor/assets/javascripts/.keep +0 -0
  120. data/vendor/assets/javascripts/ace/ace.js +10 -0
  121. data/vendor/assets/javascripts/ace/ext-searchbox.js +1 -0
  122. data/vendor/assets/javascripts/ace/ext-spellcheck.js +1 -0
  123. data/vendor/assets/javascripts/ace/ext-static_highlight.js +1 -0
  124. data/vendor/assets/javascripts/ace/ext-textarea.js +1 -0
  125. data/vendor/assets/javascripts/ace/keybinding-emacs.js +1 -0
  126. data/vendor/assets/javascripts/ace/keybinding-vim.js +1 -0
  127. data/vendor/assets/javascripts/ace/mode-abap.js +1 -0
  128. data/vendor/assets/javascripts/ace/mode-asciidoc.js +1 -0
  129. data/vendor/assets/javascripts/ace/mode-c9search.js +1 -0
  130. data/vendor/assets/javascripts/ace/mode-c_cpp.js +1 -0
  131. data/vendor/assets/javascripts/ace/mode-clojure.js +1 -0
  132. data/vendor/assets/javascripts/ace/mode-coffee.js +1 -0
  133. data/vendor/assets/javascripts/ace/mode-coldfusion.js +1 -0
  134. data/vendor/assets/javascripts/ace/mode-csharp.js +1 -0
  135. data/vendor/assets/javascripts/ace/mode-css.js +1 -0
  136. data/vendor/assets/javascripts/ace/mode-curly.js +1 -0
  137. data/vendor/assets/javascripts/ace/mode-dart.js +1 -0
  138. data/vendor/assets/javascripts/ace/mode-diff.js +1 -0
  139. data/vendor/assets/javascripts/ace/mode-django.js +1 -0
  140. data/vendor/assets/javascripts/ace/mode-dot.js +1 -0
  141. data/vendor/assets/javascripts/ace/mode-glsl.js +1 -0
  142. data/vendor/assets/javascripts/ace/mode-golang.js +1 -0
  143. data/vendor/assets/javascripts/ace/mode-groovy.js +1 -0
  144. data/vendor/assets/javascripts/ace/mode-haml.js +1 -0
  145. data/vendor/assets/javascripts/ace/mode-haxe.js +1 -0
  146. data/vendor/assets/javascripts/ace/mode-html.js +1 -0
  147. data/vendor/assets/javascripts/ace/mode-jade.js +1 -0
  148. data/vendor/assets/javascripts/ace/mode-java.js +1 -0
  149. data/vendor/assets/javascripts/ace/mode-javascript.js +1 -0
  150. data/vendor/assets/javascripts/ace/mode-json.js +1 -0
  151. data/vendor/assets/javascripts/ace/mode-jsp.js +1 -0
  152. data/vendor/assets/javascripts/ace/mode-jsx.js +1 -0
  153. data/vendor/assets/javascripts/ace/mode-latex.js +1 -0
  154. data/vendor/assets/javascripts/ace/mode-less.js +1 -0
  155. data/vendor/assets/javascripts/ace/mode-liquid.js +1 -0
  156. data/vendor/assets/javascripts/ace/mode-lisp.js +1 -0
  157. data/vendor/assets/javascripts/ace/mode-livescript.js +1 -0
  158. data/vendor/assets/javascripts/ace/mode-lua.js +1 -0
  159. data/vendor/assets/javascripts/ace/mode-luapage.js +1 -0
  160. data/vendor/assets/javascripts/ace/mode-lucene.js +1 -0
  161. data/vendor/assets/javascripts/ace/mode-makefile.js +1 -0
  162. data/vendor/assets/javascripts/ace/mode-markdown.js +1 -0
  163. data/vendor/assets/javascripts/ace/mode-objectivec.js +1 -0
  164. data/vendor/assets/javascripts/ace/mode-ocaml.js +1 -0
  165. data/vendor/assets/javascripts/ace/mode-perl.js +1 -0
  166. data/vendor/assets/javascripts/ace/mode-pgsql.js +1 -0
  167. data/vendor/assets/javascripts/ace/mode-php.js +1 -0
  168. data/vendor/assets/javascripts/ace/mode-powershell.js +1 -0
  169. data/vendor/assets/javascripts/ace/mode-python.js +1 -0
  170. data/vendor/assets/javascripts/ace/mode-r.js +1 -0
  171. data/vendor/assets/javascripts/ace/mode-rdoc.js +1 -0
  172. data/vendor/assets/javascripts/ace/mode-rhtml.js +1 -0
  173. data/vendor/assets/javascripts/ace/mode-ruby.js +1 -0
  174. data/vendor/assets/javascripts/ace/mode-scad.js +1 -0
  175. data/vendor/assets/javascripts/ace/mode-scala.js +1 -0
  176. data/vendor/assets/javascripts/ace/mode-scheme.js +1 -0
  177. data/vendor/assets/javascripts/ace/mode-scss.js +1 -0
  178. data/vendor/assets/javascripts/ace/mode-sh.js +1 -0
  179. data/vendor/assets/javascripts/ace/mode-sql.js +1 -0
  180. data/vendor/assets/javascripts/ace/mode-stylus.js +1 -0
  181. data/vendor/assets/javascripts/ace/mode-svg.js +1 -0
  182. data/vendor/assets/javascripts/ace/mode-tcl.js +1 -0
  183. data/vendor/assets/javascripts/ace/mode-tex.js +1 -0
  184. data/vendor/assets/javascripts/ace/mode-text.js +0 -0
  185. data/vendor/assets/javascripts/ace/mode-textile.js +1 -0
  186. data/vendor/assets/javascripts/ace/mode-tm_snippet.js +1 -0
  187. data/vendor/assets/javascripts/ace/mode-typescript.js +1 -0
  188. data/vendor/assets/javascripts/ace/mode-vbscript.js +1 -0
  189. data/vendor/assets/javascripts/ace/mode-xml.js +1 -0
  190. data/vendor/assets/javascripts/ace/mode-xquery.js +1 -0
  191. data/vendor/assets/javascripts/ace/mode-yaml.js +1 -0
  192. data/vendor/assets/javascripts/ace/theme-ambiance.js +1 -0
  193. data/vendor/assets/javascripts/ace/theme-chaos.js +1 -0
  194. data/vendor/assets/javascripts/ace/theme-chrome.js +1 -0
  195. data/vendor/assets/javascripts/ace/theme-clouds.js +1 -0
  196. data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +1 -0
  197. data/vendor/assets/javascripts/ace/theme-cobalt.js +1 -0
  198. data/vendor/assets/javascripts/ace/theme-crimson_editor.js +1 -0
  199. data/vendor/assets/javascripts/ace/theme-dawn.js +1 -0
  200. data/vendor/assets/javascripts/ace/theme-dreamweaver.js +1 -0
  201. data/vendor/assets/javascripts/ace/theme-eclipse.js +1 -0
  202. data/vendor/assets/javascripts/ace/theme-github.js +1 -0
  203. data/vendor/assets/javascripts/ace/theme-idle_fingers.js +1 -0
  204. data/vendor/assets/javascripts/ace/theme-kr.js +1 -0
  205. data/vendor/assets/javascripts/ace/theme-merbivore.js +1 -0
  206. data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +1 -0
  207. data/vendor/assets/javascripts/ace/theme-mono_industrial.js +1 -0
  208. data/vendor/assets/javascripts/ace/theme-monokai.js +1 -0
  209. data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +1 -0
  210. data/vendor/assets/javascripts/ace/theme-solarized_dark.js +1 -0
  211. data/vendor/assets/javascripts/ace/theme-solarized_light.js +1 -0
  212. data/vendor/assets/javascripts/ace/theme-textmate.js +1 -0
  213. data/vendor/assets/javascripts/ace/theme-tomorrow.js +1 -0
  214. data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +1 -0
  215. data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +1 -0
  216. data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +1 -0
  217. data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +1 -0
  218. data/vendor/assets/javascripts/ace/theme-twilight.js +1 -0
  219. data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +1 -0
  220. data/vendor/assets/javascripts/ace/theme-xcode.js +1 -0
  221. data/vendor/assets/javascripts/ace/worker-coffee.js +1 -0
  222. data/vendor/assets/javascripts/ace/worker-css.js +1 -0
  223. data/vendor/assets/javascripts/ace/worker-javascript.js +1 -0
  224. data/vendor/assets/javascripts/ace/worker-json.js +1 -0
  225. data/vendor/assets/javascripts/ace/worker-php.js +1 -0
  226. data/vendor/assets/javascripts/ace/worker-xquery.js +1 -0
  227. data/vendor/assets/javascripts/jquery.tipsy.js +198 -0
  228. data/vendor/assets/javascripts/mode-javascript.js +1 -0
  229. data/vendor/assets/javascripts/theme-monokai.js +1 -0
  230. data/vendor/assets/javascripts/worker-javascript.js +1 -0
  231. data/vendor/assets/stylesheets/.keep +0 -0
  232. data/vendor/assets/stylesheets/tipsy.css +25 -0
  233. metadata +311 -0
data/LICENSE ADDED
@@ -0,0 +1,5 @@
1
+ Copyright (c) Pablo Cantero
2
+
3
+ PutsReq is an Open Source project licensed under the terms of
4
+ the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
5
+ for license text.
@@ -0,0 +1 @@
1
+ web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
@@ -0,0 +1,147 @@
1
+ [![Build Status](https://travis-ci.org/phstc/putsreq.svg)](https://travis-ci.org/phstc/putsreq)
2
+ [![Code Climate](https://codeclimate.com/github/phstc/putsreq/badges/gpa.svg)](https://codeclimate.com/github/phstc/putsreq)
3
+ [![Test Coverage](https://codeclimate.com/github/phstc/putsreq/badges/coverage.svg)](https://codeclimate.com/github/phstc/putsreq/coverage)
4
+
5
+ ## PutsReq
6
+
7
+ PutsReq lets you record HTTP requests and simulate responses like no other tool available. [Try it now](http://putsreq.com)!
8
+
9
+ Check this post: [Play Rock-paper-scissors with Slack and PutsReq](http://www.pablocantero.com/blog/2014/10/12/play-rock-paper-scissors-with-slack-and-putsreq/) for some other examples.
10
+
11
+ ### Getting Started
12
+
13
+ Steps to run PutsReq in development.
14
+
15
+ #### Install MongoDB
16
+
17
+ ```bash
18
+ brew install mongo
19
+
20
+ mongod
21
+ ```
22
+
23
+ #### Start PutsReq
24
+
25
+ ```
26
+ cd ~/workspace
27
+
28
+ git clone git@github.com:phstc/putsreq.git
29
+
30
+ cd putsreq
31
+
32
+ bundle install
33
+
34
+ rails s
35
+
36
+ open http://localhost:3000
37
+ ```
38
+
39
+ ### Response Builder
40
+
41
+ The Response Builder is the place where you can create your responses using JavaScript V8.
42
+
43
+ Here is the list of request attributes you can access to create your responses:
44
+
45
+ #### request
46
+
47
+ ```javascript
48
+ // curl -X POST -H 'X-MyHeader: MyHeaderValue' -d 'name=Pablo' https://putsreq.com/<YOUR-TOKEN>
49
+
50
+ request.request_method;
51
+ // => POST
52
+
53
+ request.body;
54
+ // => name=Pablo
55
+
56
+ request.params.name;
57
+ // => Pablo
58
+
59
+ request.headers['HTTP_X_MYHEADER'];
60
+ // => MyHeaderValue
61
+ ```
62
+
63
+ Parsing a JSON request:
64
+
65
+ ```javascript
66
+ // curl -i -X POST -H 'Content-Type: application/json' -d '{"message":"Hello World"}' https://putsreq.com/<YOUR-TOKEN>
67
+
68
+ var parsedBody = JSON.parse(request.body);
69
+
70
+ parsedBody.message;
71
+ // => Hello World
72
+ ```
73
+
74
+ #### response
75
+
76
+ ```javascript
77
+ response.status = 200; // default value
78
+ response.headers = {}; // default value
79
+ response.body = 'ok'; // default value
80
+ ```
81
+
82
+ Returning a JSON response:
83
+
84
+ ```javascript
85
+ response.headers['Content-Type'] = 'application/json';
86
+
87
+ response.body = { 'message': 'Hello World' };
88
+ ```
89
+
90
+ #### forwardTo
91
+
92
+ If you only want to log your requests, you can use PutsReq as a proxy to forward them.
93
+
94
+ ```javascript
95
+ request.forwardTo = 'http://example.com/api';
96
+ ```
97
+
98
+ You can also modify the requests before forwarding them.
99
+
100
+ ```javascript
101
+ // add or change a header
102
+ request.headers['X-MyNewHeader'] = 'MyHeaderValue'
103
+
104
+ var parsedBody = JSON.parse(request.body);
105
+
106
+ // add or change a value
107
+ parsedBody['my_new_key'] = 'my new value';
108
+
109
+ request.body = parsedBody;
110
+
111
+ request.forwardTo = 'http://example.com/api';
112
+ ```
113
+
114
+ ### Ajax
115
+
116
+ PutsReq supports [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), so you can use it to test your Ajax calls.
117
+
118
+ ```html
119
+ <html>
120
+ <head>
121
+ <title>Your Website</title>
122
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
123
+ <script>
124
+ // Sample PutsReq Response Builder
125
+ // https://putsreq.com/<YOUR-TOKEN>/inspect
126
+ // response.headers['Content-Type'] = 'application/json';
127
+ // response.body = { 'message': 'Hello World' };
128
+
129
+ // Sample Ajax call
130
+ $.get('https://putsreq.com/<YOUR-TOKEN>', function(data) {
131
+ alert(data.message);
132
+ // => 'Hello World'
133
+ });
134
+ </script>
135
+ </head>
136
+ <body>
137
+ </body>
138
+ </html>
139
+ ```
140
+
141
+ ### Sample Integration Tests
142
+
143
+ https://github.com/phstc/putsreq_integration_sample
144
+
145
+ ### License
146
+
147
+ Please see [LICENSE](https://github.com/phstc/putsreq/blob/master/LICENSE) for licensing details.
@@ -0,0 +1,8 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+
6
+ PutsReq::Application.load_tasks
7
+
8
+ require 'bundler/gem_tasks'
@@ -0,0 +1,27 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require bootstrap
16
+ //= require jquery.tipsy
17
+ //= require clipboard
18
+ //= require favico.js
19
+ //
20
+ //= require ace/ace
21
+ //= require ace/theme-chrome
22
+ //= require ace/mode-json
23
+ //= require ace/mode-javascript
24
+ //
25
+ //= require dispatcher
26
+ //= require initializers
27
+ //= require_tree .
@@ -0,0 +1,68 @@
1
+ App.buckets = {}
2
+
3
+ App.buckets['share'] = App.buckets['show'] = ->
4
+ App.buckets.initializeAce()
5
+ RequestCountPoller.start()
6
+
7
+ tipsyConfig = title: 'Copy to Clipboard', copiedHint: 'Copied!'
8
+
9
+ $copyButton = $('#copy-button')
10
+ $copyButton.tipsy(gravity: $.fn.tipsy.autoNS)
11
+ $copyButton.attr('title', tipsyConfig.title)
12
+
13
+ clipboard = new Clipboard('#copy-button')
14
+ clipboard.on 'success', ->
15
+ $copyButton.prop('title', tipsyConfig.copiedHint).tipsy('show')
16
+ $copyButton.attr('original-title', tipsyConfig.title)
17
+
18
+ App.buckets.initializeAce = ->
19
+ autoResizeAce = ->
20
+ # http://stackoverflow.com/questions/11584061/
21
+ newHeight = editor.getSession().getScreenLength() * editor.renderer.lineHeight + editor.renderer.scrollBar.getWidth()
22
+
23
+ newHeight = 150 if newHeight < 150
24
+
25
+ $('#editor').height "#{newHeight}px"
26
+ $('#editor-section').height "#{newHeight}x"
27
+
28
+ # This call is required for the editor to fix all of
29
+ # its inner structure for adapting to a change in size
30
+ editor.resize()
31
+
32
+ $('#putsreq-url-input').on 'click', -> $(this).select()
33
+
34
+ editor = ace.edit 'editor'
35
+ editor.setTheme 'ace/theme/monokai'
36
+ editor.setShowPrintMargin(false)
37
+ editor.getSession().setMode 'ace/mode/javascript'
38
+ editor.getSession().on 'change', ->
39
+ $('#bucket_response_builder').val editor.getSession().getValue()
40
+
41
+ editor.setValue $('#response-builder-container').text()
42
+ editor.clearSelection()
43
+
44
+ # Set initial size to match initial content
45
+ autoResizeAce()
46
+
47
+ # Whenever a change happens inside the ACE editor, update
48
+ # the size again
49
+ editor.getSession().on 'change', autoResizeAce
50
+
51
+ RequestCountPoller =
52
+ start: ->
53
+ favicon = new Favico(bgColor: '#6C92C8', animation: 'none')
54
+ favicon.badge($('#bucket-request-count').text())
55
+
56
+ bucket = $('#putsreq-url-input').data('bucket-token')
57
+
58
+ pusher = new Pusher('3466d56fe2ef1fdd2943')
59
+ channel = pusher.subscribe("channel_requests_#{bucket}")
60
+ channel.bind 'new', (data) ->
61
+ try
62
+ $('#bucket-request-count').text(data.count)
63
+
64
+ favicon.badge(data.count)
65
+ catch error
66
+
67
+ $('#new-requests-info').hide().
68
+ html('<em><a id="new-requests-received" href="javascript:window.location.reload();">New requests found. Load newer requests?</a></em>').fadeIn('slow')
@@ -0,0 +1,8 @@
1
+ window.App = {}
2
+
3
+ # We need it to load Ace editor workers. Otherwise it will fail with assets pipeline.
4
+ ace.config.set('workerPath', '/javascripts/vendor/ace/')
5
+ ace.config.set('themePath', '/javascripts/vendor/ace/')
6
+
7
+ $ ->
8
+ Dispatcher.run App, $('body').data('route')
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
11
+ *= require bootstrap
12
+ *= require tipsy
13
+ *= require_self
14
+ *= require_tree .
15
+ */
@@ -0,0 +1,68 @@
1
+ html { font-size: 62.5%; }
2
+ body { font-size: 14px; font-size: 1.4rem; background: #f7f7f7;} /* =14px */
3
+ #editor {
4
+ width: 100%;
5
+ height: 100%;
6
+ }
7
+ body {
8
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
9
+ }
10
+ header {
11
+ margin-top: 50px;
12
+ text-align: center;
13
+ }
14
+ header h3 {
15
+ width: 750px;
16
+ margin: 20px auto;
17
+ line-height: 1.2em;
18
+ text-align: center;
19
+ font-weight: normal;
20
+ }
21
+ header h3 em {
22
+ font-weight: bold;
23
+ font-style: normal;
24
+ }
25
+ section.start {
26
+ color: #58585a;
27
+ width: 750px;
28
+ margin: 5em auto;
29
+ }
30
+ .nav {
31
+ margin: 10px 0 50px 0;
32
+ overflow: hidden;
33
+ }
34
+ .nav li {
35
+ float: left;
36
+ margin-right: 10px;
37
+ line-height: 30px;
38
+ }
39
+ .nav li a {
40
+ padding: 0 10px;
41
+ }
42
+ .nav li.logo img {
43
+ max-width: 100px;
44
+ }
45
+ .nav li.logo {
46
+ margin: 0;
47
+ }
48
+ .nav li.logo a {
49
+ background: none;
50
+ padding: 0 20px 0 0;
51
+ }
52
+ .putsreq-url-box {
53
+ text-align: center;
54
+ }
55
+ .putsreq-url {
56
+ margin: 0 auto;
57
+ width: 633px;
58
+ }
59
+ .putsreq-url input {
60
+ font-size: 2em;
61
+ width: 645px;
62
+ text-indent: 10px;
63
+ }
64
+ .putsreq-name input {
65
+ font-size: 2em;
66
+ width: 400px;
67
+ text-indent: 10px;
68
+ }
@@ -0,0 +1,91 @@
1
+ // Place all the styles related to the buckets controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: http://sass-lang.com/
4
+
5
+ .requests-header {
6
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
7
+ font-size: 12px;
8
+ width: 100%;
9
+ text-align: left;
10
+ border-collapse: collapse;
11
+ table-layout: fixed;
12
+ }
13
+ .requests-header thead th:nth-child(1) {
14
+ -moz-border-radius-topleft: 10px;
15
+ -webkit-border-top-left-radius: 10px;
16
+ width: 300px;
17
+ }
18
+ .requests-header thead th:nth-child(2) {
19
+ -moz-border-radius-topright: 10px;
20
+ -webkit-border-top-right-radius: 10px;
21
+ width: 700px;
22
+ }
23
+ .requests-header thead th {
24
+ font-weight: normal;
25
+ font-size: 13px;
26
+ color: #fff;
27
+ background: #428bca;
28
+ padding: 8px;
29
+ }
30
+ .requests-header tbody td {
31
+ background: #fff;
32
+ border-top: 1px solid #eee;
33
+ color: #669;
34
+ padding: 4px;
35
+ overflow: hidden;
36
+ text-overflow: ellipsis;
37
+ white-space: nowrap;
38
+ }
39
+ .requests-header tbody td.key {
40
+ width: 250px;
41
+ }
42
+ .requests-header tbody td.value {
43
+ width: 920px;
44
+ max-width: 920px;
45
+ }
46
+ .requests-header tfoot td {
47
+ margin-top: 10px;
48
+ -moz-border-radius-bottomright: 10px;
49
+ -moz-border-radius-bottomleft: 10px;
50
+ -webkit-border-bottom-left-radius: 10px;
51
+ -webkit-border-bottom-right-radius: 10px;
52
+ padding: 10px;
53
+ background: #f2f2f2;
54
+ }
55
+ .request-footer-info {
56
+ float: left;
57
+ margin-right: 20px;
58
+ }
59
+ .request-footer-info small {
60
+ display: block;
61
+ }
62
+ .request-footer-info span {
63
+ white-space: nowrap;
64
+ }
65
+ .requests-header tbody tr:hover td{background:#d0dafd;}
66
+ .history {
67
+ float: right;
68
+ background-color: #eee;
69
+ margin: 0 0 0 20px;
70
+ padding: 10px;
71
+ border-left: 3px solid #428bca;
72
+ }
73
+ .history ul {
74
+ margin: 0;
75
+ list-style-position: inside;
76
+ padding: 0;
77
+ }
78
+
79
+ .request-show {
80
+ pre {
81
+ background-color: #fff;
82
+ border: 1px solid #fff;
83
+ margin: 0;
84
+ padding: 0;
85
+ }
86
+
87
+ pre p {
88
+ margin: 0;
89
+ padding: 0;
90
+ }
91
+ }