GitHub

Prerequirements

You need mruby-tls which needs libressl (http://www.libressl.org) somewhere your compiler can find it, for example on OS X with homebrew you have to add something like this to build_config.rb

  conf.gem mgem: 'mruby-tls' do |g|
    g.cc.include_paths << '/usr/local/opt/libressl/include'
    g.linker.library_paths << '/usr/local/opt/libressl/lib'
  end

Example

Simple GET

HttpsClient.new.get("https://github.com/") do |response|
  unless response.body
    puts response.minor_version
    puts response.status
    puts response.msg
    puts response.headers
  else
    print response.body
  end
end

Simple POST

body = "hello world"
HttpsClient.new.post("https://github.com", body) do |response|
  unless response.body
    puts response.minor_version
    puts response.status
    puts response.msg
    puts response.headers
  else
    print response.body
  end
end

POST a Enumerable

body = ["hello", "world"]
HttpsClient.new.post("https://github.com", body) do |response|
  unless response.body
    puts response.minor_version
    puts response.status
    puts response.msg
    puts response.headers
  else
    print response.body
  end
end

POST a Fiber

body = Fiber.new do
  Fiber.yield "hello"
  Fiber.yield "world"
end
HttpsClient.new.post("https://github.com", body) do |response|
  unless response.body
    puts response.minor_version
    puts response.status
    puts response.msg
    puts response.headers
  else
    print response.body
  end
end

The response body is always streamed, if you need to work with the complete body at once you have to stitch it together.

Read the original on github.com ↗