예제 #1
0
        public void SubmitReport()
        {
            var request = new SubmitReportRequest(RawRequests.SubmitReport);

            request.Parse();
            Assert.Equal("XXXXXX", request.Certificate);
            Assert.Equal("XXXXXX", request.Proof);
            Assert.Equal("0", request.CsId.ToString());
            Assert.Equal("0", request.CcId.ToString());
            Assert.Equal("0", request.GameId.ToString());
            Assert.Equal("XXXXXX", request.Authoritative);
        }
예제 #2
0
        /// <summary>
        /// Initiates the full course listing.
        /// </summary>
        /// <param name="scopingUser">The username for scoping the report if report uses it</param>
        /// <param name="format">The format</param>
        /// <param name="report">The report name</param>
        /// <param name="reportParams">The report parameters.</param>
        /// <param name="language">The language, or NULL</param>
        /// <param name="duration">The duration to retain report (Use one of the following numeric values: 1 - 1 hour, 2 - 8 hours, 3 - 24 hours.</param>
        /// <param name="client">The client.</param>
        /// <param name="closeclient">if set to <c>true</c> [closeclient].</param>
        /// <returns></returns>
        public static HandleResponse SubmitReport(string scopingUser, reportFormat format, string report, MapItem[] reportParams, string language, int duration, OlsaPortTypeClient client, bool closeclient = false)
        {
            //Set up our response object
            HandleResponse response = null;

            try
            {
                //Create our request
                SubmitReportRequest request = new SubmitReportRequest();

                //Pull the OlsaAuthenticationBehviour so we can extract the customerid
                AuthenticationBehavior olsaCredentials = (AuthenticationBehavior)client.ChannelFactory.Endpoint.Behaviors.Where(p => p.GetType() == typeof(AuthenticationBehavior)).FirstOrDefault();
                request.customerId = olsaCredentials.UserName;

                request.scopingUserId    = scopingUser;
                request.reportFormat     = format;
                request.report           = report;
                request.language         = language;
                request.duration         = duration;
                request.reportParameters = reportParams;


                response = client.UD_SubmitReport(request);
            }
            catch (WebException)
            {
                // This captures any Web Exceptions such as proxy errors etc
                // See http://msdn.microsoft.com/en-us/library/48ww3ee9(VS.80).aspx
                throw;
            }
            catch (TimeoutException)
            {
                //This captures the WCF timeout exception
                throw;
            }
            //WCF fault exception will be thrown for any other issues such as Security
            catch (FaultException fe)
            {
                if (fe.Message.ToLower(CultureInfo.InvariantCulture).Contains("the security token could not be authenticated or authorized"))
                {
                    //The OLSA Credentials specified could not be authenticated
                    throw;
                }
                throw;
            }
            catch (Exception)
            {
                //Any other type of exception, perhaps out of memory
                throw;
            }
            finally
            {
                //Shutdown and dispose of the client
                if (client != null)
                {
                    if (client.State == CommunicationState.Faulted)
                    {
                        client.Abort();
                    }
                    if (closeclient)
                    {
                        //We cannot resue client if we close
                        client.Close();
                    }
                }
            }
            return(response);
        }
예제 #3
0
        static void Main(string[] args)
        {
            var r = new Report.SiteDomainPerformanceReportRequest
            {
                AdvertiserId = 1609099,
                Columns      = new SiteDomainPerformanceReportColumn[]
                {
                    SiteDomainPerformanceReportColumn.Day,
                    SiteDomainPerformanceReportColumn.SiteDomain,
                    SiteDomainPerformanceReportColumn.Imps,
                    SiteDomainPerformanceReportColumn.Clicks,
                    SiteDomainPerformanceReportColumn.Cpm,
                    SiteDomainPerformanceReportColumn.CpmBuyingCurrency,
                    SiteDomainPerformanceReportColumn.AdvertiserId,
                    SiteDomainPerformanceReportColumn.AdvertiserName,
                    SiteDomainPerformanceReportColumn.AdvertiserCode,
                    SiteDomainPerformanceReportColumn.AdvertiserCurrency,
                    SiteDomainPerformanceReportColumn.BuyerMemberId,
                    SiteDomainPerformanceReportColumn.BuyerMemberName,
                    SiteDomainPerformanceReportColumn.BuyingCurrency,
                    SiteDomainPerformanceReportColumn.DealId,
                    SiteDomainPerformanceReportColumn.DealCode,
                    SiteDomainPerformanceReportColumn.DealName,
                    SiteDomainPerformanceReportColumn.Ctr
                },
                Format = ReportFormat.CSV,
                //Emails = new List<string>() { "*****@*****.**" },
                EscapeFields = false,
                Orders       = new Report.ReportOrderBy[]
                {
                    new Report.ReportOrderBy
                    {
                        OrderBy   = "day",
                        Direction = OrderDirection.ASC
                    },
                    new Report.ReportOrderBy
                    {
                        OrderBy   = "imps",
                        Direction = OrderDirection.DESC
                    }
                },
                ReportInterval       = ReportInterval.Custom,
                ReportStartDate      = new DateTime(2017, 3, 13),
                ReportEndDate        = new DateTime(2017, 3, 17),
                ReportingDecimalType = ReportingDecimalType.Decimal,
                TimeZone             = ReportTimezone.AsiaHongKong,
                //Filters = new Report.ReportFilter[]
                //{
                //    new Report.ReportFilter
                //    {
                //        Name = "gender",
                //        Value = "male"
                //    },
                //    new Report.ReportFilter
                //    {
                //        Name = "day",
                //        Value = 20
                //    }
                //},
                //GroupFilters = new Report.ReportGroupFilter[]
                //{
                //    new Report.ReportGroupFilter
                //    {
                //        Name = "imps",
                //        Value = 1000,
                //        Operaor = Operator.LessThan
                //    }
                //}
            };
            var sr = new SubmitReportRequest
            {
                ReportRequest = r,
            };

            //replace username & password with yours
            using (var _client = new PremiumAppNexusApiClient("username", "password"))
            {
                _client.AcquireTokenByUserName += AcquireTokenByUserName;
                _client.TokenRefreshedCallback += TokenRefreshedCallback;
                _client.TokenGrantedCallback   += TokenGrantedCallback;

                var response = _client.Execute(sr);
                if (response == null || response.Response == null)
                {
                    Console.WriteLine("network communication error");
                    return;
                }
                if (response.Response.Status != "OK")
                {
                    Console.WriteLine("submit report error: {0}", response.Response.ErrorMessage);
                }

                File.WriteAllText(response.GetType().Name + ".json", Encoding.UTF8.GetString(Convert.FromBase64String(response.ResponseBase64String)));

                Console.WriteLine("report id: {0}", response.Response.ReportId);

                var url = "";
                while (true)
                {
                    var pollRequest  = new PollReportStatusRequest(response.Response.ReportId);
                    var pollResponse = _client.Execute(pollRequest);
                    if (pollResponse.Response.ExecutionStatus == "ready")
                    {
                        url = pollResponse.Response.ReportInfo.Url;
                        break;
                    }
                }

                if (string.IsNullOrWhiteSpace(url))
                {
                    Console.WriteLine("url is null");
                    return;
                }

                var downloadRequest  = new DownloadReportFileRequest(url);
                var downloadResponse = _client.ExecuteDownload(downloadRequest, @"d:\123.csv");
                if (downloadResponse.Success)
                {
                    Console.WriteLine("File was downloaded at {0}", downloadResponse.ReportFilePath);
                }
            }

            Console.WriteLine("Done");
            Console.ReadLine();
        }