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
@@ -0,0 +1,28 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <%= render 'layouts/header' %>
5
+ </head>
6
+ <body data-route="<%= dispatcher_route %>">
7
+
8
+ <!-- https://github.com/blog/273-github-ribbons -->
9
+ <a href="https://github.com/phstc/putsreq"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"></a>
10
+
11
+ <div class="container">
12
+ <%= render 'shared/flash' %>
13
+ <%= yield %>
14
+ <hr />
15
+ <div class="row">
16
+ <div style="float:left">
17
+ <strong>Requests Recorded: <%= REDIS.get 'requests_recorded' %></strong>
18
+ <br/>
19
+ <br/>
20
+ <p>Are you looking for Email testing tools? Have a look at <a href="http://putsbox.com" target="_blank">PutsBox</a>.</p>
21
+ </div>
22
+ <div style="float:right">
23
+ Developed by <a href="http://pablocantero.com" target="_blank">Pablo Cantero</a> | Design by <a href="http://rodger.com.br" target="_blank">Glauber Rodger</a>.
24
+ </div>
25
+ </div>
26
+ </div>
27
+ </body>
28
+ </html>
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <%= render 'layouts/header' %>
5
+ </head>
6
+ <body data-route="<%= dispatcher_route %>">
7
+
8
+ <!-- https://github.com/blog/273-github-ribbons -->
9
+ <a href="https://github.com/phstc/putsreq"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"></a>
10
+
11
+ <div class="container">
12
+ <%= render 'shared/flash' %>
13
+ <ul class="nav">
14
+ <li class="logo"><a href="/"><%= image_tag 'logo.png' %></a></li>
15
+ </ul>
16
+ <%= yield %>
17
+ <hr />
18
+ <strong>Requests Recorded: <%= REDIS.get 'requests_recorded' %></strong>
19
+ </div>
20
+
21
+ </body>
22
+ </html>
@@ -0,0 +1,10 @@
1
+ <% if alert %>
2
+ <div id="main-alert" class="alert alert-danger">
3
+ <h4><%= alert %></h4>
4
+ </div>
5
+ <% end %>
6
+ <% if notice %>
7
+ <div id="main-alert" class="alert alert-success">
8
+ <h4><%= notice %></h4>
9
+ </div>
10
+ <% end %>
@@ -0,0 +1,12 @@
1
+ <h2>Resend confirmation instructions</h2>
2
+
3
+ <%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>
4
+ <%= devise_error_messages! %>
5
+
6
+ <div><%= f.label :email %><br />
7
+ <%= f.email_field :email, autofocus: true %></div>
8
+
9
+ <div><%= f.submit "Resend confirmation instructions" %></div>
10
+ <% end %>
11
+
12
+ <%= render "users/shared/links" %>
@@ -0,0 +1,5 @@
1
+ <p>Welcome <%= @email %>!</p>
2
+
3
+ <p>You can confirm your account email through the link below:</p>
4
+
5
+ <p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>
@@ -0,0 +1,8 @@
1
+ <p>Hello <%= @resource.email %>!</p>
2
+
3
+ <p>Someone has requested a link to change your password. You can do this through the link below.</p>
4
+
5
+ <p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %></p>
6
+
7
+ <p>If you didn't request this, please ignore this email.</p>
8
+ <p>Your password won't change until you access the link above and create a new one.</p>
@@ -0,0 +1,7 @@
1
+ <p>Hello <%= @resource.email %>!</p>
2
+
3
+ <p>Your account has been locked due to an excessive number of unsuccessful sign in attempts.</p>
4
+
5
+ <p>Click the link below to unlock your account:</p>
6
+
7
+ <p><%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %></p>
@@ -0,0 +1,32 @@
1
+ <h2>Change your password</h2>
2
+
3
+ <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put, class: 'form-horizontal' }) do |f| %>
4
+ <%= devise_error_messages! %>
5
+ <%= f.hidden_field :reset_password_token %>
6
+
7
+ <div class="form-group">
8
+ <%= f.label :password, "New password", class: "col-sm-2 control-label" %>
9
+ <div class="col-sm-6">
10
+ <%= f.password_field :password, autocomplete: "off", class: "form-control" %>
11
+ </div>
12
+ </div>
13
+
14
+ <div class="form-group">
15
+ <%= f.label :password_confirmation, "Confirm new password", class: "col-sm-2 control-label" %>
16
+ <div class="col-sm-6">
17
+ <%= f.password_field :password_confirmation, autocomplete: "off", class: "form-control" %>
18
+ </div>
19
+ </div>
20
+
21
+ <div class="form-group">
22
+ <div class="col-sm-6 col-sm-offset-2">
23
+ <%= f.submit "Change my password", class: "btn btn-primary" %>
24
+ </div>
25
+ </div>
26
+
27
+ <div class="form-group">
28
+ <div class="col-sm-6 col-sm-offset-2">
29
+ <%= render "users/shared/links" %>
30
+ </div>
31
+ </div>
32
+ <% end %>
@@ -0,0 +1,23 @@
1
+ <h2>Forgot your password?</h2>
2
+
3
+ <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post, class: 'form-horizontal' }) do |f| %>
4
+ <%= devise_error_messages! %>
5
+
6
+ <div class="form-group">
7
+ <%= f.label :email, class: "col-sm-2 control-label" %>
8
+ <div class="col-sm-6">
9
+ <%= f.email_field :email, autofocus: true, class: "form-control" %>
10
+ </div>
11
+ </div>
12
+
13
+ <div class="form-group">
14
+ <div class="col-sm-6 col-sm-offset-2">
15
+ <%= f.submit "Send me reset password instructions", class: "btn btn-primary" %>
16
+ </div>
17
+ </div>
18
+ <div class="form-group">
19
+ <div class="col-sm-6 col-sm-offset-2">
20
+ <%= render "users/shared/links" %>
21
+ </div>
22
+ </div>
23
+ <% end %>
@@ -0,0 +1,59 @@
1
+ <h2>Edit <%= resource_name.to_s.humanize %></h2>
2
+
3
+ <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put, class: 'form-horizontal' }) do |f| %>
4
+ <%= devise_error_messages! %>
5
+
6
+ <div class="form-group">
7
+ <%= f.label :name, class: "col-sm-2 control-label" %>
8
+ <div class="col-sm-6">
9
+ <%= f.text_field :name, class: "form-control" %>
10
+ </div>
11
+ </div>
12
+
13
+ <div class="form-group">
14
+ <%= f.label :email, class: 'col-sm-2 control-label' %>
15
+ <div class="col-sm-6">
16
+ <%= f.email_field :email, class: 'form-control' %>
17
+ </div>
18
+ </div>
19
+
20
+ <div class="form-group">
21
+ <%= f.label :password, class: 'col-sm-2 control-label' %> <i>(leave blank if you don't want to change it)</i>
22
+ <div class="col-sm-6">
23
+ <%= f.password_field :password, autocomplete: "off", class: 'form-control' %>
24
+ </div>
25
+ </div>
26
+
27
+
28
+ <div class="form-group">
29
+ <%= f.label :password_confirmation, class: 'col-sm-2 control-label' %>
30
+ <div class="col-sm-6">
31
+ <%= f.password_field :password_confirmation, autocomplete: "off", class: 'form-control' %>
32
+ </div>
33
+ </div>
34
+
35
+ <div class="form-group">
36
+ <%= f.label :current_password, class: 'col-sm-2 control-label' %> <i>(we need your current password to confirm your changes)</i>
37
+ <div class="col-sm-6">
38
+ <%= f.password_field :current_password, autocomplete: "off", class: 'form-control' %>
39
+ </div>
40
+ </div>
41
+
42
+ <div class="form-group">
43
+ <div class="col-sm-offset-2 col-sm-6">
44
+ <%= f.submit "Update", class: "btn btn-primary" %>
45
+ </div>
46
+ </div>
47
+
48
+ <div class="form-group">
49
+ <div class="col-sm-offset-2 col-sm-6">
50
+ <%= render "users/shared/links" %>
51
+ </div>
52
+ </div>
53
+ <% end %>
54
+
55
+ <h5>Cancel my account</h5>
56
+
57
+ <p>Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-default btn-xs' %></p>
58
+
59
+ <%= link_to "Back", :back %>
@@ -0,0 +1,46 @@
1
+ <h2>Sign up</h2>
2
+
3
+ <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { class: 'form-horizontal' }) do |f| %>
4
+
5
+ <%= devise_error_messages! %>
6
+
7
+ <div class="form-group">
8
+ <%= f.label :name, class: "col-sm-2 control-label" %>
9
+ <div class="col-sm-6">
10
+ <%= f.text_field :name, class: "form-control" %>
11
+ </div>
12
+ </div>
13
+
14
+ <div class="form-group">
15
+ <%= f.label :email, class: "col-sm-2 control-label" %>
16
+ <div class="col-sm-6">
17
+ <%= f.email_field :email, class: "form-control" %>
18
+ </div>
19
+ </div>
20
+
21
+ <div class="form-group">
22
+ <%= f.label :password, class: "col-sm-2 control-label" %>
23
+ <div class="col-sm-6">
24
+ <%= f.password_field :password, autocomplete: "off", class: "form-control" %>
25
+ </div>
26
+ </div>
27
+
28
+ <div class="form-group">
29
+ <%= f.label :password_confirmation, class: "col-sm-2 control-label" %>
30
+ <div class="col-sm-6">
31
+ <%= f.password_field :password_confirmation, autocomplete: "off", class: "form-control" %>
32
+ </div>
33
+ </div>
34
+
35
+ <div class="form-group">
36
+ <div class="col-sm-offset-2 col-sm-6">
37
+ <%= f.submit "Sign up", class: "btn btn-primary" %>
38
+ </div>
39
+ </div>
40
+
41
+ <div class="form-group">
42
+ <div class="col-sm-offset-2 col-sm-6">
43
+ <%= render "users/shared/links" %>
44
+ </div>
45
+ </div>
46
+ <% end %>
@@ -0,0 +1,38 @@
1
+ <h2>Sign in</h2>
2
+
3
+ <%= form_for(resource, as: resource_name, url: session_path(resource_name), html: {class: 'form-horizontal'}) do |f| %>
4
+ <div class="form-group">
5
+ <%= f.label :email, class: "col-sm-2 control-label" %>
6
+ <div class="col-sm-6">
7
+ <%= f.email_field :email, autofocus: true , class: "form-control" %>
8
+ </div>
9
+ </div>
10
+
11
+ <div class="form-group">
12
+ <%= f.label :password, class: "col-sm-2 control-label" %>
13
+ <div class="col-sm-6">
14
+ <%= f.password_field :password, autocomplete: "off", class: "form-control" %>
15
+ </div>
16
+ </div>
17
+
18
+ <% if devise_mapping.rememberable? -%>
19
+ <div class="form-group">
20
+ <div class="col-sm-6 col-sm-offset-2">
21
+ <%= f.check_box :remember_me %> <%= f.label :remember_me %>
22
+ </div>
23
+ </div>
24
+ <% end -%>
25
+
26
+ <div class="form-group">
27
+ <div class="col-sm-6 col-sm-offset-2">
28
+ <%= f.submit "Sign in", class: 'btn btn-primary' %>
29
+ </div>
30
+ </div>
31
+
32
+ <div class="form-group">
33
+ <div class="col-sm-6 col-sm-offset-2">
34
+ <%= render "users/shared/links" %>
35
+ </div>
36
+ </div>
37
+
38
+ <% end %>
@@ -0,0 +1,25 @@
1
+ <%- if controller_name != 'sessions' %>
2
+ <%= link_to "Sign in", new_session_path(resource_name) %><br />
3
+ <% end -%>
4
+
5
+ <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
6
+ <%= link_to "Sign up", new_registration_path(resource_name) %><br />
7
+ <% end -%>
8
+
9
+ <%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
10
+ <%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
11
+ <% end -%>
12
+
13
+ <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
14
+ <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
15
+ <% end -%>
16
+
17
+ <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
18
+ <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
19
+ <% end -%>
20
+
21
+ <%- if devise_mapping.omniauthable? %>
22
+ <%- resource_class.omniauth_providers.each do |provider| %>
23
+ <%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider) %><br />
24
+ <% end -%>
25
+ <% end -%>
@@ -0,0 +1,12 @@
1
+ <h2>Resend unlock instructions</h2>
2
+
3
+ <%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>
4
+ <%= devise_error_messages! %>
5
+
6
+ <div><%= f.label :email %><br />
7
+ <%= f.email_field :email, autofocus: true %></div>
8
+
9
+ <div><%= f.submit "Resend unlock instructions" %></div>
10
+ <% end %>
11
+
12
+ <%= render "users/shared/links" %>
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+ load Gem.bin_path('bundler', 'bundle')
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require 'thor'
5
+ require 'pusher-client'
6
+
7
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
8
+
9
+ require 'putsreq/version'
10
+ require 'httparty'
11
+ require 'uri'
12
+
13
+ class PutsReqCLI < Thor
14
+ no_commands do
15
+ def parse_bucket_token(p)
16
+ if p.start_with? 'http'
17
+ # from http://putsreq.com/token or http://putsreq.com/token/inspect
18
+ # to token
19
+ uri = URI(p)
20
+ return uri.path.split('/')[1]
21
+ end
22
+
23
+ p
24
+ end
25
+ end
26
+
27
+ desc 'forward', 'Forward requests from PutsReq to a given URL'
28
+ method_option :token, desc: 'PutsReq token', required: true
29
+ method_option :to, desc: 'destination URL', required: true
30
+ def forward
31
+ token = parse_bucket_token(options[:token])
32
+ to = options[:to]
33
+
34
+ puts "Starting to listen requests from #{token}"
35
+ puts "Forwarding to #{to}"
36
+ puts "Press CTRL+c to terminate"
37
+
38
+ PusherClient.logger.level = Logger::ERROR
39
+
40
+ options = { secure: true }
41
+
42
+ socket = PusherClient::Socket.new('3466d56fe2ef1fdd2943', options)
43
+
44
+ channel = "channel_requests_#{token}"
45
+
46
+ socket.subscribe(channel)
47
+
48
+ socket[channel].bind('new') do |data|
49
+ last_request = JSON.parse(data)['request']
50
+
51
+ options = { headers: last_request['headers'] }
52
+
53
+ options[:body] = last_request['body'] unless last_request['body'].to_s.empty?
54
+
55
+ forward_request = HTTParty.send(last_request['request_method'].downcase.to_sym,
56
+ to,
57
+ options)
58
+
59
+ puts "#{Time.now}\t#{last_request['request_method']}\t#{forward_request.code}"
60
+ end
61
+
62
+ socket.connect
63
+ end
64
+
65
+ desc 'version', 'Show version'
66
+ def version
67
+ puts "PutsReq #{PutsReq::VERSION}"
68
+ end
69
+ end
70
+
71
+ PutsReqCLI.start
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
3
+ require_relative '../config/boot'
4
+ require 'rails/commands'
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../config/boot'
3
+ require 'rake'
4
+ Rake.application.run
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rspec' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rspec-core', 'rspec')