diff --git a/bin/pastebinner b/bin/pastebinner index 1c55357..dbe4929 100755 --- a/bin/pastebinner +++ b/bin/pastebinner @@ -1,2 +1,50 @@ #!/usr/bin/env ruby -require 'pastebinner' +require '../lib/pastebinner' +require 'optparse' + +# setup our object and grab a session key +pb = Pastebinner.new(ENV['pastebin_api_key'], ENV['pastebin_username'], ENV['pastebin_password']) +api_dev_key = ENV['pastebin_api_key'] + +opts = {} + +OptionParser.new do |parser| + parser.banner = "Usage: pastebinner [options]" + + parser.on('-h', '--help', "Show this help message") do || + puts parser + exit + end + parser.on('-sp', '--scrape_public', "Scrape public pastes") do |s| + opts[:sp] = true + end + parser.on('-r', '--raw', "Raw paste. Requires --key passed with a valid key") do |r| + opts[:r] = true + end + parser.on('-k', '--key=', "Unique paste key") do |k| + opts[:k] = k + end + parser.on('-gk', '--get_keys', "Get unique paste keys from public pastes") do |gk| + opts[:gk] = true + end + parser.on('-t', '--trending', 'Trending pastes.') do |t| + opts[:t] = true + end + +end.parse! + +#if opts[:sp] +# puts pb.scrape_public_pastes +#elsif opts[:r] and opts[:k] +# key = opts[:k] +# puts pb.raw_paste_data(key) +#elsif opts[:t] +# puts pb.list_trending_pastes +#elsif opts[:gk] +# puts pb.get_unique_paste_key +#else +# puts 'please provide arguments' +#end + +#pp = pb.scrape_public_pastes +#puts pb.get_unique_paste_keys(pp) diff --git a/lib/examples.rb b/lib/examples.rb new file mode 100755 index 0000000..ecc3306 --- /dev/null +++ b/lib/examples.rb @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby + +require './pastebinner' + +######################## TESTING #################################################### +##################################################################################### + +#### INITIAL STEPS + +# setup our object and grab a session key +pb = Pastebinner.new(ENV['pastebin_api_key'], ENV['pastebin_username'], ENV['pastebin_password']) +api_dev_key = ENV['pastebin_api_key'] + +#### CREATE PASTE +# prepare some sample paste data to send +#paste_data = 'this is a test paste two two two.' +# prepare our paste params +#params = { "api_dev_key": api_dev_key, "api_option": "paste", "api_paste_code": paste_data } +#puts pb.create_paste(params) + +#### SCRAPE PUBLIC PASTES +#puts pb.scrape_public_pastes + +#### SCRAPING - WHITELISTED IP ONLY +#### SCRAPE RAW PASTE DATA OF A PASTE KEY +#puts pb.raw_paste_data('Gkb4ukK9') + +#### SCRAPE RAW METADATA OF A PASTE KEY (WORKS WITH WHITELISTED IP ONLY) +#puts pb.raw_paste_metadata('Gkb4ukK9') diff --git a/lib/pastebinner.rb b/lib/pastebinner.rb index 1cbf875..a3a27e5 100755 --- a/lib/pastebinner.rb +++ b/lib/pastebinner.rb @@ -3,6 +3,7 @@ # a ruby wrapper around all of the methods pastebin provides with its api # official docs from pastebin on their api can be found at https://pastebin.com/api require 'rest-client' +require 'json' class Pastebinner attr_accessor :api_dev_key, :username, :password @@ -107,6 +108,12 @@ class Pastebinner url: @scraping_api_url + ENDPOINTS[:scraping]) end + # will extract just the keys from recent public pastes + def get_unique_paste_keys(public_pastes) + pp = JSON.parse(public_pastes) + pp.map {|p| {'key': p['key']}} + end + def raw_paste_data(unique_paste_key) response = RestClient::Request.execute( method: :get, @@ -132,29 +139,3 @@ class Pastebinner # make my own exception class # inherit ruby standard error class end - -######################## TESTING #################################################### -##################################################################################### - -#### INITIAL STEPS - -# setup our object and grab a session key -pb = Pastebinner.new(ENV['pastebin_api_key'], ENV['pastebin_username'], ENV['pastebin_password']) -api_dev_key = ENV['pastebin_api_key'] - -#### CREATE PASTE -# prepare some sample paste data to send -#paste_data = 'this is a test paste two two two.' -# prepare our paste params -#params = { "api_dev_key": api_dev_key, "api_option": "paste", "api_paste_code": paste_data } -#puts pb.create_paste(params) - -#### SCRAPE PUBLIC PASTES -puts pb.scrape_public_pastes - -#### SCRAPING - WHITELISTED IP ONLY -#### SCRAPE RAW PASTE DATA OF A PASTE KEY -#puts pb.raw_paste_data('Gkb4ukK9') - -#### SCRAPE RAW METADATA OF A PASTE KEY (WORKS WITH WHITELISTED IP ONLY) -#puts pb.raw_paste_metadata('Gkb4ukK9')