class Pingen::Client
Constants
- DEFAULT_TIMEOUT
Public Class Methods
new(base_url: nil, token: nil, logger: NoLogger.new)
click to toggle source
# File lib/pingen/client.rb, line 15 def initialize(base_url: nil, token: nil, logger: NoLogger.new) @base_url = base_url || ENV["PINGEN_API_URL"] || "https://api.pingen.com" @token = token || ENV["PINGEN_API_TOKEN"] @logger = logger end
Public Instance Methods
cancel_send(send_id)
click to toggle source
allows you to cancel a pending send
# File lib/pingen/client.rb, line 57 def cancel_send(send_id) get_request("/send/cancel/id/#{send_id}") end
delete(id)
click to toggle source
# File lib/pingen/client.rb, line 43 def delete(id) post_request("/document/delete/id/#{id}", {}) end
get(id)
click to toggle source
# File lib/pingen/client.rb, line 25 def get(id) get_request("/document/get/id/#{id}") end
get_request(path, params = nil, request_params = {})
click to toggle source
# File lib/pingen/client.rb, line 65 def get_request(path, params = nil, request_params = {}) url = build_url(path) req = build_get_request(url, params) perform_request(url, req, request_params) end
list()
click to toggle source
# File lib/pingen/client.rb, line 21 def list get_request("/document/list") end
pdf(id)
click to toggle source
# File lib/pingen/client.rb, line 39 def pdf(id) get_request("/document/pdf/id/#{id}") end
post_multipart_request(path, file, params, request_params = {})
click to toggle source
# File lib/pingen/client.rb, line 77 def post_multipart_request(path, file, params, request_params = {}) url = build_url(path) request = build_multipart_post_request(url, file, params) perform_request(url, request, request_params) end
post_request(path, params, request_params = {})
click to toggle source
# File lib/pingen/client.rb, line 71 def post_request(path, params, request_params = {}) url = build_url(path) request = build_post_request(url, params) perform_request(url, request, request_params) end
schedule_send(id, **send_params)
click to toggle source
send_params: fast_send: true | false, default: false.
true - A Post false - B Post
color: true | false, default: false
# File lib/pingen/client.rb, line 52 def schedule_send(id, **send_params) post_request("/document/send/id/#{id}", parse_send_params(send_params)) end
track(send_id)
click to toggle source
# File lib/pingen/client.rb, line 61 def track(send_id) get_request("/send/track/id/#{send_id}") end
upload(pdf, send: false, **send_params)
click to toggle source
send_params: fast_send: true | false, default: false.
true - A Post false - B Post
color: true | false, default: false
# File lib/pingen/client.rb, line 34 def upload(pdf, send: false, **send_params) data = {send: send}.merge(send ? parse_send_params(send_params) : {}) post_multipart_request("/document/upload", pdf, data: data.to_json) end
Protected Instance Methods
build_get_request(url, params)
click to toggle source
# File lib/pingen/client.rb, line 92 def build_get_request(url, params) url.query = URI.encode_www_form(params) unless params.nil? Net::HTTP::Get.new(url).tap(&method(:header_params)) end
build_multipart_post_request(url, file_path, params)
click to toggle source
# File lib/pingen/client.rb, line 97 def build_multipart_post_request(url, file_path, params) Net::HTTP::Post::Multipart.new(url.path, params.merge("file" => UploadIO.new(file_path, "application/pdf", File.basename(file_path)))) end
build_post_request(url, params)
click to toggle source
# File lib/pingen/client.rb, line 104 def build_post_request(url, params) Net::HTTP::Post.new(url.path).tap do |request| header_params(request) request.body = params.to_json end end
build_url(path)
click to toggle source
# File lib/pingen/client.rb, line 85 def build_url(path) uri = @base_url.dup uri << "/" unless uri.end_with? "/" path << "/token/#{@token}" URI.join(URI.parse(uri), path) end
header_params(request)
click to toggle source
# File lib/pingen/client.rb, line 126 def header_params(request) request["Content-Type"] = "application/json" request["Accept"] = "application/json" end
manipulate_http_request(http_new, request_params)
click to toggle source
# File lib/pingen/client.rb, line 117 def manipulate_http_request(http_new, request_params) http_new.use_ssl = @base_url.start_with?("https") http_new.open_timeout = DEFAULT_TIMEOUT http_new.read_timeout = DEFAULT_TIMEOUT request_params.each do |key, val| http_new.public_send("#{key}=", val) end end
perform_request(url, request, request_params)
click to toggle source
# File lib/pingen/client.rb, line 111 def perform_request(url, request, request_params) http_new = Net::HTTP.new(url.hostname, url.port) manipulate_http_request(http_new, request_params) Response.from(@logger.call(url, request) { http_new.start { |http| http.request(request) } }) end
Private Instance Methods
parse_send_params(**params)
click to toggle source
# File lib/pingen/client.rb, line 133 def parse_send_params(**params) {color: params[:color] ? 1 : 0, speed: params[:fast_send] ? 1 : 2} end