#!/usr/bin/env ruby require 'net/http' SLIKE_HOST = 'slike.hr' SLIKE_UPLOAD_URL = '/upload.php' class Slikehr def initialize end def upload(file, resize = '0') request = {'resize' => resize} header, data = create_multipart_post_query(file, request) http = Net::HTTP.new(SLIKE_HOST, 80) begin response = http.post(SLIKE_UPLOAD_URL, data, header).body url = response.chomp.match('(\[URL=http:\/\/slike\.hr\]\[IMG\])(.*)(\[\/IMG\]\[\/URL\])')[2] return response_ok({'url' => url}) rescue return response_fail(response) end end def create_multipart_post_query(file, request) boundary = '------------------------AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp' header = {'Content-Type' => 'multipart/form-data; boundary=' + boundary } data = "--" + boundary + "\r\n" sorted_request = request.sort sorted_request.each do |value| data += 'Content-Disposition: form-data; name="' + value[0] + '"' + "\r\n\r\n" data += value[1] + "\r\n" data += "--" + boundary + "\r\n" end data += 'Content-Disposition: form-data; name="f1"; filename="' + file + '"' + "\r\n" data += 'Content-Type: image/jpeg' + "\r\n\r\n" data += IO.readlines(file).to_s + "\r\n" data += "--" + boundary + "--\r\n" return header, data end private def response_ok(response) return {'status' => 'ok'}.merge(response) end def response_fail(response) return {'status' => 'fail'}.merge(response) end end if ARGV.length == 1 slike = Slikehr.new response = slike.upload(ARGV[0]) if response['status'] = 'ok' puts response['url'] else puts 'Greska' end else puts 'Koristenje: slikehr slika.jpg' end