3 require 'active_support/all'
\r
4 require 'rest_client'
\r
10 puts "uploader.rb host dirname auth"
\r
11 puts "upload on child dirs"
\r
20 def initialize host, dirname, auth
\r
24 @licenses = self.licenses
\r
25 @license_groups = self.license_groups
\r
30 u = @host + 'licenses.json'
\r
31 r = RestClient.get(u)
\r
41 u = @host + 'license_groups.json'
\r
42 r = RestClient.get(u)
\r
45 res[l['id'].to_i] = l
\r
51 Dir.glob File.expand_path(@dirname) + '/*' do |filename|
\r
52 if File.directory?(filename)
\r
59 self.each_subdir do |filename|
\r
64 Dir.glob(filename + '/*') do |fn|
\r
65 ext = File.extname(fn).downcase
\r
68 json = JSON.parse(File.open(fn).read)
\r
69 lsname = json["license_name"]
\r
70 formname = json["formname"]
\r
71 attr = json["attributes"]
\r
72 when '.png', '.gif', '.jpeg'
\r
76 if imgfile and lsname and formname and attr
\r
77 yield imgfile, lsname, formname, attr
\r
84 b = Base64.encode64(File.open(fn, 'rb').read)
\r
85 u = @host + 'original_pictures'
\r
87 r = RestClient.post(u,
\r
88 {:original_picture => {:file => b}, :auth_token => @auth}.to_json,
\r
89 :content_type => :json, :accept => :json
\r
94 puts ' failed: ' + r.to_s
\r
99 def resource_picture oid, lgid, lsid, en, formname, attr
\r
101 u = @host + en.tableize + '/attributes'
\r
102 attr['license_id'] = lsid
\r
104 :original_picture_id => oid,
\r
105 :original_picture_license_group => {
\r
106 :original_picture_id => oid, :license_group_id => lgid
\r
108 :auth_token => @auth
\r
110 param[formname] = attr
\r
112 r = RestClient.post(u,
\r
114 :content_type => :json, :accept => :json
\r
118 puts ' failed: ' + u.to_s
\r
125 def publish oid, lgid, rp
\r
127 u = @host + 'resource_pictures'
\r
129 :original_picture_id => oid,
\r
130 :original_picture_license_group => {
\r
131 :original_picture_id => oid, :license_group_id => lgid
\r
133 :resource_picture => {
\r
134 :original_picture_id => oid,
\r
135 :license_id => rp['license_id'],
\r
136 :artist_name => rp['artist_name'],
\r
137 :classname => rp['classname'],
\r
138 :credit => rp['credit'],
\r
139 :settings => rp['settings']
\r
141 :auth_token => @auth
\r
144 r = RestClient.post(u,
\r
146 :content_type => :json, :accept => :json
\r
150 puts ' failed: ' + r.to_s
\r
156 each_opset do |imgfile, lsname, formname, attr|
\r
157 puts 'uploading: ' + imgfile
\r
158 oid = self.upload imgfile
\r
160 puts 'success: ' + oid.to_s
\r
161 ls = @licenses[lsname]
\r
163 puts 'not detect licenses: ' + lsname.to_s
\r
167 lgid = ls['license_group_id'].to_i
\r
168 lg = @license_groups[lgid]
\r
169 en = lg['classname']
\r
170 puts 'building: ' + formname
\r
171 rp = self.resource_picture oid, lgid, lsid, en, formname, attr
\r
173 puts 'publishing: ' + lsname
\r
174 r = self.publish oid, lgid, rp
\r
175 puts 'success: ' + r['id'].to_s
\r
181 u = Uploader.new host, dirname, auth
\r