putsreq 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ }