getbox 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 570cd38740240d890ffdda814c6da3160beb1e89
4
+ data.tar.gz: 9260b50d4f7d557ed41bf7d775ad215d74898705
5
+ SHA512:
6
+ metadata.gz: 04aa1f5d0a1d86b79330f4d9dff7b6ad70347ccf4afda654c955219850fb4f916cbf12e91751aa42b0a75b9c91ce4bbde7414805192c795f3b23637be7e72bd7
7
+ data.tar.gz: 14f2ea9224139273927160c37252d5e136d796098e4005d08253b8196dbccb1b2f4cc050be4bf7dec14909aeeb28d433467a0f022c0fc25a1ca748542a554f66
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in getbox.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # Getbox
2
+
3
+ ## Installation
4
+
5
+ getbox requires the [edge version](https://github.com/thoughtbot/capybara-webkit) of capybara-webkit. It's in the Gemfile, but not supported by the `.gemspec`. Use Bundler.
6
+
7
+ ## Usage
8
+
9
+ After checking out the repo, run `bundle` to install dependencies. Then, run `exe/getbox` for an interactive prompt that will take you through exporting your gists.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/exe/getbox ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
+
5
+ require 'getbox'
6
+ include Getbox
7
+
8
+ exit getGistsFromPrompt
data/getbox.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'getbox/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "getbox"
8
+ spec.version = Getbox::VERSION
9
+ spec.authors = ["Andrew Monks"]
10
+ spec.email = ["a@monks.co"]
11
+
12
+ spec.summary = %q{Scrape your Gistbox page to export your label data.}
13
+ spec.homepage = "http://github.com/amonks/getbox"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
+ spec.bindir = "exe"
17
+ # spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.executables = ['getbox']
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.9"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+
24
+ spec.add_runtime_dependency "capybara"
25
+ spec.add_runtime_dependency "capybara-webkit"
26
+ spec.add_runtime_dependency "nokogiri"
27
+ end
@@ -0,0 +1,3 @@
1
+ module Getbox
2
+ VERSION = "0.1.0"
3
+ end
data/lib/getbox.rb ADDED
@@ -0,0 +1,94 @@
1
+ require 'getbox/version'
2
+ require 'nokogiri'
3
+ require 'capybara/dsl'
4
+ require 'capybara-webkit'
5
+ require 'open-uri'
6
+ require 'json'
7
+
8
+
9
+ module Getbox
10
+ include Capybara::DSL
11
+
12
+ Capybara.default_driver = :webkit
13
+ Capybara.app_host = "http://app.gistboxapp.com"
14
+ Capybara.run_server = false
15
+
16
+ def getGistsFromPrompt()
17
+ puts "What's your github username?"
18
+ username = gets.chomp
19
+ puts "How about your password, eh??"
20
+ password = gets.chomp
21
+
22
+ puts "Where should I save your gists?"
23
+ file = gets.chomp
24
+
25
+ gists = getGistsFromSite(username, password)
26
+
27
+ puts "Saving #{gists.length} gists to #{Dir.pwd}/#{file}"
28
+ writeToFile(gists, file)
29
+ end
30
+
31
+ def getGistsFromSite(username, password)
32
+ whitelist_urls
33
+
34
+ puts "visiting app.gistboxapp.com"
35
+ visit '/'
36
+ click_on "Login"
37
+ puts "filling out github login form"
38
+ within("#login") do
39
+ fill_in("login", :with => username)
40
+ fill_in("password", :with => password)
41
+ click_on "Sign in"
42
+ end
43
+ puts "gathering gists"
44
+ getGistsFromHtml(page.html)
45
+ end
46
+
47
+ def getGistsFromFile(file)
48
+ f = File.open(file)
49
+ getGistsFromHtml(f)
50
+ end
51
+
52
+ def getGistsFromHtml(html)
53
+ doc = Nokogiri::HTML(html)
54
+
55
+ gists = []
56
+
57
+ doc.css('div.split-gist').each do |gist|
58
+ data = {}
59
+
60
+ id = gist.attribute('data-id').value
61
+ data[:url] = "https://gist.github.com/#{id}"
62
+
63
+ data[:title] = gist.css('div.gist-name').inner_text
64
+
65
+ data[:timestamp] = gist.css('span.gist-created-updated').inner_text
66
+
67
+ description = gist.css('div.gist-description').inner_text.strip
68
+ description = nil if description == 'No Description'
69
+ data[:description] = description
70
+
71
+ labels = []
72
+ gist.css('span.gist-label').each {|label| labels.push label.inner_text}
73
+ data[:labels] = labels
74
+
75
+ gists.push data
76
+ end
77
+
78
+ gists
79
+ end
80
+
81
+ def writeToFile(object, file)
82
+ json = JSON.pretty_generate(object)
83
+ File.open(file, 'w') { |file| file.write(json) }
84
+ end
85
+
86
+ def whitelist_urls()
87
+ page.driver.block_unknown_urls
88
+ urls = [
89
+ 'app.gistboxapp.com',
90
+ 'github.com',
91
+ ]
92
+ urls.each { |url| page.driver.allow_url(url) }
93
+ end
94
+ end
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: getbox
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Monks
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-04-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.9'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.9'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: capybara
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: capybara-webkit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: nokogiri
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description:
84
+ email:
85
+ - a@monks.co
86
+ executables:
87
+ - getbox
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - ".gitignore"
92
+ - Gemfile
93
+ - README.md
94
+ - Rakefile
95
+ - exe/getbox
96
+ - getbox.gemspec
97
+ - lib/getbox.rb
98
+ - lib/getbox/version.rb
99
+ homepage: http://github.com/amonks/getbox
100
+ licenses: []
101
+ metadata: {}
102
+ post_install_message:
103
+ rdoc_options: []
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ requirements: []
117
+ rubyforge_project:
118
+ rubygems_version: 2.2.2
119
+ signing_key:
120
+ specification_version: 4
121
+ summary: Scrape your Gistbox page to export your label data.
122
+ test_files: []
123
+ has_rdoc: