https://github.com/ma2gedev/faraday-encoding
A Faraday Middleware sets body encoding when specified by server.
https://github.com/ma2gedev/faraday-encoding
Last synced: 25 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 (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-08-02T12:51:43.000Z (10 months ago)
- Last Synced: 2025-04-14T14:11:04.453Z (about 2 months ago)
- Language: Ruby
- Homepage: https://github.com/ma2gedev/faraday-encoding
- Size: 29.3 KB
- Stars: 25
- Watchers: 3
- Forks: 7
- Open Issues: 0
-
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
[](http://badge.fury.io/rb/faraday-encoding)
[](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