coder_wally 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/bin/coder_wally +0 -0
- data/coder_wally.gemspec +1 -0
- data/lib/coder_wally/version.rb +1 -1
- data/lib/coder_wally.rb +23 -1
- data/test/coder_wally_test.rb +41 -1
- data/test/fixtures/200.json +66 -0
- data/test/fixtures/404.json +1 -0
- data/test/fixtures/bad.json +9 -0
- data/test/fixtures/empty.json +0 -0
- data/test/test_helper.rb +1 -0
- metadata +26 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23d832d7527f374d52bccca30faa69afa004004e
|
4
|
+
data.tar.gz: d24fb436ad305fc990a02efaa0dc90ffae4d6e35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cd99a77064e7c69c6025b6d55a5df2e27617384d07af0baab9d31cdf1e11dc85c4ea11064f8a4b62adcdde82aabf87715638c8149cb7ca5d545e8a919189d60
|
7
|
+
data.tar.gz: 23a0b5e971adaa61893ae325e049edc02f8a5aa6687f2bc308061e8d73a7db42c341cdcccbd24369cf20cfa8aa6576a6316a661f9ab7518dad00633dbfd61bb6
|
data/.gitignore
CHANGED
data/bin/coder_wally
CHANGED
File without changes
|
data/coder_wally.gemspec
CHANGED
data/lib/coder_wally/version.rb
CHANGED
data/lib/coder_wally.rb
CHANGED
@@ -1,7 +1,29 @@
|
|
1
1
|
require "coder_wally/version"
|
2
2
|
|
3
|
+
require "open-uri"
|
4
|
+
require "json"
|
5
|
+
|
3
6
|
# All code in the gem is namespaced under this module.
|
4
7
|
module CoderWally
|
5
8
|
# The URL of API we'll use.
|
6
|
-
Url = "https://coderwall.com
|
9
|
+
Url = "https://coderwall.com/%s.json"
|
10
|
+
|
11
|
+
class Badge
|
12
|
+
attr_reader :name, :badge, :description, :created
|
13
|
+
|
14
|
+
def initialize(hashed_badge)
|
15
|
+
@name = hashed_badge.fetch("name")
|
16
|
+
@badge = hashed_badge.fetch("badge")
|
17
|
+
@description = hashed_badge.fetch("description")
|
18
|
+
@created = hashed_badge.fetch("created")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def CoderWally.get_badges_for username
|
23
|
+
raise(ArgumentError, "Plesae provide a username") if username.empty?
|
24
|
+
url = URI.parse(Url % username)
|
25
|
+
response = JSON.load(open(url))
|
26
|
+
|
27
|
+
response["badges"].map { |badge| Badge.new(badge) }
|
28
|
+
end
|
7
29
|
end
|
data/test/coder_wally_test.rb
CHANGED
@@ -1,9 +1,49 @@
|
|
1
1
|
require "minitest/autorun"
|
2
2
|
|
3
3
|
require "coder_wally"
|
4
|
+
require "webmock/minitest"
|
4
5
|
|
5
6
|
describe "Coder Wally" do
|
6
7
|
it "has a default api url" do
|
7
|
-
"https://coderwall.com
|
8
|
+
"https://coderwall.com/%s.json".must_equal CoderWally::Url
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "user badges" do
|
12
|
+
describe "valid user" do
|
13
|
+
before do
|
14
|
+
success_response = open(File.expand_path(File.dirname(__FILE__) + "/./fixtures/200.json")).read
|
15
|
+
stub_request(:get, "https://coderwall.com/me.json").
|
16
|
+
with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}).
|
17
|
+
to_return(:status => 200, :body => success_response, :headers => {})
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns a hash of badges" do
|
21
|
+
badges = CoderWally.get_badges_for('me')
|
22
|
+
|
23
|
+
badges.count.must_equal 11
|
24
|
+
badges.first.name.must_equal "Lab"
|
25
|
+
badges.first.badge.must_equal "https://d3levm2kxut31z.cloudfront.net/assets/badges/labrador-1eb0fc532826e5a7c5487855f9880627.png"
|
26
|
+
badges.first.description.must_equal "Have at least one original repo where C# is the dominant language"
|
27
|
+
badges.first.created.must_equal "2014-07-10T23:36:47Z"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
describe "invalid user" do
|
31
|
+
it "throws an exception when no user is passed in" do
|
32
|
+
err = ->{ CoderWally.get_badges_for }.must_raise ArgumentError
|
33
|
+
err.message.must_match /wrong number/
|
34
|
+
end
|
35
|
+
|
36
|
+
it "throws an exception when empty string is passed in" do
|
37
|
+
err = ->{ CoderWally.get_badges_for "" }.must_raise ArgumentError
|
38
|
+
err.message.must_match /Plesae provide a username/
|
39
|
+
end
|
40
|
+
|
41
|
+
# before do
|
42
|
+
# not_found_response = open(File.expand_path(File.dirname(__FILE__) + "/./fixtures/404.json")).read
|
43
|
+
# stub_request(:get, "https://coderwall.com/me.json").
|
44
|
+
# with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}).
|
45
|
+
# to_return(:status => 404, :body => not_found_response, :headers => {})
|
46
|
+
# end
|
47
|
+
end
|
8
48
|
end
|
9
49
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
{
|
2
|
+
"username": "gregstewart",
|
3
|
+
"name": "Greg Stewart",
|
4
|
+
"location": "London, UK",
|
5
|
+
"endorsements": 0,
|
6
|
+
"team": null,
|
7
|
+
"accounts": {
|
8
|
+
"github": "gregstewart"
|
9
|
+
},
|
10
|
+
"badges": [{
|
11
|
+
"name": "Lab",
|
12
|
+
"description": "Have at least one original repo where C# is the dominant language",
|
13
|
+
"created": "2014-07-10T23:36:47Z",
|
14
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/labrador-1eb0fc532826e5a7c5487855f9880627.png"
|
15
|
+
}, {
|
16
|
+
"name": "Altruist",
|
17
|
+
"description": "Increase developer well-being by sharing at least 20 open source projects",
|
18
|
+
"created": "2013-02-25T08:15:02Z",
|
19
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/altrustic-806442d9d15f1f1fedd0eed9a31db473.png"
|
20
|
+
}, {
|
21
|
+
"name": "Mongoose 3",
|
22
|
+
"description": "Have at least three original repos where Ruby is the dominant language",
|
23
|
+
"created": "2013-02-19T12:08:30Z",
|
24
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/mongoose3-d82b572f18d88192fe201813f6411e41.png"
|
25
|
+
}, {
|
26
|
+
"name": "Forked",
|
27
|
+
"description": "Have a project valued enough to be forked by someone else",
|
28
|
+
"created": "2013-01-08T23:58:12Z",
|
29
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/forked1-50bad70cadd51c6093a79e122a1daa88.png"
|
30
|
+
}, {
|
31
|
+
"name": "Charity",
|
32
|
+
"description": "Fork and commit to someone's open source project in need",
|
33
|
+
"created": "2012-06-06T06:06:46Z",
|
34
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/charity-b7c8758441a70e8378d6332ec15ef292.png"
|
35
|
+
}, {
|
36
|
+
"name": "Honey Badger 3",
|
37
|
+
"description": "Have at least three Node.js specific repos",
|
38
|
+
"created": "2012-03-03T08:27:49Z",
|
39
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/honeybadger3-9d5e00c3c53dd52401790948c4a38ae5.png"
|
40
|
+
}, {
|
41
|
+
"name": "Cub",
|
42
|
+
"description": "Have at least one original jQuery or Prototype open source repo",
|
43
|
+
"created": "2011-07-25T13:50:36Z",
|
44
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/cub-6143c7182031dd155b74978e96849005.png"
|
45
|
+
}, {
|
46
|
+
"name": "Honey Badger",
|
47
|
+
"description": "Have at least one original Node.js-specific repo",
|
48
|
+
"created": "2011-07-25T06:40:34Z",
|
49
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/honeybadger-9bc1ac6b2fd2226faa6fcf38d3ef075e.png"
|
50
|
+
}, {
|
51
|
+
"name": "Mongoose",
|
52
|
+
"description": "Have at least one original repo where Ruby is the dominant language",
|
53
|
+
"created": "2011-07-21T08:21:42Z",
|
54
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/mongoose-2a7c6d45a98e18a7f3229c1f7ece6b9e.png"
|
55
|
+
}, {
|
56
|
+
"name": "Nephila Komaci",
|
57
|
+
"description": "Have at least one original repos where PHP is the dominant language",
|
58
|
+
"created": "2011-06-19T07:26:22Z",
|
59
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/nephilakomaci-f5a692e53b6f1d087e30b0cf1a7d79ff.png"
|
60
|
+
}, {
|
61
|
+
"name": "Walrus",
|
62
|
+
"description": "The walrus is no stranger to variety. Use at least 4 different languages throughout all your repos",
|
63
|
+
"created": "2011-06-19T07:26:22Z",
|
64
|
+
"badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/walrus-61456fc5e49a5a46d6c25a3beca60b5e.png"
|
65
|
+
}]
|
66
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
File without changes
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'webmock/minitest'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coder_wally
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Stewart
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: webmock
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.20.4
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.20.4
|
41
55
|
description: A simple gem to fetch user badges from Coder Wall
|
42
56
|
email:
|
43
57
|
- gregs@tcias.co.uk
|
@@ -56,6 +70,11 @@ files:
|
|
56
70
|
- lib/coder_wally.rb
|
57
71
|
- lib/coder_wally/version.rb
|
58
72
|
- test/coder_wally_test.rb
|
73
|
+
- test/fixtures/200.json
|
74
|
+
- test/fixtures/404.json
|
75
|
+
- test/fixtures/bad.json
|
76
|
+
- test/fixtures/empty.json
|
77
|
+
- test/test_helper.rb
|
59
78
|
homepage: https://github.com/gregstewart/coder_wally
|
60
79
|
licenses:
|
61
80
|
- MIT
|
@@ -82,3 +101,8 @@ specification_version: 4
|
|
82
101
|
summary: A simple gem to fetch user badges from Coder Wall
|
83
102
|
test_files:
|
84
103
|
- test/coder_wally_test.rb
|
104
|
+
- test/fixtures/200.json
|
105
|
+
- test/fixtures/404.json
|
106
|
+
- test/fixtures/bad.json
|
107
|
+
- test/fixtures/empty.json
|
108
|
+
- test/test_helper.rb
|