gist_nuke 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.
Files changed (4) hide show
  1. checksums.yaml +15 -0
  2. data/bin/gist_nuke +29 -0
  3. data/lib/gist_nuke.rb +36 -21
  4. metadata +9 -12
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MWVhYmRkOTRjMGY2NTUxMjI4MzVmNmNhMWY1YzU4ZjQ2MzQzZDNiZg==
5
+ data.tar.gz: !binary |-
6
+ NzA0MTZmZWUxODIzNGFiMDY0MTRiOTZjODA0MGNiOTZmOTY1Y2U1Mw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MjNmMjE2MGU2YjU2OWMxZDIwZjg5MTk1YjEyOWFlN2FkYmY3MGI2YmMxZWY3
10
+ ZjU3OTBhZDEzN2NlZGFmZGVkODk0YjEwZTcxZmRjOTFjZjVlZTBkNmM2MGQ0
11
+ NGYwNjgwYjg4MDM3YzM0ZGMxODllZWVjOTBmZjIzZWFmODEwNmQ=
12
+ data.tar.gz: !binary |-
13
+ MjE3NDllNjRmZTg4OWJhOTg2NjQ1NmRhNTlmMzhiYThhZGFjZGRlZDc0ZDFi
14
+ MjA1OWEwNWY2NDU0NmVhM2QzNTRiZWI5YThmYzMxMjNiMTZiYTBkN2ZhYTdi
15
+ YmEwNTFlZTY4YjYxZTVhYTRkOGRiYWJiZmNhZDUyZmRlYjc4YjI=
data/bin/gist_nuke ADDED
@@ -0,0 +1,29 @@
1
+ require 'gist_nuke'
2
+ require 'optparse'
3
+
4
+ #!/usr/bin/env ruby
5
+ options = {}
6
+
7
+ opts_parser = OptionParser.new do |opt|
8
+ opt.banner = <<-HELP
9
+ There are quite a few wonderful options that you can run. I will update this help
10
+ text more once I have actually filled them in
11
+ HELP
12
+
13
+ opt.on("--login", "Let's get you all Authed") do
14
+ GistNuke.login
15
+ exit
16
+ end
17
+
18
+ opt.on("--list", "Let's list these gists out") do
19
+ GistNuke.login unless GistNuke.token_from_file
20
+ GistNuke.load_gists
21
+ end
22
+
23
+ opt.on("--deleterange range", "This is going to delete a range", Array) do |range|
24
+ GistNuke.login unless GistNuke.token_from_file
25
+ GistNuke.delete_range(range)
26
+ end
27
+ end
28
+
29
+ opts_parser.parse!
data/lib/gist_nuke.rb CHANGED
@@ -22,10 +22,11 @@ module GistNuke
22
22
  end
23
23
 
24
24
  puts ""
25
- phone_github(credentials)
25
+ token = get_github_token(credentials)
26
+ save_auth_token(token)
26
27
  end
27
28
 
28
- def phone_github(credentials = {})
29
+ def get_github_token(credentials = {})
29
30
  uri = URI(BASE_URL + AUTH_EXT)
30
31
  req = Net::HTTP::Post.new(uri.path)
31
32
  req.content_type = "application/json"
@@ -41,18 +42,25 @@ module GistNuke
41
42
  http.request(req)
42
43
  end
43
44
 
44
- save_auth_token(res.body)
45
+ JSON.parse(res.body)['token']
45
46
  end
46
47
 
47
- def save_auth_token(res)
48
- token = JSON.parse(res)['token']
48
+ def token_from_file
49
+ if File.exists?('.gist_nuke')
50
+ File.read('.gist_nuke')
51
+ else
52
+ false
53
+ end
54
+ end
55
+
56
+ def save_auth_token(token)
49
57
  File.open(".gist_nuke", "w+") do |file|
50
58
  file.write(token)
51
59
  end
52
60
  end
53
61
 
54
- def load_gists(page_number = 0)
55
- token = File.read(".gist_nuke")
62
+ def load_gists(page_number = 1)
63
+ token = token_from_file
56
64
  uri = URI("#{BASE_URL}gists?access_token=#{token}&page=#{page_number}")
57
65
  Net::HTTP.start(uri.host, uri.port,
58
66
  :use_ssl => uri.scheme == 'https') do |http|
@@ -60,32 +68,39 @@ module GistNuke
60
68
 
61
69
  response = http.request(request)
62
70
 
63
- gist_hash = JSON.parse(response.body)
64
-
65
- just_keys(gist_hash)
71
+ JSON.parse(response.body)
66
72
  end
67
73
  end
68
74
 
69
- def just_keys(gist_hash = {})
70
- just_keys = []
75
+ def just_keys(gists = [])
76
+ gists.map { |g| g['id'] }
77
+ end
71
78
 
72
- gist_hash.each do |hash|
73
- just_keys << hash['id']
74
- end
79
+ def gather_pages(range)
80
+ keys = []
81
+ page_number = 1
82
+ last_page = false
75
83
 
76
- p just_keys
84
+ until keys.length >= range.last || last_page
85
+ to_append = just_keys(load_gists(page_number))
86
+ last_page = to_append.empty?
87
+ keys += to_append
88
+ page_number += 1
89
+ end
90
+ keys
77
91
  end
78
92
 
79
93
  def delete_range(numbers = [])
80
- p numbers = numbers.map { |num| num.to_i }
81
- p range = (numbers[0]..numbers[-1])
82
- p delete_list = load_gists[range]
83
- construct_hydra(delete_list)
94
+ numbers = numbers.map { |num| num.to_i }
95
+ range = (numbers[0]..numbers[-1])
96
+ list = gather_pages(range)
97
+ list[range]
98
+ construct_hydra(list[range])
84
99
  @batch.run
85
100
  end
86
101
 
87
102
  def construct_hydra(range)
88
- t = File.read(".gist_nuke")
103
+ t = token_from_file
89
104
  @batch = Typhoeus::Hydra.new
90
105
  range.map { |gist_id| @batch.queue(Typhoeus::Request.new("#{BASE_URL}gists/#{gist_id}?access_token=#{t}",
91
106
  method: :delete))}
metadata CHANGED
@@ -1,20 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gist_nuke
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - zachgersh
8
+ - joeyschoblaska
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-22 00:00:00.000000000 Z
12
+ date: 2013-09-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: typhoeus
16
16
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
17
  requirements:
19
18
  - - ~>
20
19
  - !ruby/object:Gem::Version
@@ -22,7 +21,6 @@ dependencies:
22
21
  type: :runtime
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
25
  - - ~>
28
26
  - !ruby/object:Gem::Version
@@ -30,7 +28,6 @@ dependencies:
30
28
  - !ruby/object:Gem::Dependency
31
29
  name: vcr
32
30
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
31
  requirements:
35
32
  - - ~>
36
33
  - !ruby/object:Gem::Version
@@ -38,41 +35,41 @@ dependencies:
38
35
  type: :development
39
36
  prerelease: false
40
37
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
39
  - - ~>
44
40
  - !ruby/object:Gem::Version
45
41
  version: 2.5.0
46
42
  description: A great way to clean up your github gist profile
47
43
  email: zachgersh@gmail.com
48
- executables: []
44
+ executables:
45
+ - gist_nuke
49
46
  extensions: []
50
47
  extra_rdoc_files: []
51
48
  files:
52
49
  - lib/gist_nuke.rb
50
+ - bin/gist_nuke
53
51
  homepage: http://zachgersh.github.io
54
52
  licenses:
55
53
  - MIT
54
+ metadata: {}
56
55
  post_install_message:
57
56
  rdoc_options: []
58
57
  require_paths:
59
58
  - lib
60
59
  required_ruby_version: !ruby/object:Gem::Requirement
61
- none: false
62
60
  requirements:
63
61
  - - ! '>='
64
62
  - !ruby/object:Gem::Version
65
63
  version: '0'
66
64
  required_rubygems_version: !ruby/object:Gem::Requirement
67
- none: false
68
65
  requirements:
69
66
  - - ! '>='
70
67
  - !ruby/object:Gem::Version
71
68
  version: '0'
72
69
  requirements: []
73
70
  rubyforge_project:
74
- rubygems_version: 1.8.25
71
+ rubygems_version: 2.0.7
75
72
  signing_key:
76
- specification_version: 3
73
+ specification_version: 4
77
74
  summary: Batch deletion of gists
78
75
  test_files: []