Skip to content
A Faraday Middleware sets body encoding when specified by server.
Branch: master
Clone or download
Latest commit 309a162 Sep 18, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Protect against mutating frozen strings Sep 12, 2018
spec Protect against mutating frozen strings Sep 12, 2018
.gitignore ignore vendor Mar 20, 2015
.travis.yml update latest ruby version Sep 18, 2018
Gemfile initial commit Mar 20, 2015
LICENSE.txt initial commit Mar 20, 2015
README.md add badges Mar 25, 2016
Rakefile add default task for testing Mar 25, 2016
faraday-encoding.gemspec bump version to 0.0.5 Sep 12, 2018

README.md

Faraday::Encoding

Gem Version Build Status

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:

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

Installation

Add this line to your application's Gemfile:

gem 'faraday-encoding'

And then execute:

$ bundle

Or install it yourself as:

$ gem install faraday-encoding

Usage

require 'faraday/encoding'

conn = Faraday.new do |connection|
  connection.response :encoding  # use Faraday::Encoding middleware
  connection.adapter Faraday.default_adapter # net/http
end

response = conn.get '/nya.html'  # content-type is specified as 'text/plain; charset=utf-8'
response.body.encoding
# => #<Encoding:UTF-8>

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
You can’t perform that action at this time.