coder_wally 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b7fa76ff7949963a19e843e7b0f2dfb0d4f4b94d
4
- data.tar.gz: 52c08302bc1a2ef3d64f626bc514937847d52131
3
+ metadata.gz: 6c19b110b50c0f07411b0d0400449649565e2975
4
+ data.tar.gz: 18e744906436350a32deac74aaccf3bccf233a7e
5
5
  SHA512:
6
- metadata.gz: 0c9e55503774b2c46dbc3fecdaacc14e3da86605f47b2c717363404d491936fe1aba186d10f6be9a71bbae05bc379d30bed88282fbd29dfa8ddef1b1e35117ff
7
- data.tar.gz: 6344b2c6ba97492b82b61bc4a3199ec735ed1675d5411fb060722c6e1b41083bf80b442bd734e4df73d01f26e73a3021a3686d3582ad14badee2880b3cfd33d8
6
+ metadata.gz: f11d10151bceca3d68de3a447149bb2b49df0ec988493ee417560771c6236ec43a1084b2fec7ab1e7bc48c1ba2c448baf765e01a341768a40e49f1370c3c80c8
7
+ data.tar.gz: 6ecf02798f6e642b6cbaf3ab20446e0a9127be3aa5d5974af6c4fab93f9c72a90d06cb3fceb4ccc3d64048fd055476f13e60a020be49ae2e82bb74073cb6ef38
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.5
data/README.md CHANGED
@@ -1,4 +1,11 @@
1
- # CoderWally
1
+ # CoderWally
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/coder_wally.svg)](http://badge.fury.io/rb/coder_wally)
4
+ [![Build Status](https://travis-ci.org/gregstewart/coder_wally.svg?branch=master)](https://travis-ci.org/gregstewart/coder_wally)
5
+ [![Coverage Status](https://coveralls.io/repos/gregstewart/coder_wally/badge.svg)](https://coveralls.io/r/gregstewart/coder_wally)
6
+ [![Code Climate](https://codeclimate.com/github/gregstewart/coder_wally/badges/gpa.svg)](https://codeclimate.com/github/gregstewart/coder_wally)
7
+ [![Dependency Status](https://gemnasium.com/gregstewart/coder_wally.svg)](https://gemnasium.com/gregstewart/coder_wally)
8
+ [![Inline docs](https://inch-ci.org/github/gregstewart/coder_wally.svg?branch=master)](https://inch-ci.org/github/gregstewart/coder_wally)
2
9
 
3
10
  A very very simple Gem to fetch user badges from Coder Wall
4
11
 
@@ -20,10 +27,17 @@ Or install it yourself as:
20
27
 
21
28
  ## Usage
22
29
 
23
- For now you can invoke it using (remember to replace <username> with you a valid username):
30
+ After installing the Gem, you can for now you can invoke it
31
+ (remember to replace <username> with you a valid username) from the command line
32
+ using:
24
33
 
25
34
  ruby -Ilib bin/coder_wally <username>
26
35
 
36
+ In your code:
37
+
38
+ client = CoderWally::Client.new
39
+ client.get_badges_for <username>
40
+
27
41
  ## Contributing
28
42
 
29
43
  1. Fork it ( https://github.com/gregstewart/coder_wally/fork )
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require "bundler/gem_tasks"
3
3
  require "rake/testtask"
4
4
 
5
5
  Rake::TestTask.new do |t|
6
- t.test_files = FileList['test/*_test.rb']
6
+ t.test_files = FileList['test/*_test.rb', 'test/test_helper']
7
7
  end
8
8
 
9
9
  task default: :test
data/bin/coder_wally CHANGED
@@ -2,5 +2,7 @@
2
2
 
3
3
  require 'coder_wally'
4
4
 
5
- puts CoderWally.get_badges_for ARGV[0]
5
+ client = CoderWally::Client.new
6
+
7
+ puts client.get_badges_for ARGV[0]
6
8
 
data/coder_wally.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "webmock", "~>1.20.4"
24
+ spec.add_development_dependency "coveralls"
24
25
  end
@@ -0,0 +1,15 @@
1
+ # All code in the gem is namespaced under this module.
2
+ module CoderWally
3
+ class Badge
4
+ # Object properties
5
+ attr_reader :name, :badge, :description, :created
6
+
7
+ # Initialise object with a hash of values
8
+ def initialize(hashed_badge)
9
+ @name = hashed_badge.fetch("name")
10
+ @badge = hashed_badge.fetch("badge")
11
+ @description = hashed_badge.fetch("description")
12
+ @created = hashed_badge.fetch("created")
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,38 @@
1
+ require "open-uri"
2
+ require "json"
3
+
4
+ module CoderWally
5
+ class Client
6
+ # The URL of API we'll use.
7
+ def api_url
8
+ "https://coderwall.com/%s.json"
9
+ end
10
+ # Build user URI from username and apii url
11
+ def uri_for_user username
12
+ URI.parse(api_url % username)
13
+ end
14
+ # Dispatch the request
15
+ def send_request url
16
+ begin
17
+ open(url)
18
+ rescue OpenURI::HTTPError => error
19
+ raise UserNotFoundError, "User not found" if error.io.status[0] == "404"
20
+ raise ServerError, "Server error" if error.io.status[0] == "500"
21
+ end
22
+ end
23
+ # Get bnadges for given user and return has of `Badge`s
24
+ def get_badges_for username
25
+ raise(ArgumentError, "Plesae provide a username") if username.empty?
26
+
27
+ json_response = JSON.load(send_request(uri_for_user(username)))
28
+
29
+ json_response["badges"].map { |badge| Badge.new(badge) }
30
+ end
31
+ end
32
+ end
33
+
34
+ class UserNotFoundError < StandardError
35
+ end
36
+
37
+ class ServerError < StandardError
38
+ end
@@ -1,4 +1,4 @@
1
1
  module CoderWally
2
2
  # The current version of HowIStart.
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
data/lib/coder_wally.rb CHANGED
@@ -1,44 +1,3 @@
1
1
  require "coder_wally/version"
2
-
3
- require "open-uri"
4
- require "json"
5
-
6
- # All code in the gem is namespaced under this module.
7
- module CoderWally
8
- # The URL of API we'll use.
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
-
26
- begin
27
- request = open(url)
28
- rescue OpenURI::HTTPError => error
29
- raise UserNotFoundError, "User not found" if error.io.status[0] == "404"
30
- raise ServerError, "Server error" if error.io.status[0] == "500"
31
- end
32
-
33
- response = JSON.load(request)
34
-
35
- response["badges"].map { |badge| Badge.new(badge) }
36
- #
37
- end
38
- end
39
-
40
- class UserNotFoundError < StandardError
41
- end
42
-
43
- class ServerError < StandardError
44
- end
2
+ require "coder_wally/badge"
3
+ require "coder_wally/client"
@@ -1,11 +1,13 @@
1
1
  require "minitest/autorun"
2
-
3
2
  require "coder_wally"
4
- require "webmock/minitest"
5
3
 
6
4
  describe "Coder Wally" do
5
+ before do
6
+ @client = CoderWally::Client.new
7
+ end
8
+
7
9
  it "has a default api url" do
8
- "https://coderwall.com/%s.json".must_equal CoderWally::Url
10
+ "https://coderwall.com/%s.json".must_equal @client.api_url
9
11
  end
10
12
 
11
13
  describe "user badges" do
@@ -18,7 +20,7 @@ describe "Coder Wally" do
18
20
  end
19
21
 
20
22
  it "returns a hash of badges" do
21
- badges = CoderWally.get_badges_for('me')
23
+ badges = @client.get_badges_for('me')
22
24
 
23
25
  badges.count.must_equal 11
24
26
  badges.first.name.must_equal "Lab"
@@ -30,25 +32,25 @@ describe "Coder Wally" do
30
32
 
31
33
  describe "invalid user" do
32
34
  it "throws an exception when no user is passed in" do
33
- err = ->{ CoderWally.get_badges_for }.must_raise ArgumentError
35
+ err = ->{ @client.get_badges_for }.must_raise ArgumentError
34
36
  err.message.must_match /wrong number/
35
37
  end
36
38
 
37
39
  it "throws an exception when empty string is passed in" do
38
- err = ->{ CoderWally.get_badges_for "" }.must_raise ArgumentError
40
+ err = ->{ @client.get_badges_for "" }.must_raise ArgumentError
39
41
  err.message.must_match /Plesae provide a username/
40
42
  end
41
43
 
42
44
  describe "not found" do
43
45
  before do
44
46
  not_found_response = open(File.expand_path(File.dirname(__FILE__) + "/./fixtures/404.json")).read
45
- stub_request(:get, "https://coderwall.com/me.json").
46
- with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}).
47
- to_return(:status => 404, :body => not_found_response, :headers => {})
47
+ stub_request(:get, "https://coderwall.com/me.json").
48
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}).
49
+ to_return(:status => 404, :body => not_found_response, :headers => {})
48
50
  end
49
51
 
50
52
  it "throws a UserNotFoundError when the user is not found" do
51
- err = ->{ CoderWally.get_badges_for('me')}.must_raise UserNotFoundError
53
+ err = ->{ @client.get_badges_for('me')}.must_raise UserNotFoundError
52
54
  err.message.must_match /User not found/
53
55
  end
54
56
  end
@@ -57,15 +59,15 @@ describe "Coder Wally" do
57
59
  describe "service throws an error" do
58
60
  before do
59
61
  server_error = open(File.expand_path(File.dirname(__FILE__) + "/./fixtures/empty.json")).read
60
- stub_request(:get, "https://coderwall.com/me.json").
61
- with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}).
62
- to_return(:status => 500, :body => server_error, :headers => {})
62
+ stub_request(:get, "https://coderwall.com/me.json").
63
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}).
64
+ to_return(:status => 500, :body => server_error, :headers => {})
63
65
  end
64
66
 
65
67
  it "throws a ServerError when the user is not found" do
66
- err = ->{ CoderWally.get_badges_for('me')}.must_raise ServerError
67
- err.message.must_match /Server error/
68
- end
68
+ err = ->{ @client.get_badges_for('me')}.must_raise ServerError
69
+ err.message.must_match /Server error/
70
+ end
69
71
  end
70
72
  end
71
73
  end
data/test/test_helper.rb CHANGED
@@ -1 +1,3 @@
1
- require 'webmock/minitest'
1
+ require 'webmock/minitest'
2
+ require 'coveralls'
3
+ Coveralls.wear!
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.3
4
+ version: 0.0.4
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-26 00:00:00.000000000 Z
11
+ date: 2015-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.20.4
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: A simple gem to fetch user badges from Coder Wall
56
70
  email:
57
71
  - gregs@tcias.co.uk
@@ -60,7 +74,9 @@ executables:
60
74
  extensions: []
61
75
  extra_rdoc_files: []
62
76
  files:
77
+ - ".coveralls.yml"
63
78
  - ".gitignore"
79
+ - ".travis.yml"
64
80
  - Gemfile
65
81
  - LICENSE.txt
66
82
  - README.md
@@ -68,6 +84,8 @@ files:
68
84
  - bin/coder_wally
69
85
  - coder_wally.gemspec
70
86
  - lib/coder_wally.rb
87
+ - lib/coder_wally/badge.rb
88
+ - lib/coder_wally/client.rb
71
89
  - lib/coder_wally/version.rb
72
90
  - test/coder_wally_test.rb
73
91
  - test/fixtures/200.json