require 'base64'\r
\r
if ARGV.size < 1\r
- puts "uploader.rb host dirname attr.json lsname auth"\r
+ puts "uploader.rb host dirname license_name email token"\r
puts "upload on child dirs"\r
exit\r
end\r
\r
host = ARGV[0]\r
dirname = ARGV[1]\r
-attr_fn = ARGV[2]\r
-lsname = ARGV[3]\r
+lsname = ARGV[2]\r
+email = ARGV[3]\r
auth = ARGV[4]\r
\r
class Uploader\r
- def initialize host, dirname, attr_fn, lsname, auth\r
+ def initialize host, dirname, lsname, email, auth\r
@host = host\r
@dirname = dirname\r
- @attr_fn = attr_fn\r
@lsname = lsname\r
+ @email = email\r
@auth = auth\r
@licenses = self.licenses\r
@license_groups = self.license_groups\r
def licenses\r
res = {}\r
u = @host + 'licenses.json'\r
- r = RestClient.get(u)\r
+ r = RestClient.get(u, {email: @email, token: @auth})\r
ary = JSON.parse r\r
ary['list'].each do |l|\r
res[l['name']] = l\r
end\r
res\r
end\r
-\r
+ \r
def license_groups\r
res = {}\r
u = @host + 'license_groups.json'\r
- r = RestClient.get(u)\r
+ r = RestClient.get(u, {email: @email, token: @auth})\r
ary = JSON.parse r\r
ary['list'].each do |l|\r
res[l['id'].to_i] = l\r
res\r
end\r
\r
- def each_subdir\r
- Dir.glob File.expand_path(@dirname) + '/*' do |filename|\r
- if File.directory?(filename)\r
- yield filename\r
- end\r
- end\r
- end\r
- \r
def each_op\r
Dir.glob File.expand_path(@dirname) + '/*' do |fn|\r
ext = File.extname(fn).downcase\r
+ bn = File.basename(fn, ".*")\r
case ext\r
when '.png', '.gif', '.jpeg'\r
- yield fn\r
+ custom_attr_file = File.dirname(fn) + '/' + bn + '.json'\r
+ attr = JSON.parse(File.open(custom_attr_file).read)\r
+ yield fn, attr\r
end\r
end\r
end\r
u = @host + 'original_pictures'\r
begin\r
r = RestClient.post(u, \r
- {:original_picture => {:file => b}, :auth_token => @auth}.to_json, \r
- :content_type => :json, :accept => :json\r
+ {:original_picture => {:file => b}}.to_json, \r
+ :content_type => :json, :accept => :json, :email => @email, :token => @auth\r
)\r
o = JSON.parse r\r
oid = o['id']\r
:license_id => lsid, \r
:license_group_module_name => en, \r
:license_settings => attr, \r
- :auth_token => @auth \r
- }\r
- begin\r
- r = RestClient.post(u, \r
- param.to_json,\r
- :content_type => :json, :accept => :json\r
- )\r
- rp = JSON.parse r\r
- rescue\r
- puts ' failed: ' + u.to_s\r
- puts param\r
- puts r.to_s\r
- end\r
- rp\r
- end\r
- \r
- #confirm\r
- def resource_picture oid, lgid, lsid, en, formname, attr\r
- rp = nil\r
- u = @host + en.tableize + '/attributes'\r
- attr['license_id'] = lsid\r
- param = {\r
- :original_picture_id => oid, \r
- :original_picture_license_group => {\r
- :original_picture_id => oid, :license_group_id => lgid\r
- }, \r
- :auth_token => @auth \r
}\r
- param[:attributes] = attr\r
begin\r
r = RestClient.post(u, \r
param.to_json,\r
- :content_type => :json, :accept => :json\r
+ :content_type => :json, :accept => :json, :email => @email, :token => @auth\r
)\r
- rp = JSON.parse r\r
+ resp = JSON.parse r\r
+ rp = resp['item']\r
rescue\r
puts ' failed: ' + u.to_s\r
puts param\r
:original_picture_id => oid, :license_group_id => lgid\r
}, \r
:resource_picture => rp, \r
- :auth_token => @auth \r
}\r
begin\r
r = RestClient.post(u, \r
attr.to_json,\r
- :content_type => :json, :accept => :json\r
+ :content_type => :json, :accept => :json, :email => @email, :token => @auth\r
)\r
res = JSON.parse r\r
rescue\r
end\r
\r
def publish_all\r
- attr = JSON.parse(File.open(@attr_fn).read)\r
- each_op do |imgfile|\r
+ each_op do |imgfile, attr|\r
puts 'uploading: ' + imgfile\r
oid = self.upload imgfile\r
next unless oid\r
\r
end\r
\r
-u = Uploader.new host, dirname, attr_fn, lsname, auth\r
-\r
+u = Uploader.new host, dirname, lsname, email, auth\r
u.publish_all\r
\r