|
#!/usr/bin/ruby |
|
|
|
require 'json' |
|
require 'oauth' |
|
#require '../lib/OauthFigsharesync' |
|
#require '../lib/FigshareClasses' |
|
|
|
workingdir = "~/.figsharesync/" |
|
consumerkey |
|
consumersecret |
|
accesstoken |
|
accesstokensecret |
|
localarticlelist |
|
|
|
#First run setup |
|
absworkingdir = File.expand_path(workingdir) |
|
if File.exist?("#{absworkingdir}/FirstRun.lock") |
|
break |
|
else |
|
puts "This appears to be the first run of FigShare Sync. We'll setup a few things." |
|
print "Where would you like to store settings and files? [~./figsharesync]: " |
|
@input = gets.chomp |
|
if @input != nil |
|
workingdir = @input |
|
absworkingdir = File.expand_path(workingdir) |
|
else |
|
break |
|
end |
|
print "Please enter OAuth consumer key: " |
|
consumerkey = gets.chomp |
|
print "Please enter OAuth consumer key secret: " |
|
consumersecret = gets.chomp |
|
print "Please enter OAuth access token: " |
|
accesstoken = gets.chomp |
|
print "Please enter OAuth access token secret: " |
|
accesstokensecret = gets.chomp |
|
puts "Great! we'll get running now..." |
|
File.new("#{absworkingdir}/FirstRun.lock", "r") |
|
end |
|
#oauth authenticate |
|
auth = OauthFighshare.new(consumerkey, consumersecret, accesstoken, accesstokensecret) |
|
if auth.head (v1/my_data/articles) =! #http auth error |
|
puts "Figshare returned #{auth.head (v1/my_data/articles)}" |
|
end |
|
puts "Successfully authenticated" |
|
|
|
#Create article database and populate from local sources |
|
if File.exists?("#{absworkingdir}/localdb.json") |
|
puts "Local database detected, populating from there" |
|
ldb = JSON.parse("#{absworkingdir}/localdb.json") |
|
@i = ldb['count'] |
|
for @i.times do |
|
localarticlelist[i] = Article.new(ldb[i].name, "#{absworkingdir}/localdb/#{ldb[i].name}", ldb[i].id) |
|
done |
|
puts "Done populating the local list from local database" |
|
else |
|
puts "No local database detected, grabbing one from the server" |
|
ldb = auth.get('v1/my_data/articles') |
|
ldb = JSON.parse(ldb) |
|
@local = File.new("#{absworkingdir}/localdb.json", "w") |
|
@local << ldb |
|
i = ldb['count'] |
|
for i.times do |
|
localarticlelist[i] = Article.new(ldb[i].name, "#{absworkingdir}/localdb/#{ldb[i].name}", ldb[i].id) |
|
done |
|
puts "Local database file created and populated from server" |
|
done |