started to work on the command line application

added
-- raw
-- scrape_public_pastes
-- list_trending (still broken though. need to fix the api call)
-- added a method to extract just the keys from public pastes
-- moved the previous tests to an examples.rb file

need to mess around with all the different ways to parse arguments for the
command line program.
This commit is contained in:
booboy 2018-11-04 02:28:57 -06:00
parent 092bbb252b
commit eae20ccd0c
3 changed files with 85 additions and 27 deletions

View file

@ -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)

29
lib/examples.rb Executable file
View file

@ -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')

View file

@ -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')