Sha256: d2d290bdeae25682d1d633f7fefd0a2647803f7e5036c5211d5f1f85519d8e74
Contents?: true
Size: 1.49 KB
Versions: 2
Compression:
Stored size: 1.49 KB
Contents
require 'typhoeus' module LinkShrink # @author Jonah Ruiz <jonah@pixelhipsters.com> # Handles request and calls parser module Request def self.included(base) base.extend self end module_function def process_request(url, shrinker = LinkShrink::Config.api) parse(request(url, shrinker).body, shrinker) end def parse(response, shrinker) if shrinker.content_type.eql?('text/plain') response else process_response(response, shrinker) end rescue "Error #{response}" end def process_parse_options(parsed_json, shrinker) if shrinker.collection_key && shrinker.url_key parsed_json .fetch(shrinker.collection_key) .fetch(shrinker.url_key) else parsed_json.fetch(shrinker.url_key) end rescue parsed_json.fetch(shrinker.error_key) { 'Error parsing the request!'} end def process_response(response, shrinker, json = JSONParser) parsed_json = json.parse_json(response) process_parse_options(parsed_json, shrinker.class) end # Calls URL API # @see LinkShrink::Shrinkers::Base#api_url # @see LinkShrink::Shrinkers::Base#body_parameters def request(new_url, shrinker) shrinker.url = new_url Typhoeus::Request.new( shrinker.api_url, method: shrinker.http_method, body: shrinker.body_parameters(shrinker.url), headers: { 'Content-Type' => shrinker.content_type } ).run end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
link_shrink-0.0.8 | lib/link_shrink/request.rb |
link_shrink-0.0.7 | lib/link_shrink/request.rb |