Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ma2gedev/faraday-encoding
A Faraday Middleware sets body encoding when specified by server.
https://github.com/ma2gedev/faraday-encoding
Last synced: 10 days ago
JSON representation
A Faraday Middleware sets body encoding when specified by server.
- Host: GitHub
- URL: https://github.com/ma2gedev/faraday-encoding
- Owner: ma2gedev
- License: mit
- Created: 2015-03-20T17:32:43.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-01-02T05:01:07.000Z (11 months ago)
- Last Synced: 2024-07-12T01:16:42.587Z (4 months ago)
- Language: Ruby
- Homepage: https://github.com/ma2gedev/faraday-encoding
- Size: 27.3 KB
- Stars: 25
- Watchers: 4
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-faraday - encoding - required for handling UTF-8 responses (Middleware)
README
# Faraday::Encoding
[![Gem Version](https://badge.fury.io/rb/faraday-encoding.svg)](http://badge.fury.io/rb/faraday-encoding)
[![Build Status](https://github.com/ma2gedev/faraday-encoding/workflows/Ruby/badge.svg?branch=master)](https://github.com/ma2gedev/faraday-encoding/actions?query=workflow%3ARuby)A Faraday Middleware sets body encoding when specified by server.
## Motivation
Response body's encoding is set always ASCII-8BIT using with net/http adapter.
Net::HTTP doesn't handle encoding when server specifies encoding in content-type header.
Sometimes we caught an Error such as the following:```ruby
body = Faraday.new(url: 'https://example.com').get('/').body
# body contains utf-8 string. ex: "赤坂"
body.to_json
# => raise Encoding::UndefinedConversionError: "\xE8" from ASCII-8BIT to UTF-8
```That's why I wrote Farday::Encoding gem.
SEE ALSO: [response.body is ASCII-8BIT when Content-Type is text/xml; charset=utf-8](https://github.com/lostisland/faraday/issues/139)
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'faraday-encoding'
```And then execute:
$ bundle
Or install it yourself as:
$ gem install faraday-encoding
## Usage
```ruby
require 'faraday/encoding'conn = Faraday.new do |connection|
connection.response :encoding # use Faraday::Encoding middleware
connection.adapter Faraday.default_adapter # net/http
endresponse = conn.get '/nya.html' # content-type is specified as 'text/plain; charset=utf-8'
response.body.encoding
# => #
```## Contributing
1. Fork it ( https://github.com/ma2gedev/faraday-encoding/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request