public async Task <HttpResponseMessage> GetAsync(string contextId = null, string id = null, int?limit = null, string activityId = null, string firstPage = null, int?p = null)
        {
            try
            {
                if (string.IsNullOrEmpty(id))
                {
                    // Get a paginated list of LineItem resources from a LineItemContainer

                    int page = 1;
                    if (p.HasValue)
                    {
                        if (firstPage != null && p.Value != 1)
                        {
                            return(Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                                               new ArgumentException("Request cannot specify both firstPage and a page number > 1")));
                        }
                        page = p.Value;
                    }
                    var context = new GetLineItemsContext(contextId, limit, activityId, page);

                    await OnGetLineItems(context);

                    return(context.StatusCode == HttpStatusCode.OK
                        ? Request.CreateResponse(context.StatusCode, context.LineItemContainerPage, new LineItemContainerPageFormatter())
                        : Request.CreateResponse(context.StatusCode));
                }
                else
                {
                    // Get a representation of a particular LineItem instance

                    var context   = new GetLineItemContext(contextId, id);
                    var mediaType =
                        Request.Headers.Accept.Contains(
                            new MediaTypeWithQualityHeaderValue(LtiConstants.LineItemResultsMediaType))
                            ? LtiConstants.LineItemResultsMediaType
                            : LtiConstants.LineItemMediaType;

                    if (mediaType.Equals(LtiConstants.LineItemResultsMediaType))
                    {
                        await OnGetLineItemWithResults(context);
                    }
                    else
                    {
                        await OnGetLineItem(context);
                    }

                    return(context.StatusCode == HttpStatusCode.OK
                        ? Request.CreateResponse(context.StatusCode, context.LineItem, new LineItemFormatter(), mediaType)
                        : Request.CreateResponse(context.StatusCode));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
        public async Task<HttpResponseMessage> Get(string id = null, int? limit = null, string activityId = null, string firstPage = null, int? p = null)
        {
            try
            {
                if (string.IsNullOrEmpty(id))
                {
                    int page = 1;
                    if (p.HasValue)
                    {
                        if (firstPage != null && p.Value != 1)
                        {
                            return Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                new ArgumentException("Request cannot specify both firstPage and a page number > 1"));
                        }
                        page = p.Value;
                    }
                    var context = new GetLineItemsContext(limit, activityId, page);

                    await OnGetLineItems(context);

                    return context.StatusCode == HttpStatusCode.OK
                        ? Request.CreateResponse(context.StatusCode, context.LineItemContainerPage, new LineItemFormatter())
                        : Request.CreateResponse(context.StatusCode);
                }
                else
                {
                    var context = new GetLineItemContext(id);

                    await OnGetLineItem(context);

                    return context.StatusCode == HttpStatusCode.OK
                        ? Request.CreateResponse(context.StatusCode, context.LineItem, new LineItemFormatter())
                        : Request.CreateResponse(context.StatusCode);
                }
            }
            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
            }
        }
예제 #3
0
        public async Task <HttpResponseMessage> Get(string id = null, int?limit = null, string activityId = null, string firstPage = null, int?p = null)
        {
            try
            {
                if (string.IsNullOrEmpty(id))
                {
                    int page = 1;
                    if (p.HasValue)
                    {
                        if (firstPage != null && p.Value != 1)
                        {
                            return(Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                                               new ArgumentException("Request cannot specify both firstPage and a page number > 1")));
                        }
                        page = p.Value;
                    }
                    var context = new GetLineItemsContext(limit, activityId, page);

                    await OnGetLineItems(context);

                    return(context.StatusCode == HttpStatusCode.OK
                        ? Request.CreateResponse(context.StatusCode, context.LineItemContainerPage, new LineItemFormatter())
                        : Request.CreateResponse(context.StatusCode));
                }
                else
                {
                    var context = new GetLineItemContext(id);

                    await OnGetLineItem(context);

                    return(context.StatusCode == HttpStatusCode.OK
                        ? Request.CreateResponse(context.StatusCode, context.LineItem, new LineItemFormatter())
                        : Request.CreateResponse(context.StatusCode));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
        public async Task<HttpResponseMessage> Get(string contextId = null, string id = null, int? limit = null, string activityId = null, string firstPage = null, int? p = null)
        {
            try
            {
                if (string.IsNullOrEmpty(id))
                {
                    // Get a paginated list of LineItem resources from a LineItemContainer

                    int page = 1;
                    if (p.HasValue)
                    {
                        if (firstPage != null && p.Value != 1)
                        {
                            return Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                new ArgumentException("Request cannot specify both firstPage and a page number > 1"));
                        }
                        page = p.Value;
                    }
                    var context = new GetLineItemsContext(contextId, limit, activityId, page);

                    await OnGetLineItems(context);

                    return context.StatusCode == HttpStatusCode.OK
                        ? Request.CreateResponse(context.StatusCode, context.LineItemContainerPage, new LineItemContainerPageFormatter())
                        : Request.CreateResponse(context.StatusCode);
                }
                else
                {
                    // Get a representation of a particular LineItem instance

                    var context = new GetLineItemContext(contextId, id);
                    var mediaType =
                        Request.Headers.Accept.Contains(
                            new MediaTypeWithQualityHeaderValue(LtiConstants.LineItemResultsMediaType))
                            ? LtiConstants.LineItemResultsMediaType
                            : LtiConstants.LineItemMediaType;

                    if (mediaType.Equals(LtiConstants.LineItemResultsMediaType))
                    {
                        await OnGetLineItemWithResults(context);
                    }
                    else
                    {
                        await OnGetLineItem(context);
                    }

                    return context.StatusCode == HttpStatusCode.OK
                        ? Request.CreateResponse(context.StatusCode, context.LineItem, new LineItemFormatter(), mediaType)
                        : Request.CreateResponse(context.StatusCode);
                }
            }
            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
            }
        }