module Manga::Tools::Http

HTTP client class

Public Class Methods

connection(url, session_id) click to toggle source

@param url [String] an url string, eg: `example.com` @param session_id [String, nil] A Session ID string or nil @return [Faraday::Connection] a connection object

# File lib/manga/tools/http.rb, line 14
def self.connection(url, session_id)
  headers = { 'User-Agent' => user_agent }
  headers['X-Session-ID'] = session_id if session_id

  @connection = Faraday.new(url: url, headers: headers) do |f|
    # f.response :logger
    f.response :raise_error
  end
end
connection_url(url) click to toggle source

@param url [URI] A URL instance. @return [String] Returns the URL to connect to.

If the port is not a standard port (80 or 443), the port number is included.

# File lib/manga/tools/http.rb, line 45
def self.connection_url(url)
  if [80, 443].include?(url.port)
    "#{url.scheme}://#{url.host}"
  else
    "#{url.scheme}://#{url.host}:#{url.port}"
  end
end
get(url, session_id) click to toggle source

@param url [String] an url string, eg: `example.com/path/to/object` @param session_id [String, nil] A Session ID string or nil @return [Faraday::Response] a response object

# File lib/manga/tools/http.rb, line 27
def self.get(url, session_id)
  u = URI.parse(url)
  connection(connection_url(u), session_id).get(u.request_uri)
end
post(url, session_id, params) click to toggle source
# File lib/manga/tools/http.rb, line 32
def self.post(url, session_id, params)
  u = URI.parse(url)
  connection(connection_url(u), session_id).post do |req|
    req.headers['Content-Type'] = 'application/json'
    req.url u.request_uri
    req.body = params.to_json
  end
end
user_agent() click to toggle source

@return [String] Returns a user agent string

# File lib/manga/tools/http.rb, line 54
def self.user_agent
  @user_agent ||= "manga-tools #{Manga::Tools::VERSION}"
end