Project

foxy

0.0
No commit activity in last 3 years
No release in over 3 years
A set of foxy tools for make easy retrieve information for another servers.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.11
~> 10.0
~> 3.0

Runtime

~> 0.9.2
~> 0.6.1
 Project Readme

Foxy

A set of Foxy tools for make easy retrieve information for another servers.

Installation

Add this line to your application's Gemfile:

gem 'foxy', :git => 'git://github.com/weapp/foxyrb.git'

And then execute:

$ bundle

Usage

require "foxy"
require "pp"

response = Foxy::Client.new.eraw(path: "https://www.w3.org/")

puts
puts "Example1"
puts "Way 1:"
results = response.foxy.search(cls: "info-wrap")
results.each do |result|
    pp(summary: result.find(cls: "summary").try_first(:joinedtexts),
       source: result.find(cls: "source").try_first(:joinedtexts),
       where: result.find(cls: "location").try_first(:joinedtexts))
end

puts "Way 2:"
results = response.foxy.css(".info-wrap")
results.each do |result|
    pp(summary: result.css(".summary").first.try_first(:joinedtexts),
       source: result.css(".source").first.try_first(:joinedtexts),
       where: result.css(".location").first.try_first(:joinedtexts))
end

Example client configurations:

class MyClient Foxy::Client
    config[:rate_limit] = 3 # 3 request per second
    config[:adapter] = :patron
                      # Alternatives
                      # :test => [:Test, 'test'],
                      # :net_http => [:NetHttp, 'net_http'],
                      # :net_http_persistent => [:NetHttpPersistent, 'net_http_persistent'],
                      # :typhoeus => [:Typhoeus, 'typhoeus'],
                      # :patron => [:Patron, 'patron'],
                      # :em_synchrony => [:EMSynchrony, 'em_synchrony'],
                      # :em_http => [:EMHttp, 'em_http'],
                      # :excon => [:Excon, 'excon'],
                      # :rack => [:Rack, 'rack'],
                      # :httpclient => [:HTTPClient, 'httpclient']

    config[:timeout] = 120
    config[:open_timeout] = 20
    config[:headers][:user_agent] =
      "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) " \
      "Chrome/41.0.2228.0 Safari/537.36"

    config[:headers][:app_token] = ENV["APP_TOKEN"]

    config[:ssl][:verify] = true
    config[:url] = "http:/"

    config[:method] = :get
    config[:path] = ""
    config[:body] = nil
    config[:json] = nil
    config[:form] = nil

    config[:monad_result] = false

    config[:params][:app_id] = ENV["APP_ID"]
    config[:params][:app_key] = ENV["APP_KEY"]

    # request from **faraday**
    config[:middlewares] << [:request, :url_encoded] ## => UrlEncoded
    config[:middlewares] << [:request, :multipart] ## => Multipart
    config[:middlewares] << [:request, :retry] ## => Retry
    config[:middlewares] << [:request, :authorization] ## => Authorization
    config[:middlewares] << [:request, :basic_auth] ## => BasicAuthentication
    config[:middlewares] << [:request, :token_auth, "secret"] ## => TokenAuthentication
    config[:middlewares] << [:request, :instrumentation] ## => Instrumentation
    # request from **faraday_middleware**
    config[:middlewares] << [:request, :oauth] ## => OAuth
    config[:middlewares] << [:request, :oauth2] ## => OAuth2
    config[:middlewares] << [:request, :json] ## => EncodeJson
    config[:middlewares] << [:request, :method_override] ## => MethodOverride
    # request from **faraday-conductivity**
    config[:middlewares] << [:request, :user_agent, app: "MarketingSite", version: "1.1"]
    config[:middlewares] << [:request, :request_id] ## => Faraday::Conductivity::RequestId
    config[:middlewares] << [:request, :request_headers, accept: "application/vnd.widgets-v2+json"
                                                         x_version_number: "10"]

    # response from **faraday**
    config[:middlewares] << [:response, :raise_error] ## => RaiseError
    config[:middlewares] << [:response, :logger] ## => Logger
    config[:middlewares] << [:response, :mashify] ## => Mashify
    config[:middlewares] << [:response, :rashify] ## => Rashify
    config[:middlewares] << [:response, :json, :content_type => /\bjson$/] ## => ParseJson
    config[:middlewares] << [:response, :json_fix] ## => ParseJson
    config[:middlewares] << [:response, :xml] ## => ParseXml
    config[:middlewares] << [:response, :marshal] ## => ParseMarshal
    config[:middlewares] << [:response, :yaml] ## => ParseYaml
    config[:middlewares] << [:response, :dates] ## => ParseDates
    config[:middlewares] << [:response, :caching] ## => Caching
    # response from **faraday_middleware**
    config[:middlewares] << [:response, :follow_redirects] ## => FollowRedirects
    config[:middlewares] << [:response, :chunked] ## => Chunked
    # response from **faraday-conductivity**
    config[:middlewares] << [:response, :selective_errors, on: 425..599, except: 402..499] ##

    # use from **faraday_middleware**
    config[:middlewares] << [:use, :instrumentation] ## => Instrumentation
    config[:middlewares] << [:use, :gzip] ## => Gzip
    # use from **faraday-conductivity**
    config[:middlewares] << [:use, :extended_logging, logger: Logger.new(STDOUT)]
                            ## => Faraday::Conductivity::ExtendedLogging
    config[:middlewares] << [:use, :repeater, retries: 6, mode: :exponential]
                            ## => Faraday::Conductivity::Repeater

end

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/weapp/foxy.

License

The gem is available as open source under the terms of the MIT License.