Class: Gitlab::Json::LimitedEncoder
- Inherits:
-
Object
- Object
- Gitlab::Json::LimitedEncoder
- Defined in:
- lib/gitlab/json.rb
Constant Summary collapse
- LimitExceeded =
Class.new(StandardError)
Class Method Summary collapse
-
.encode(object, limit: 25.megabytes) ⇒ String
Generates JSON for an object or raise an error if the resulting json string is too big.
Class Method Details
.encode(object, limit: 25.megabytes) ⇒ String
Generates JSON for an object or raise an error if the resulting json string is too big
304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 |
# File 'lib/gitlab/json.rb', line 304 def self.encode(object, limit: 25.megabytes) buffer = StringIO.new buffer_size = 0 ::Yajl::Encoder.encode(object) do |data_chunk| chunk_size = data_chunk.bytesize raise LimitExceeded if buffer_size + chunk_size > limit buffer << data_chunk buffer_size += chunk_size end buffer.string end |