Module: Safrano::MediaEntity

Defined in:
lib/odata/entity.rb

Instance Method Summary collapse

Instance Method Details

#edit_mediaObject



323
324
325
# File 'lib/odata/entity.rb', line 323

def edit_media
  "#{uri}/$value"
end

#media_srcObject



318
319
320
321
# File 'lib/odata/entity.rb', line 318

def media_src
  version = self.class.media_handler.ressource_version(self)
  "#{uri}/$value?version=#{version}"
end

#metadata_hObject

media entity metadata for json h



310
311
312
313
314
315
316
# File 'lib/odata/entity.rb', line 310

def 
  {   uri: uri,
      type: type_name,
      media_src: media_src,
      edit_media: edit_media,
      content_type: @values[:content_type] }
end

#odata_delete(req) ⇒ Object



333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
# File 'lib/odata/entity.rb', line 333

def odata_delete(req)
  if req.accept?(APPJSON)
    # delete the MR
    # delegate to the media handler on collection(ie class) level
    # TODO error handling

    self.class.media_handler.odata_delete(entity: self)
    # delete the relation(s)  to parent(s) (if any) and then entity
    odata_delete_relation_and_entity(req, @navattr_reflection, @nav_parent)
    # result
    [200, EMPTY_HASH, [{ 'd' => req.service.get_emptycoll_odata_h }.to_json]]
  else # TODO: other formats
    415
  end
end

#odata_media_value_get(req) ⇒ Object

real implementation for returning $value for a media entity



350
351
352
353
# File 'lib/odata/entity.rb', line 350

def odata_media_value_get(req)
  # delegate to the media handler on collection(ie class) level
  self.class.media_handler.odata_get(request: req, entity: self)
end

#odata_media_value_put(req) ⇒ Object

real implementation for replacing $value for a media entity



356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
# File 'lib/odata/entity.rb', line 356

def odata_media_value_put(req)
  model = self.class
  req.with_media_data do |data, mimetype, _filename|
    emdata = { content_type: mimetype }
    if req.in_changeset
      set_fields(emdata, model.data_fields, missing: :skip)
      save(transaction: false)
    else

      update_fields(emdata, model.data_fields, missing: :skip)

    end
    model.media_handler.replace_file(data: data,
                                     entity: self)

    ARY_204_EMPTY_HASH_ARY
  end
end

#values_for_odataObject



327
328
329
330
331
# File 'lib/odata/entity.rb', line 327

def values_for_odata
  ret = values.dup
  ret.delete(:content_type)
  ret
end