comparison SSRS/SSRS.Services/ReportsService.cs @ 112:b9d5f934cb21

Initial upload
author adminsh@apollo
date Sat, 19 May 2012 16:09:07 +0100
parents
children e51a6af1c98d
comparison
equal deleted inserted replaced
111:6cb8cd05ad6b 112:b9d5f934cb21
1 using System.Collections.Concurrent;
2 using System.Linq;
3 using System.Security.Principal;
4 using System.Threading.Tasks;
5 using SSRS.Services.DTOs;
6 using SSRS.Services.ReportServiceReference;
7 using ServiceStack.ServiceInterface;
8
9 namespace SSRS.Services
10 {
11 public class ReportsService : RestServiceBase<ReportsRequest>
12 {
13 public override object OnPost(ReportsRequest request)
14 {
15 var result = new ConcurrentQueue<ReportInfo>();
16 var client = new ReportingService2010SoapClient();
17 CatalogItem[] catalogItems;
18
19 client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.None;
20 client.ListChildren(null, Settings.ReportPath, true, out catalogItems);
21
22 Parallel.ForEach(catalogItems.Where(r => r.TypeName == "Report"),
23 (r) =>
24 {
25 ItemParameter[] parameters = null;
26
27 if (request.IncludeParameters)
28 client.GetItemParameters(null, r.Path, null, false, null, null, out parameters);
29
30 result.Enqueue(ReportInfo.Create(r.Name, Converter.Convert(parameters), r.Path));
31 });
32
33 return new ReportsResponse { Result = result.ToList() };
34 }
35 }
36 }