response.redirect() prototype method
Response redirect middleware for Connect.
A window.fetch polyfill.
Simplified HTTP request client.
Library to assist with debugging HTTP(s) requests made by the request module.
Check if a number is a redirect HTTP status code
Constants enumerating the HTTP status codes. Based on the Java Apache HttpStatus API.
Parses netlify redirects into a js object representation
Decompress a HTTP response if needed
Simple DNS Proxy written in Node.JS. Override hosts, domains, or tlds. Cache DNS response. Redirect certain domains to different nameservers.
MJML: the only framework that makes responsive-email easy
A class representing a redirect response.
Create structured, declarative and beautifully organized class-based controllers with heavy decorators usage for Express / Koa using TypeScript.
A response-like object for mocking a Node.js HTTP response stream
Shared TypeScript definitions for Octokit projects
Clone a Node.js HTTP response stream
Response helpers for the web Fetch API
Standard HTTP interfaces for HTTP clients and servers in node.js and browsers
Parses netlify redirects into a js object representation
Passkeys client for Laravel applications
Produces redirects (HTTP redirections) for pages in an Antora site.
Execute a callback when a request closes, finishes, or errors
Parses Cache-Control and other headers. Helps building correct HTTP caches and proxies
Universal React avatar component makes it possible to generate avatars based on user information.
This gem adds get_response_following_redirects to Net::HTTP. The method acts like get_response, except it follows redirects.
Redirus
Check all the actions for all the controller of a Rails Application
Redispatch your response via another URL. Like a transparent, internal HTTP redirect.
Micky makes simple HTTP requests (GET/HEAD), follows redirects, handles exceptions (invalid hosts/URIs, server errors, timeouts, redirect loops), automatically parses responses (JSON, etc.), is very lightweight, and has no dependency.
Chirpy is a minimal, sidebar, responsive web design Jekyll theme that focuses on text presentation. This fork adds URL redirection for Giscuss commenting system
Radioactive wraps Net::HTTP with defenses against SSRF, DNS rebinding, slowloris, response and decompression bombs, redirect chains into private addresses, and disallowed schemes. Safe-by-default for use cases like link previews, image proxies, webhook delivery, and metadata extraction from user-supplied URLs.
A Sinatra extension that implements the full Inertia.js v2 wire protocol: page-object responses, version mismatch detection (409 + X-Inertia-Location), partial reloads, deferred / lazy / always / optional / merge props, encrypted history, redirect 303 handling, and error/flash session sweeps. Pure Sinatra-compatible: depends only on `sinatra` and `rack`. Runs on MRI Ruby and on the homura Cloudflare Workers + Opal stack.
Lookout-Rack Lookout-Rack provides easy interaction with Rack¹ from Lookout². It provides you with a session connected to your Rack application through which you can make requests, check responses, follow redirects and set, inspect, and clear cookies. ¹ See http://rack.rubyforge.org/ ² See http://disu.se/software/lookout/ § Installation Install Lookout-Rack with % gem install lookout-rack § Usage Include the following code in your ‹Rakefile› (provided that you’re using Lookout-Rake¹): require 'lookout-rack-3.0' Lookout::Rake::Tasks::Test.new do |t| t.requires << 'lookout-rack-3.0' end ¹ See http://disu.se/software/lookout-rake/ Then set up a ‹fixtures/config.ru› file that Lookout-Rack will use for loading your Rack app. load 'path/to/app.rb' use Rack::Lint run Path::To::App This file, if it exists, will be loaded during the first call to #session. If it doesn’t exist, ‹config.ru› will be used instead. You can now test your app: Expectations do expect 200 do session.get('/').response.status end end The #session method returns an object that lets you #get, #post, #put, and #delete resources from the Rack app. You call these method with a URI¹ that you want to access/modify together with any parameters that you want to pass and any Rack environment that you want to use (which isn’t very common). For example, let’s get ‹/pizzas/› with olives on them: expect 200 do session.get('/pizzas/', 'olives' => '1').response.status end ¹ Abbreviation for Uniform Resource Identifier The #response method on #session returns a mock Rack response object that can be queried for results. Similarly, there’s a #request method that lets you inspect the request that was made. Lookout-Rack also deals with cookies. Assuming that ‹/cookies/set/› will set any cookies that we pass it and that ‹/cookies/show/› will simply do nothing relevant, the following expectation will pass: expect 'value' => '1' do session. get('/cookies/set/', 'value' => '1'). get('/cookies/show/').request.cookies end Sometimes you may want to set cookies yourself before making a request. You then use the #cookie method, which takes a String of ‹KEY=VALUE› pairs separated by newlines, commas, and/or semicolons and sets those cookies in the session: expect 'value' => '1', 'other' => '2' do session. cookie("value=1\n\nother=2"). get('/cookies/show/').request.cookies end You may also want to clear all cookies in your session using #clear: expect({}) do session. get('/cookies/set', 'value' => '1'). clear. get('/cookies/show').request.cookies end Finally, to test redirects, call the #redirect! method on the session object, assuming that ‹/redirected/› redirects to another location: expect result.redirect? do session.get('/redirected/').response end expect result.not.redirect? do session.get('/redirected/').redirect!.response end That’s basically all there’s to it. You can check the {API documentation}¹ for more information. ¹ See http://disu.se/software/lookout-rack/api/Lookout/Rack/ § Financing Currently, most of my time is spent at my day job and in my rather busy private life. Please motivate me to spend time on this piece of software by donating some of your money to this project. Yeah, I realize that requesting money to develop software is a bit, well, capitalistic of me. But please realize that I live in a capitalistic society and I need money to have other people give me the things that I need to continue living under the rules of said society. So, if you feel that this piece of software has helped you out enough to warrant a reward, please PayPal a donation to now@disu.se¹. Thanks! Your support won’t go unnoticed! ¹ Send a donation: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=now@disu.se&item_name=Lookout-Rack § Reporting Bugs Please report any bugs that you encounter to the {issue tracker}¹. ¹ See https://github.com/now/lookout-rack/issues § Authors Nikolai Weibull wrote the code, the tests, the documentation, and this README. § Licensing Lookout-Rack is free software: you may redistribute it and/or modify it under the terms of the {GNU Lesser General Public License, version 3}¹ or later², as published by the {Free Software Foundation}³. ¹ See http://disu.se/licenses/lgpl-3.0/ ² See http://gnu.org/licenses/ ³ See http://fsf.org/
== Medusa: a ruby crawler framework {rdoc-image:https://badge.fury.io/rb/medusa-crawler.svg}[https://rubygems.org/gems/medusa-crawler] rdoc-image:https://github.com/brutuscat/medusa-crawler/workflows/Ruby/badge.svg?event=push Medusa is a framework for the ruby language to crawl and collect useful information about the pages it visits. It is versatile, allowing you to write your own specialized tasks quickly and easily. === Features * Choose the links to follow on each page with +focus_crawl+ * Multi-threaded design for high performance * Tracks +301+ HTTP redirects * Allows exclusion of URLs based on regular expressions * Records response time for each page * Obey _robots.txt_ directives (optional, but recommended) * In-memory or persistent storage of pages during crawl, provided by Moneta[https://github.com/moneta-rb/moneta] * Inherits OpenURI behavior (redirects, automatic charset and encoding detection, proxy configuration options). <b>Do you have an idea or a suggestion? {Open an issue and talk about it}[https://github.com/brutuscat/medusa-crawler/issues/new]</b> === Examples Medusa is versatile and to be used programatically, you can start with one or multiple URIs: require 'medusa' Medusa.crawl('https://www.example.com', depth_limit: 2) Or you can pass a block and it will yield the crawler back, to manage configuration or drive its crawling focus: require 'medusa' Medusa.crawl('https://www.example.com', depth_limit: 2) do |crawler| crawler.discard_page_bodies = some_flag # Persist all the pages state across crawl-runs. crawler.clear_on_startup = false crawler.storage = Medusa::Storage.Moneta(:Redis, 'redis://redis.host.name:6379/0') crawler.skip_links_like(/private/) crawler.on_pages_like(/public/) do |page| logger.debug "[public page] #{page.url} took #{page.response_time} found #{page.links.count}" end # Use an arbitrary logic, page by page, to continue customize the crawling. crawler.focus_crawl(/public/) do |page| page.links.first end end
The Postman API enables you to programmatically access data stored in your Postman account. For a comprehensive set of examples of requests and responses, see the [**Postman API** collection](https://www.postman.com/postman/workspace/postman-public-workspace/documentation/12959542-c8142d51-e97c-46b6-bd77-52bb66712c9a). ## Important - You must pass an `Accept` header with the `application/vnd.api.v10+json` value to use v10 and higher endpoints. While some of these endpoints may appear the same as the deprecated Postman v9 endpoints, they will use the v10 behavior when you send this `Accept` header. For more information, see [About v9 and v10 APIs](https://learning.postman.com/docs/developer/postman-api/intro-api/#about-v9-and-v10-apis). - To use the **API** endpoints, you must first [update your APIs to the v10 format](https://learning.postman.com/docs/designing-and-developing-your-api/creating-an-api/#upgrading-an-api). ## Getting started You can get started with the Postman API by [forking the Postman API collection](https://learning.postman.com/docs/collaborating-in-postman/version-control/#creating-a-fork) to your workspace. You can then use Postman to send requests. ## About the Postman API - You must use a valid API Key to send requests to the API endpoints. - The API has [rate and usage limits](https://learning.postman.com/docs/developer/postman-api/postman-api-rate-limits/). - The API only responds to HTTPS-secured communications. Any requests sent via HTTP return an HTTP `301` redirect to the corresponding HTTPS resources. - The API returns requests responses in [JSON format](https://en.wikipedia.org/wiki/JSON). When an API request returns an error, it is sent in the JSON response as an error key. - The request method (verb) determines the nature of action you intend to perform. A request made using the `GET` method implies that you want to fetch something from Postman. The `POST` method implies you want to save something new to Postman. - For all requests, API calls respond with their corresponding [HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes). In the Postman client, the status code also provides help text that details the possible meaning of the response code. ### IDs and UIDs All items in Postman, such as collections, workspaces, and APIs, have IDs and UIDs: - An ID is the unique ID assigned to a Postman item. For example, `ec29121c-5203-409f-9e84-e83ffc10f226`. - The UID is the **full** ID of a Postman item. This value is the item's unique ID concatenated with the user ID. For example, in the `12345678-ec29121c-5203-409f-9e84-e83ffc10f226` UID: - `12345678` is the user's ID. - `ec29121c-5203-409f-9e84-e83ffc10f226` is the item's ID. ### 503 response An HTTP `503 Service Unavailable` response from our servers indicates there is an unexpected spike in API access traffic. The server is usually operational within the next five minutes. If the outage persists or you receive any other form of an HTTP `5XX` error, [contact support](https://support.postman.com/hc/en-us/requests/new/). ## Authentication Postman uses API keys for authentication. The API key tells the API server that the request came from you. Everything that you have access to in Postman is accessible with your API key. You can [generate](https://learning.postman.com/docs/developer/postman-api/authentication/#generate-a-postman-api-key) a Postman API key in the [**API keys**](https://postman.postman.co/settings/me/api-keys) section of your Postman account settings. You must include an API key in each request to the Postman API with the `X-Api-Key` request header. In Postman, you can store your API key as an [environment variable](https://www.getpostman.com/docs/environments). The Postman API [collection](https://www.getpostman.com/docs/collections) will use it to make API calls. ### Authentication error response If an API key is missing, malformed, or invalid, you will receive an HTTP `401 Unauthorized` response code. ### Using the API key as a query parameter Requests that accept the `X-Api-Key` request header also accept the API key when you send it as the `apikey` query parameter. An API key sent as part of the header has a higher priority when you send the key as both a request header and a query parameter. ## Rate and usage limits API access [rate limits](https://learning.postman.com/docs/developer/postman-api/postman-api-rate-limits/) apply at a per-API key basis in unit time. The limit is **300 requests per minute**. Also, depending on your [plan](https://www.postman.com/pricing/), you may have usage limits. If you exceed either limit, your request will return an HTTP `429 Too Many Requests` status code. Each API response returns the following set of headers to help you identify your use status: | Header | Description | | ------ | ----------- | | `X-RateLimit-Limit` | The maximum number of requests that the consumer is permitted to make per minute. | | `X-RateLimit-Remaining` | The number of requests remaining in the current rate limit window. | | `X-RateLimit-Reset` | The time at which the current rate limit window resets in UTC epoch seconds. | ## Support For help regarding accessing the Postman API, you can: - Visit [Postman Support](https://support.postman.com/hc/en-us) or our [Community and Support](https://www.postman.com/community/) sites. - Reach out to the [Postman community](https://community.postman.com/). - Submit a help request to [Postman support](https://support.postman.com/hc/en-us/requests/new/). ## Policies - [Postman Terms of Service](http://www.postman.com/legal/terms/) - [Postman Privacy Policy](https://www.postman.com/legal/privacy-policy/)
# Fresh::Auth This gem makes it really, REALLY easy to use the Freshbooks API. It couldn't be easier. With only 3 functions you'll ever need to use, and only 2 required configuration values, it can't get any easier. ## Installation Add this line to your application's Gemfile: gem 'fresh-auth' And then execute: $ bundle Or install it yourself as: $ gem install fresh-auth ## Usage ### Configuration: You must define your Freshbooks subdomain and your OAuth Secret in your application code before using Fresh::Auth. For Ruby on Rails apps, a new file at config/initializers/fresh-auth.rb would be appropriate. Your configuration file should look like this (you fill in the three empty strings): Fresh::Auth.configure do |config| # The part of your login url between 'http://' and '.freshbooks.com' config.url.subdomain = "" # Under 'My Account' (on the top right when you're logged into Freshbooks) # -> 'Freshbooks API' -> 'OAuth Developer Access' -> 'OAuth Secret' # You'll need to request this from Freshbooks initially. config.oauth_secret = "" # Optional. Any string of your choice. Be creative or check out http://www.thebitmill.com/tools/password.html config.nonce_salt = "" end Fear not: If you try to use Fresh::Auth without configuring it first, an exception will be thrown that clearly describes the problem. ### Public API: There are two modules in this API: Fresh::Auth::Authentication and Fresh::Auth::Api #### Fresh::Auth::Authentication This module authenticates you with Freshbooks, storing the authentication in an array called `session`. This integrates seamlessly with Ruby on Rails' controller environment. If you're using some framework other than Ruby on Rails, make sure to define session in your class before including the Authentication module. This isn't recommended because your class will also need to define other objects called `params` and `request` and implement a `redirect_to` method. It gets complicated. Better leave it to Rails to handle this for you. The only public function of this module is AuthenticateWithFreshbooks. To use it, just add the following line of code to your controller: ` include Fresh::Auth::Authentication ` Then, the following line of code authenticates with Freshbooks from any method in your controller: ` AuthenticateWithFreshbooks() ` Note that, after authenticating with Freshbooks, the user will be redirected back to the same path using HTTP GET, so make sure the resource supports HTTP GET and that in the business logic executed on GET, AuthenticateWihFreshbooks() is called. #### Fresh::Auth::Api Once you've authenticated, you want to send XML requests to Freshbooks. The first step is preparing the XML with Fresh::Auth::Api.GenerateXml, which you'll supply with a block that defines all the nested XML that you want in your request. GenerateXml also takes two arguments before the block: the class and method that you want to call. First, in your controller: `include Fresh::Auth::Api` Then, in some method in that controller: my_xml = GenerateXml :invoice, :update do |xml| xml.client_id 20 xml.status 'sent' xml.notes 'Pick up the car by 5' xml.terms 'Cash only' xml.lines { xml.line { xml.name 'catalytic converter' xml.quantity 1 xml.unit_cost 450 xml.type 'Item' } xml.line { xml.name 'labor' xml.quantity 1 xml.unit_cost 60 xml.type 'Time' } } end Ok, you created the XML. Now you want to send it. Sounds pretty complicated, right? Not at all! Ready? Let's go! `_response = PostToFreshbooksApi my_xml` Now, are you wondering what's in `_response`? I'll tell you shortly, but before we discuss that, we have to know about the exception that PostToFreshbooksApi might raise. It raises a detailed error message if the response status is not 'ok'. Makes sense, right? Now, you still want to know what's in `_response`? Oh, nothing fancy. Just a Nokogiri XML object, representing the root element of the xml response. Could this get any easier? ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Added some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.