/// <summary> /// While creating a media entity, we could only post with its binary media resource. /// If we want to add values to its non-media properties, we need to to update/patch the entity /// instance with those property values. /// </summary> /// <returns></returns> private async Task UpdateNonMediaProperty(IODataEntity entity, string value) { string keyProeprtyName = "pk"; string propertyName = "title"; // We do not update the key property. Only remains those proeprties to be updated. entity.Properties.Remove(keyProeprtyName); var prop = new ODataProperty(propertyName); prop.Value = value; entity.Properties[propertyName] = prop; var req = new ODataRequestParametersSingle(entity.EditResourcePath, RequestMode.Update, entity); req.Etag = entity.Etag; try { var exec = Store.ScheduleRequest(req); await exec.Response; } catch (Exception ex) { result.Text += ex.Message + "\n"; } }
private async Task <int> QueryEntityCount(string entitySet) { if (Store == null) { return(-1); } ODataRequestParametersSingle requestParameters = new ODataRequestParametersSingle(entitySet + "/$count"); IODataRequestExecution exec = Store.ScheduleRequest(requestParameters); await exec.Response; ODataRawValue rawValue = (ODataRawValue)((IODataResponseSingle)exec.Response.Result).Payload; return(Int32.Parse(rawValue.Value)); }
public async Task <IODataEntity> CreateStreamEntity() { var stream = await pickAPicture(); if (stream == null) { return(null); } Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer((uint)stream.Size); await stream.ReadAsync(buffer, (uint)stream.Size, InputStreamOptions.None); DataReader dataReader = DataReader.FromBuffer(buffer); byte[] bytes = new byte[buffer.Length]; dataReader.ReadBytes(bytes); ODataRequestParametersSingle req; IODataResponse resp; IODataRequestExecution exec; req = new ODataRequestParametersSingle("Photos", RequestMode.Create, new ODataUploadMediaResource(bytes, stream.ContentType)); try { exec = Store.ScheduleRequest(req); resp = await exec.Response; } catch (Exception ex) { result.Text += ex.Message + "\n"; return(null); } if (((ODataResponseSingle)resp).PayloadType == ODataType.Error) { return(null); } else { ODataEntity entity = (ODataEntity)((ODataResponseSingle)resp).Payload; await UpdateNonMediaProperty(entity, "Added at: " + DateTime.Now.ToString()); return(entity); } }
public async Task <bool> DeleteStreamEntity(IODataEntity mediaEntity) { ODataRequestParametersSingle req; IODataResponse resp; IODataRequestExecution exec; req = new ODataRequestParametersSingle(mediaEntity.EditResourcePath, RequestMode.Delete, mediaEntity); try { exec = Store.ScheduleRequest(req); resp = await exec.Response; return(true); } catch (Exception ex) { result.Text += ex.Message + "\n"; return(false); } }
public async Task <bool> UpdateStreamEntity(IODataEntity mediaEntity) { var stream = await pickAPicture(); if (stream == null) { return(false); } Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer((uint)stream.Size); await stream.ReadAsync(buffer, (uint)stream.Size, InputStreamOptions.None); DataReader dataReader = DataReader.FromBuffer(buffer); byte[] bytes = new byte[buffer.Length]; dataReader.ReadBytes(bytes); ODataRequestParametersSingle req; IODataResponse resp; IODataRequestExecution exec; req = new ODataRequestParametersSingle(mediaEntity.EditMediaLink.ToString(), RequestMode.Update, new ODataUploadMediaResource(bytes, stream.ContentType)); req.Etag = mediaEntity.MediaEtag; try { exec = Store.ScheduleRequest(req); resp = await exec.Response; await UpdateNonMediaProperty(mediaEntity, "Updated at: " + DateTime.Now.ToString()); return(true); } catch (Exception ex) { result.Text += ex.Message + "\n"; return(false); } }