knowyourgems 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c100c179bdf44a207a835cb8c16f0c5c2b1cf95e
4
- data.tar.gz: 22180e6cba04de91615a76012d5ed9130cad39c9
3
+ metadata.gz: 7e300ab007d51dd67e75322a7d9383579aea62c7
4
+ data.tar.gz: 3c956ed79cfaf9f540272ee208362a7904e4bcf3
5
5
  SHA512:
6
- metadata.gz: 956f68596605951bb86abe8d0f03daa3b43085211eb40d5f9f536a28f5ec0b5612d785ab9659436aeefc6231651b7d6d075eef778ac2b8e11d8e02f6dedf8727
7
- data.tar.gz: bf396964ce8392e4100019f19782e6cd1c5502291b0c0c309d8755ca14816452c44b73db72e697e81f0b6044f94db397a2b318b7f9b2bac1c495acd5acc6e55b
6
+ metadata.gz: 25aec9f4fcf33f7874da5caa6e907ac333759f2ab0239c86b9e0b50e072fb0411d11acf838e9f148fb2816c5f1f51c71df3b160674e001fb51a5422b090cc9da
7
+ data.tar.gz: 3f593cc257ccec6c4a86a933e7a7059ad0af6bcd809e72a3b5e45fa5c583e53a0e99cfbe8a636360e598c955e88f32bbf9a24774a6fb636fd088e802ce0560a5
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in knowyourgems.gemspec
4
4
  gemspec
5
+
6
+ gem 'webmock'
7
+ gem 'timecop'
8
+ gem 'hash_multi_tool'
9
+ gem 'pry'
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Gem Version](https://badge.fury.io/rb/knowyourgems.svg)](http://badge.fury.io/rb/knowyourgems)
2
+
1
3
  # Knowyourgems
2
4
 
3
5
  Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/knowyourgems`. To experiment with that code, run `bin/console` for an interactive prompt.
@@ -24,21 +26,36 @@ Or install it yourself as:
24
26
 
25
27
  1) Lists all the gems you own, just provide your rubygems handle
26
28
 
27
- Knowyourgems.name_of_your_gems “karanarora"
29
+ Knowyourgems.name_of_your_gems “karanarora"
28
30
 
29
31
  ==> ["hash_multi_tool", "knowyourgems"]
30
32
 
31
33
  2) Lists no. of gems you own, just provide your rubygems handle
32
34
 
33
- Knowyourgems.your_total_gems “karanarora"
35
+ Knowyourgems.your_total_gems “karanarora"
34
36
 
35
37
  ==> 2
36
38
 
37
- 3) Find when you updated your last gem:
39
+ 3) Find when you updated your gem last:
38
40
 
39
41
  Knowyourgems.last_updated "hash_multi_tool"
40
42
 
41
- ==> "2 days"
43
+ ==> "Awesome work you updated your gem 2 days before."
44
+
45
+ 4) Find the most popular version of your gem:
46
+
47
+ Knowyourgems.popular_version 'hash_multi_tool'
48
+
49
+ ==> [{:version=>"0.1.5", :authors=>"Prabhat Thapa", :created_at=>"2015-07-08T00:00:00.000Z", :downloads_count=>195}]
50
+
51
+ 5) Find the top 2 popular versions of your gem:
52
+
53
+ Knowyourgems.popular_version 'hash_multi_tool', 2
54
+
55
+ ==> [
56
+ {:version=>"0.1.5", :authors=>"Prabhat Thapa", :created_at=>"2015-07-08T00:00:00.000Z", :downloads_count=>195},
57
+ {:version=>"0.1.4", :authors=>"Prabhat Thapa", :created_at=>"2015-07-08T00:00:00.000Z", :downloads_count=>168}
58
+ ]
42
59
 
43
60
  ## Development
44
61
 
Binary file
@@ -1,3 +1,3 @@
1
1
  module Knowyourgems
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/knowyourgems.rb CHANGED
@@ -2,6 +2,8 @@ require "knowyourgems/version"
2
2
  require "net/http"
3
3
  require 'json'
4
4
  require 'time'
5
+ require 'hash_multi_tool'
6
+ require 'pry'
5
7
 
6
8
  module Knowyourgems
7
9
  class << self
@@ -35,12 +37,17 @@ module Knowyourgems
35
37
  return response,valid
36
38
  end
37
39
 
38
- def last_updated gem
39
- url = versions_api gem
40
- response = http_response url
41
- response, valid = valid_response? response
40
+ def last_updated gem_name
41
+ response, valid = versions_detail gem_name
42
42
  if valid
43
- ((DateTime.now - DateTime.parse(response.first['built_at'])).to_i).to_s + ' days'
43
+ date_diff = (DateTime.now - DateTime.parse(response.first['built_at'])).to_i
44
+ if date_diff < 40
45
+ "Awesome work you updated your gem #{date_diff} days before."
46
+ elsif (40 < date_diff && date_diff < 100)
47
+ "Your gem would like an update, it was updated #{date_diff} days ago."
48
+ elsif date_diff > 100
49
+ "Ohh man your gem is lagging behind. Was last updated #{date_diff} days back."
50
+ end
44
51
  else
45
52
  response
46
53
  end
@@ -50,8 +57,14 @@ module Knowyourgems
50
57
  "https://rubygems.org/api/v1/owners/#{user_handle}/gems.json"
51
58
  end
52
59
 
53
- def versions_api gem
54
- "https://rubygems.org/api/v1/versions/#{gem}.json"
60
+ def popular_versions gem_name, count = 1
61
+ response, valid = versions_detail gem_name
62
+ if valid
63
+ sort_versions = HashMultiTool.sort_by_order response, [:downloads_count]
64
+ decorate_version_detail sort_versions, count
65
+ else
66
+ response
67
+ end
55
68
  end
56
69
 
57
70
  def valid_response? response
@@ -69,6 +82,37 @@ module Knowyourgems
69
82
  end
70
83
  end
71
84
 
72
- end
85
+ private
86
+ def versions_detail gem_name
87
+ url = versions_api gem_name
88
+ response = http_response url
89
+ return valid_response? response
90
+ end
73
91
 
92
+ def gem_api user_handle
93
+ "https://rubygems.org/api/v1/owners/#{user_handle}/gems.json"
94
+ end
95
+
96
+ def versions_api gem_name
97
+ "https://rubygems.org/api/v1/versions/#{gem_name}.json"
98
+ end
99
+
100
+ def decorate_version_detail versions = [], count = 1
101
+ count = count.to_i
102
+ if (versions.count != 0 || count > 0)
103
+ popular_versions = []
104
+ 0.upto(count -1) do |i|
105
+ popular_versions << {
106
+ version: versions[i]['number'],
107
+ authors: versions[i]['authors'],
108
+ created_at: versions[i]['built_at'],
109
+ downloads_count: versions[i]['downloads_count']
110
+ } unless versions[i].nil?
111
+ end
112
+ popular_versions
113
+ else
114
+ []
115
+ end
116
+ end
117
+ end
74
118
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knowyourgems
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karan Arora
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-07-10 00:00:00.000000000 Z
11
+ date: 2015-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -70,6 +70,7 @@ files:
70
70
  - bin/console
71
71
  - bin/setup
72
72
  - knowyourgems-0.1.0.gem
73
+ - knowyourgems-0.1.1.gem
73
74
  - knowyourgems.gemspec
74
75
  - lib/knowyourgems.rb
75
76
  - lib/knowyourgems/version.rb