forked from rubima/rubima
-
Notifications
You must be signed in to change notification settings - Fork 2
EditTools
miyohide edited this page Jan 8, 2014
·
3 revisions
るびま編集に有益なスクリプトを記しています。
ファイルをアップロードするスクリプト内のID
とPASSWORD
の値は適切なものに置換してください。
るびまのGitHubリポジトリにあるtools/rubima-lint.rbを使用してください。
るびまのGitHubリポジトリにあるtools/mokuji.rbを使用してください。
#
# ruby upload.rb [page_name] [files...]
#
UploadURL = 'http://wiki.fdiary.net/.RubiMa/attach.cgi'
ID = 'NEED_CHANGE'
PASSWORD = 'NEED_CHANGE'
###
require 'net/http'
require 'uri'
require 'base64'
require 'kconv'
Net::HTTP.version_1_2
class MultiPart
def initialize
@boundary = '----' + Time.now.to_i.to_s(36) + '--' + rand(10000).to_s(36)
@data = []
end
attr_reader :boundary
def add_part name, data, content_type=nil, misc = ''
@data << "--#{@boundary}"
@data << %Q(content-disposition: form-data; name="#{name}"#{misc})
@data << "content-type: #{content_type}" if content_type
@data << ''
@data << data
@data << "--#{@boundary}"
end
def add_file name, file
add_part name, open(file, 'rb'){|f| f.read},
'application/octet-stream', "; filename=\"#{file}\""
end
def to_str
@data.join("\r\n") + "--\r\n"
end
end
def upload page_name, files
uri = URI.parse(UploadURL)
auth = Base64.encode64("#{ID}:#{PASSWORD}").strip
files.each{|file|
p file
mp = MultiPart.new
mp.add_part 'p', page_name
mp.add_part 'command', 'edit'
mp.add_file 'attach_file', file
mp.add_part 'attach', 'ファイルの添付'.toeuc
Net::HTTP.start(uri.host){|http|
header = {
'Authorization' => "Basic #{auth}==",
'content-type' => "multipart/form-data; boundary=#{mp.boundary}"
}
res = http.post(uri.path, mp.to_str, header)
puts res.message
puts res.body if res.code != '200'
}
}
end
pn = ARGV.shift
upload(pn, ARGV)