putsreq 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.codeclimate.yml +7 -0
- data/.coffeelint.json +5 -0
- data/.gitignore +20 -0
- data/.hound.yml +14 -0
- data/.jshintrc +3 -0
- data/.rspec +3 -0
- data/.rubocop.yml +110 -0
- data/.ruby-version +1 -0
- data/.travis.yml +18 -0
- data/Gemfile +91 -0
- data/Gemfile.lock +270 -0
- data/LICENSE +5 -0
- data/Procfile +1 -0
- data/README.md +147 -0
- data/Rakefile +8 -0
- data/app/assets/javascripts/application.js +27 -0
- data/app/assets/javascripts/buckets.js.coffee +68 -0
- data/app/assets/javascripts/initializers.js.coffee +8 -0
- data/app/assets/stylesheets/application.css +15 -0
- data/app/assets/stylesheets/base.css +68 -0
- data/app/assets/stylesheets/buckets.css.scss +91 -0
- data/app/assets/stylesheets/helpers.css +154 -0
- data/app/controllers/application_controller.rb +35 -0
- data/app/controllers/buckets_controller.rb +88 -0
- data/app/controllers/concerns/.keep +0 -0
- data/app/controllers/home_controller.rb +18 -0
- data/app/helpers/application_helper.rb +14 -0
- data/app/interactors/create_request.rb +15 -0
- data/app/interactors/create_response.rb +11 -0
- data/app/interactors/eval_response_builder.rb +55 -0
- data/app/interactors/filter_headers.rb +28 -0
- data/app/interactors/forward_request.rb +39 -0
- data/app/interactors/notify_count.rb +15 -0
- data/app/interactors/record_request.rb +5 -0
- data/app/mailers/.keep +0 -0
- data/app/models/.keep +0 -0
- data/app/models/bucket.rb +99 -0
- data/app/models/concerns/.keep +0 -0
- data/app/models/request.rb +36 -0
- data/app/models/response.rb +22 -0
- data/app/models/user.rb +42 -0
- data/app/views/buckets/_buttons.html.erb +4 -0
- data/app/views/buckets/_form.html.erb +33 -0
- data/app/views/buckets/_readonly_buttons.html.erb +1 -0
- data/app/views/buckets/_requests.html.erb +45 -0
- data/app/views/buckets/show.html.erb +58 -0
- data/app/views/home/index.html.erb +45 -0
- data/app/views/layouts/_header.html.erb +18 -0
- data/app/views/layouts/application.html.erb +28 -0
- data/app/views/layouts/devise.html.erb +22 -0
- data/app/views/shared/_flash.html.erb +10 -0
- data/app/views/users/confirmations/new.html.erb +12 -0
- data/app/views/users/mailer/confirmation_instructions.html.erb +5 -0
- data/app/views/users/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/users/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/users/passwords/edit.html.erb +32 -0
- data/app/views/users/passwords/new.html.erb +23 -0
- data/app/views/users/registrations/edit.html.erb +59 -0
- data/app/views/users/registrations/new.html.erb +46 -0
- data/app/views/users/sessions/new.html.erb +38 -0
- data/app/views/users/shared/_links.erb +25 -0
- data/app/views/users/unlocks/new.html.erb +12 -0
- data/bin/bundle +3 -0
- data/bin/putsreq +71 -0
- data/bin/rails +4 -0
- data/bin/rake +4 -0
- data/bin/rspec +16 -0
- data/config.ru +4 -0
- data/config/application.rb +42 -0
- data/config/boot.rb +4 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +33 -0
- data/config/environments/production.rb +82 -0
- data/config/environments/test.rb +36 -0
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/devise.rb +256 -0
- data/config/initializers/filter_parameter_logging.rb +4 -0
- data/config/initializers/inflections.rb +16 -0
- data/config/initializers/mime_types.rb +5 -0
- data/config/initializers/redis.rb +17 -0
- data/config/initializers/secret_token.rb +12 -0
- data/config/initializers/session_store.rb +3 -0
- data/config/initializers/setup_email.rb +10 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/locales/devise.en.yml +59 -0
- data/config/locales/en.yml +23 -0
- data/config/mongoid.yml +47 -0
- data/config/routes.rb +15 -0
- data/config/unicorn.rb +16 -0
- data/lib/assets/.keep +0 -0
- data/lib/putsreq/version.rb +3 -0
- data/lib/tasks/.keep +0 -0
- data/public/404.html +58 -0
- data/public/422.html +58 -0
- data/public/500.html +57 -0
- data/public/favicon.ico +0 -0
- data/public/images/.keep +0 -0
- data/public/images/favicon.png +0 -0
- data/public/images/favicon144.png +0 -0
- data/public/images/favicon152.png +0 -0
- data/public/images/glyphicons-halflings-white.png +0 -0
- data/public/images/glyphicons-halflings.png +0 -0
- data/public/images/logo.png +0 -0
- data/public/javascripts/vendor/ace/theme-monokai.js +1 -0
- data/public/javascripts/vendor/ace/theme-textmate.js +1 -0
- data/public/javascripts/vendor/ace/worker-javascript.js +1 -0
- data/public/javascripts/vendor/ace/worker-json.js +1 -0
- data/public/robots.txt +5 -0
- data/putsreq.gemspec +22 -0
- data/spec/controllers/buckets_controller_spec.rb +164 -0
- data/spec/interactors/create_request_spec.rb +34 -0
- data/spec/interactors/create_response_spec.rb +14 -0
- data/spec/interactors/eval_response_builder_spec.rb +63 -0
- data/spec/interactors/forward_request_spec.rb +39 -0
- data/spec/models/bucket_spec.rb +96 -0
- data/spec/models/user_spec.rb +5 -0
- data/spec/spec_helper.rb +66 -0
- data/vendor/assets/javascripts/.keep +0 -0
- data/vendor/assets/javascripts/ace/ace.js +10 -0
- data/vendor/assets/javascripts/ace/ext-searchbox.js +1 -0
- data/vendor/assets/javascripts/ace/ext-spellcheck.js +1 -0
- data/vendor/assets/javascripts/ace/ext-static_highlight.js +1 -0
- data/vendor/assets/javascripts/ace/ext-textarea.js +1 -0
- data/vendor/assets/javascripts/ace/keybinding-emacs.js +1 -0
- data/vendor/assets/javascripts/ace/keybinding-vim.js +1 -0
- data/vendor/assets/javascripts/ace/mode-abap.js +1 -0
- data/vendor/assets/javascripts/ace/mode-asciidoc.js +1 -0
- data/vendor/assets/javascripts/ace/mode-c9search.js +1 -0
- data/vendor/assets/javascripts/ace/mode-c_cpp.js +1 -0
- data/vendor/assets/javascripts/ace/mode-clojure.js +1 -0
- data/vendor/assets/javascripts/ace/mode-coffee.js +1 -0
- data/vendor/assets/javascripts/ace/mode-coldfusion.js +1 -0
- data/vendor/assets/javascripts/ace/mode-csharp.js +1 -0
- data/vendor/assets/javascripts/ace/mode-css.js +1 -0
- data/vendor/assets/javascripts/ace/mode-curly.js +1 -0
- data/vendor/assets/javascripts/ace/mode-dart.js +1 -0
- data/vendor/assets/javascripts/ace/mode-diff.js +1 -0
- data/vendor/assets/javascripts/ace/mode-django.js +1 -0
- data/vendor/assets/javascripts/ace/mode-dot.js +1 -0
- data/vendor/assets/javascripts/ace/mode-glsl.js +1 -0
- data/vendor/assets/javascripts/ace/mode-golang.js +1 -0
- data/vendor/assets/javascripts/ace/mode-groovy.js +1 -0
- data/vendor/assets/javascripts/ace/mode-haml.js +1 -0
- data/vendor/assets/javascripts/ace/mode-haxe.js +1 -0
- data/vendor/assets/javascripts/ace/mode-html.js +1 -0
- data/vendor/assets/javascripts/ace/mode-jade.js +1 -0
- data/vendor/assets/javascripts/ace/mode-java.js +1 -0
- data/vendor/assets/javascripts/ace/mode-javascript.js +1 -0
- data/vendor/assets/javascripts/ace/mode-json.js +1 -0
- data/vendor/assets/javascripts/ace/mode-jsp.js +1 -0
- data/vendor/assets/javascripts/ace/mode-jsx.js +1 -0
- data/vendor/assets/javascripts/ace/mode-latex.js +1 -0
- data/vendor/assets/javascripts/ace/mode-less.js +1 -0
- data/vendor/assets/javascripts/ace/mode-liquid.js +1 -0
- data/vendor/assets/javascripts/ace/mode-lisp.js +1 -0
- data/vendor/assets/javascripts/ace/mode-livescript.js +1 -0
- data/vendor/assets/javascripts/ace/mode-lua.js +1 -0
- data/vendor/assets/javascripts/ace/mode-luapage.js +1 -0
- data/vendor/assets/javascripts/ace/mode-lucene.js +1 -0
- data/vendor/assets/javascripts/ace/mode-makefile.js +1 -0
- data/vendor/assets/javascripts/ace/mode-markdown.js +1 -0
- data/vendor/assets/javascripts/ace/mode-objectivec.js +1 -0
- data/vendor/assets/javascripts/ace/mode-ocaml.js +1 -0
- data/vendor/assets/javascripts/ace/mode-perl.js +1 -0
- data/vendor/assets/javascripts/ace/mode-pgsql.js +1 -0
- data/vendor/assets/javascripts/ace/mode-php.js +1 -0
- data/vendor/assets/javascripts/ace/mode-powershell.js +1 -0
- data/vendor/assets/javascripts/ace/mode-python.js +1 -0
- data/vendor/assets/javascripts/ace/mode-r.js +1 -0
- data/vendor/assets/javascripts/ace/mode-rdoc.js +1 -0
- data/vendor/assets/javascripts/ace/mode-rhtml.js +1 -0
- data/vendor/assets/javascripts/ace/mode-ruby.js +1 -0
- data/vendor/assets/javascripts/ace/mode-scad.js +1 -0
- data/vendor/assets/javascripts/ace/mode-scala.js +1 -0
- data/vendor/assets/javascripts/ace/mode-scheme.js +1 -0
- data/vendor/assets/javascripts/ace/mode-scss.js +1 -0
- data/vendor/assets/javascripts/ace/mode-sh.js +1 -0
- data/vendor/assets/javascripts/ace/mode-sql.js +1 -0
- data/vendor/assets/javascripts/ace/mode-stylus.js +1 -0
- data/vendor/assets/javascripts/ace/mode-svg.js +1 -0
- data/vendor/assets/javascripts/ace/mode-tcl.js +1 -0
- data/vendor/assets/javascripts/ace/mode-tex.js +1 -0
- data/vendor/assets/javascripts/ace/mode-text.js +0 -0
- data/vendor/assets/javascripts/ace/mode-textile.js +1 -0
- data/vendor/assets/javascripts/ace/mode-tm_snippet.js +1 -0
- data/vendor/assets/javascripts/ace/mode-typescript.js +1 -0
- data/vendor/assets/javascripts/ace/mode-vbscript.js +1 -0
- data/vendor/assets/javascripts/ace/mode-xml.js +1 -0
- data/vendor/assets/javascripts/ace/mode-xquery.js +1 -0
- data/vendor/assets/javascripts/ace/mode-yaml.js +1 -0
- data/vendor/assets/javascripts/ace/theme-ambiance.js +1 -0
- data/vendor/assets/javascripts/ace/theme-chaos.js +1 -0
- data/vendor/assets/javascripts/ace/theme-chrome.js +1 -0
- data/vendor/assets/javascripts/ace/theme-clouds.js +1 -0
- data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +1 -0
- data/vendor/assets/javascripts/ace/theme-cobalt.js +1 -0
- data/vendor/assets/javascripts/ace/theme-crimson_editor.js +1 -0
- data/vendor/assets/javascripts/ace/theme-dawn.js +1 -0
- data/vendor/assets/javascripts/ace/theme-dreamweaver.js +1 -0
- data/vendor/assets/javascripts/ace/theme-eclipse.js +1 -0
- data/vendor/assets/javascripts/ace/theme-github.js +1 -0
- data/vendor/assets/javascripts/ace/theme-idle_fingers.js +1 -0
- data/vendor/assets/javascripts/ace/theme-kr.js +1 -0
- data/vendor/assets/javascripts/ace/theme-merbivore.js +1 -0
- data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +1 -0
- data/vendor/assets/javascripts/ace/theme-mono_industrial.js +1 -0
- data/vendor/assets/javascripts/ace/theme-monokai.js +1 -0
- data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +1 -0
- data/vendor/assets/javascripts/ace/theme-solarized_dark.js +1 -0
- data/vendor/assets/javascripts/ace/theme-solarized_light.js +1 -0
- data/vendor/assets/javascripts/ace/theme-textmate.js +1 -0
- data/vendor/assets/javascripts/ace/theme-tomorrow.js +1 -0
- data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +1 -0
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +1 -0
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +1 -0
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +1 -0
- data/vendor/assets/javascripts/ace/theme-twilight.js +1 -0
- data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +1 -0
- data/vendor/assets/javascripts/ace/theme-xcode.js +1 -0
- data/vendor/assets/javascripts/ace/worker-coffee.js +1 -0
- data/vendor/assets/javascripts/ace/worker-css.js +1 -0
- data/vendor/assets/javascripts/ace/worker-javascript.js +1 -0
- data/vendor/assets/javascripts/ace/worker-json.js +1 -0
- data/vendor/assets/javascripts/ace/worker-php.js +1 -0
- data/vendor/assets/javascripts/ace/worker-xquery.js +1 -0
- data/vendor/assets/javascripts/jquery.tipsy.js +198 -0
- data/vendor/assets/javascripts/mode-javascript.js +1 -0
- data/vendor/assets/javascripts/theme-monokai.js +1 -0
- data/vendor/assets/javascripts/worker-javascript.js +1 -0
- data/vendor/assets/stylesheets/.keep +0 -0
- data/vendor/assets/stylesheets/tipsy.css +25 -0
- metadata +311 -0
data/LICENSE
ADDED
data/Procfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
|
data/README.md
ADDED
@@ -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.
|
data/Rakefile
ADDED
@@ -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
|
+
}
|