problem_child 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/README.md +7 -11
- data/lib/problem_child/helpers.rb +1 -9
- data/lib/problem_child/version.rb +1 -1
- data/lib/problem_child/views/form.erb +0 -8
- data/lib/problem_child/views/layout.erb +0 -27
- data/lib/problem_child.rb +5 -1
- data/spec/problem_child_helpers_spec.rb +5 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23e61aafef42b2d8a22e1eb9cd300108f808d714
|
4
|
+
data.tar.gz: 6dfde2eafb3c1ef44074c76aa94eafea6abfca5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 628253249fe3d9b38f2cace36492c6c9b5752035fca94e98413617d4c811a8822dce803f11da8e7929161fbffdd8009a3a864a61f3d86901542f37370e1c7736
|
7
|
+
data.tar.gz: fc1bbf214d479260fcfc852b935f9e1d9a25df0048f71eae79c7ed4384cd0bf939d7cbd6b8c014474abc4188a6560bc229d499fa207ca1bad1f756e0f76eac43
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -24,30 +24,27 @@ Then, follow the configuration options below.
|
|
24
24
|
|
25
25
|
## Requirements
|
26
26
|
|
27
|
-
|
27
|
+
If you have OAuth (e.g., non-anonymous submission), you'll need to have [Redis](http://redis.io/) running to properly maintain sessions and support submissions larger than 4k:
|
28
28
|
|
29
|
-
On OS X, run `brew install redis` to install, followed by `redis-server` to run the redis server.
|
29
|
+
On OS X, run `brew install redis` to install, followed by `redis-server` to run the redis server. The site should work fine, but for tests to pass, you'll want to add `REDIS_URL=redis://localhost:6379` to your `.env` file.
|
30
30
|
|
31
|
-
On Heroku you'll want to run `heroku addons:create heroku-redis:hobby-dev` to add a free Redis instance to your app.
|
31
|
+
On Heroku you'll want to run `heroku addons:create heroku-redis:hobby-dev` to add a free Redis instance to your app (Heroku will set `REDIS_URL` for you).
|
32
32
|
|
33
33
|
## Configuring
|
34
34
|
|
35
|
-
|
35
|
+
First, you must set the following environmental variable:
|
36
36
|
|
37
|
-
* `GITHUB_CLIENT_ID` and `GITHUB_CLIENT_SECRET` - Created via [github.com/settings/applications/new](https://github.com/settings/applications/new)
|
38
37
|
* `GITHUB_REPO` - the repo to open the issue against in the form of `owner/repo`
|
39
38
|
|
40
39
|
You must also set **one** of the following:
|
41
40
|
|
42
41
|
* `GITHUB_TOKEN` - A personal access token for a bot account with the ability to create an issue in the `GITHUB_REPO` if you would like all submissions to be anonymous
|
43
|
-
* `GITHUB_ORG_ID` - The GitHub Org ID e.g, `@whitehouse` if you'd like all users to authenticate against a GitHub Org prior to being presented the form
|
42
|
+
* `GITHUB_ORG_ID` - The GitHub Org ID e.g, `@whitehouse` if you'd like all users to authenticate against a GitHub Org prior to being presented the form, or
|
44
43
|
* `GITHUB_TEAM_ID` - The numeric Team ID (e.g., 1234) if you'd like all users to authenticate against a GitHub Team prior to being presented the form
|
45
44
|
|
46
|
-
|
47
|
-
|
48
|
-
* `REACAPTCHA_SITE_KEY` - The key created for your reCAPTCHA site via https://www.google.com/recaptcha/admin
|
45
|
+
If you are using OAuth Authentication (e.g., you set `GITHUB_ORG_ID` or `GITHUB_TEAM_ID` so that the user submits as themselves), you must also set the following as environmental variables:
|
49
46
|
|
50
|
-
|
47
|
+
* `GITHUB_CLIENT_ID` and `GITHUB_CLIENT_SECRET` - Created via [github.com/settings/applications/new](https://github.com/settings/applications/new)
|
51
48
|
|
52
49
|
*Pro-tip*: When developing locally, you can add these values to a `.env` file in the project root, and they will be automatically read in on load
|
53
50
|
|
@@ -120,4 +117,3 @@ Problem child can also be used to create pull requests. Simply add one or more f
|
|
120
117
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
121
118
|
4. Push to the branch (`git push origin my-new-feature`)
|
122
119
|
5. Create a new Pull Request
|
123
|
-
|
@@ -17,10 +17,6 @@ module ProblemChild
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
def recaptcha
|
21
|
-
ENV["RECAPTCHA_SITE_KEY"] unless ENV["RECAPTCHA_SITE_KEY"].nil? || ENV["RECAPTCHA_SITE_KEY"].to_s.empty?
|
22
|
-
end
|
23
|
-
|
24
20
|
def client
|
25
21
|
@client ||= Octokit::Client.new :access_token => token
|
26
22
|
end
|
@@ -34,11 +30,7 @@ module ProblemChild
|
|
34
30
|
end
|
35
31
|
|
36
32
|
def issue_body
|
37
|
-
form_data.reject { |key, value|
|
38
|
-
key == "title" || value.empty? || key == "labels" || value.is_a?(Hash)
|
39
|
-
}.except( "g-recaptcha-response" ).map { |key, value|
|
40
|
-
"* **#{key.humanize}**: #{value}"
|
41
|
-
}.join("\n")
|
33
|
+
form_data.reject { |key, value| key == "title" || value.empty? || key == "labels" || value.is_a?(Hash) }.map { |key,value| "* **#{key.humanize}**: #{value}"}.join("\n")
|
42
34
|
end
|
43
35
|
|
44
36
|
# abstraction to allow cached form data to be used in place of default params
|
@@ -5,10 +5,6 @@
|
|
5
5
|
<% end %>
|
6
6
|
</h1>
|
7
7
|
|
8
|
-
<div class="alert alert-warning alert-recaptcha hidden" role="alert">
|
9
|
-
Please verify that you are not a robot.
|
10
|
-
</div>
|
11
|
-
|
12
8
|
<% if issue %>
|
13
9
|
<div class="alert alert-success" role="alert">
|
14
10
|
Your issue was successfully submitted<% if access %> as <a href="http://github.com/<%= repo %>/issues/<%= issue %>"><%= repo %>#<%= issue %></a><% end %>.
|
@@ -31,9 +27,5 @@
|
|
31
27
|
<textarea class="form-control" rows="10" id="body" name="body"></textarea>
|
32
28
|
</div>
|
33
29
|
|
34
|
-
<% if recaptcha.present? %>
|
35
|
-
<div class="g-recaptcha" data-sitekey="<%= recaptcha %>"></div>
|
36
|
-
<% end %>
|
37
|
-
|
38
30
|
<button type="submit" class="btn btn-default">Submit</button>
|
39
31
|
</form>
|
@@ -16,13 +16,6 @@
|
|
16
16
|
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
17
17
|
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
18
18
|
<![endif]-->
|
19
|
-
|
20
|
-
<% if recaptcha.present? %>
|
21
|
-
<script src='https://www.google.com/recaptcha/api.js'></script>
|
22
|
-
<% end %>
|
23
|
-
|
24
|
-
<script src='https://www.google.com/recaptcha/api.js'></script>
|
25
|
-
|
26
19
|
</head>
|
27
20
|
<body>
|
28
21
|
<div class="container">
|
@@ -30,25 +23,5 @@
|
|
30
23
|
<%= yield %>
|
31
24
|
|
32
25
|
</div>
|
33
|
-
|
34
|
-
<% if recaptcha.present? %>
|
35
|
-
<script src="/vendor/jquery/dist/jquery.min.js"></script>
|
36
|
-
|
37
|
-
<script>
|
38
|
-
$( 'form' ).submit( function( e ) {
|
39
|
-
var prevent = false;
|
40
|
-
|
41
|
-
if ( !grecaptcha.getResponse() ) {
|
42
|
-
$( '.alert-recaptcha' ).removeClass( 'hidden' );
|
43
|
-
prevent = true;
|
44
|
-
}
|
45
|
-
|
46
|
-
if ( prevent ) {
|
47
|
-
e.preventDefault();
|
48
|
-
return false;
|
49
|
-
}
|
50
|
-
} );
|
51
|
-
</script>
|
52
|
-
<% end %>
|
53
26
|
</body>
|
54
27
|
</html>
|
data/lib/problem_child.rb
CHANGED
@@ -40,7 +40,11 @@ module ProblemChild
|
|
40
40
|
:scopes => "repo,read:org"
|
41
41
|
}
|
42
42
|
|
43
|
-
|
43
|
+
if ENV["REDIS_URL"] && !ENV["REDIS_URL"].to_s.empty?
|
44
|
+
use Rack::Session::Moneta, store: :Redis, url: ENV["REDIS_URL"]
|
45
|
+
else
|
46
|
+
use Rack::Session::Cookie
|
47
|
+
end
|
44
48
|
|
45
49
|
configure :production do
|
46
50
|
require 'rack-ssl-enforcer'
|
@@ -32,6 +32,10 @@ describe "ProblemChild::Helpers" do
|
|
32
32
|
with_env "GITHUB_TOKEN", "asdf" do
|
33
33
|
expect(@helper.anonymous_submissions?).to be(true)
|
34
34
|
end
|
35
|
+
|
36
|
+
with_env "GITHUB_TOKEN", "" do
|
37
|
+
expect(@helper.anonymous_submissions?).to be(false)
|
38
|
+
end
|
35
39
|
end
|
36
40
|
|
37
41
|
it "knows not to allow anonymous submisssions when no token is passed" do
|
@@ -240,7 +244,7 @@ describe "ProblemChild::Helpers" do
|
|
240
244
|
|
241
245
|
pr = stub_request(:post, "https://api.github.com/repos/benbalter/test-repo-ignore-me/pulls").
|
242
246
|
with(:body => "{\"labels\":null,\"base\":\"master\",\"head\":\"title\",\"title\":\"title\",\"body\":\"* **Foo**: bar\"}")
|
243
|
-
|
247
|
+
|
244
248
|
with_env "GITHUB_TOKEN", "1234" do
|
245
249
|
with_env "GITHUB_REPO", "benbalter/test-repo-ignore-me" do
|
246
250
|
path = File.expand_path "./fixtures/file.txt", File.dirname(__FILE__)
|