66 lines
1.6 KiB
Ruby
66 lines
1.6 KiB
Ruby
require "rest_client"
|
|
require "json"
|
|
|
|
FILES = {
|
|
cat1: -> { File.new("cat1.jpg", mode: "rb") },
|
|
}
|
|
|
|
def run
|
|
cat1_sha256 = Digest::SHA256.file("cat1.jpg").hexdigest
|
|
|
|
puts "store, with sha256"
|
|
dump_resp(RestClient.post("http://localhost:7692/store", {
|
|
content_type: "image/jpeg",
|
|
data: FILES[:cat1].call,
|
|
}))
|
|
|
|
puts "store, without sha256:"
|
|
dump_resp(RestClient.post("http://localhost:7692/store", {
|
|
content_type: "image/jpeg",
|
|
sha256: cat1_sha256,
|
|
data: FILES[:cat1].call,
|
|
}))
|
|
|
|
puts "store, incorrect sha256:"
|
|
begin
|
|
RestClient.post("http://localhost:7692/store", {
|
|
content_type: "image/jpeg",
|
|
sha256: "123",
|
|
data: FILES[:cat1].call,
|
|
})
|
|
puts "should have thrown!"
|
|
rescue => e
|
|
dump_resp(e.response)
|
|
end
|
|
|
|
puts "get, with sha256:"
|
|
dump_resp(RestClient.get("http://localhost:7692/get/#{cat1_sha256}"))
|
|
|
|
puts "get, 404 sha256:"
|
|
begin
|
|
RestClient.get("http://localhost:7692/get/e3705544cbf2fa93e16107d1821b312a7b825fc177fa28180a9c9a9d3ae8af3c")
|
|
raise "should have thrown!"
|
|
rescue => e
|
|
dump_resp(e.response)
|
|
raise "not 404" if e.response.code != 404
|
|
end
|
|
end
|
|
|
|
def dump_resp(resp)
|
|
puts " -> code: #{resp.code}"
|
|
headers = resp.headers
|
|
content_type = headers[:content_type]
|
|
puts " -> headers: #{headers}"
|
|
puts " -> content_type: #{content_type}"
|
|
puts " -> size: #{resp.size} bytes"
|
|
if content_type == "application/json"
|
|
puts " -> body: #{JSON.parse(resp.body)}"
|
|
else
|
|
body_sha256 = Digest::SHA256.hexdigest(resp.body)
|
|
puts " -> body sha256: #{body_sha256}"
|
|
end
|
|
puts "-" * 80
|
|
end
|
|
|
|
run
|