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
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 |
# File 'lib/gitlab/json.rb', line 243 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 |