protected string RunQuerywithParam(int IssueID, APIResource apiresource, string method = "GET")
        {
            string          url;
            HttpWebRequest  request  = null;
            HttpWebResponse response = null;
            string          result   = null;

            if (apiresource == APIResource.Devstatus_Detail)
            {
                url                 = m_BaseUrlDev_Status + IssueID + "&applicationType=stash&dataType=repository";
                request             = WebRequest.Create(url) as HttpWebRequest;
                request.ContentType = "application/json";
                request.Method      = method;
            }

            if (request != null)
            {
                string base64Credentials = GetEncodedCredentials();
                request.Headers.Add("Authorization", "Basic " + base64Credentials);

                response = request.GetResponse() as HttpWebResponse;
                result   = string.Empty;
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    result = reader.ReadToEnd();
                }
            }
            return(result);
        }
Пример #2
0
        private static void RunBatchExample(APIResource resource)
        {
            ShippoCollection <CarrierAccount> carrierAccounts = resource.AllCarrierAccount();
            string defaultCarrierAccount = "";

            foreach (CarrierAccount account in carrierAccounts)
            {
                if (account.Carrier.ToString() == "usps")
                {
                    defaultCarrierAccount = account.ObjectId;
                }
            }

            Address addressFrom = Address.createForPurchase("Mr. Hippo", "965 Mission St.", "Ste 201", "SF",
                                                            "CA", "94103", "US", "4151234567", "*****@*****.**");
            Address addressTo = Address.createForPurchase("Mrs. Hippo", "965 Missions St.", "Ste 202", "SF",
                                                          "CA", "94103", "US", "4151234568", "*****@*****.**");

            Parcel[]      parcels       = { Parcel.createForShipment(5, 5, 5, "in", 2, "oz") };
            Shipment      shipment      = Shipment.createForBatch(addressFrom, addressTo, parcels);
            BatchShipment batchShipment = BatchShipment.createForBatchShipments(defaultCarrierAccount, "usps_priority", shipment);

            List <BatchShipment> batchShipments = new List <BatchShipment> ();

            batchShipments.Add(batchShipment);

            Batch batch = resource.CreateBatch(defaultCarrierAccount, "usps_priority", ShippoEnums.LabelFiletypes.PDF_4x6,
                                               "BATCH #170", batchShipments);

            Console.WriteLine("Batch Status = " + batch.Status);
            Console.WriteLine("Metadata = " + batch.Metadata);
        }
Пример #3
0
        /// <summary>
        /// Gets results from the GW2 API and saves those results to the SQL database.
        /// </summary>
        /// <typeparam name="R">The result type that query results from the GW2 API are to be filtered into.</typeparam>
        /// <typeparam name="E">The entity type that is to be used to save the result data to the SQL database.</typeparam>
        /// <param name="resource">The type of resource to get data for.</param>
        /// <param name="targetDataSet">The dataset containing entities to be populated from results from the GW2 API.</param>
        /// <param name="ids">The unique identifiers in the GW2 API for the items for which data is to be retrieved.</param>
        private void UploadToDatabase <R, E>(APIResource resource, DbSet <E> targetDataSet, IEnumerable <int> ids)
            where R : APIDataResult <E>
            where E : Entity
        {
            if (ids == null)
            {
                return;
            }

            //this.OnDataLoadStarted(new DataLoadEventArgs(resource, ids.Count()));

            var count  = 0;
            E   result = null;

            foreach (var id in ids)
            {
                count += 1;
                result = this.GetSingleResult <R, E>(resource, id) as E;

                if (result != null)
                {
                    targetDataSet.Add(result);
                }

                if (count % _updateInterval == 0)
                {
                    this.SaveChanges(resource, () => targetDataSet.Remove(result));
                    //this.OnDataLoadStatusUpdate(new DataLoadEventArgs(resource, count));
                }
            }

            this.SaveChanges(resource, () => targetDataSet.Remove(result));
            //this.OnDataLoadFinished(new DataLoadEventArgs(resource, null));
        }
Пример #4
0
        /// <summary>
        /// Returns a result for a single ID from the GW2 API for the specified resource.
        /// </summary>
        /// <typeparam name="R">The result type that query results from the GW2 API are to be filtered into.</typeparam>
        /// <typeparam name="E">The entity type that is to be used to save the result data to the SQL database.</typeparam>
        /// <param name="client">The HTTP client used to interact with the GW2 API.</param>
        /// <param name="resource">The type of resource to get data for.</param>
        /// <param name="id">The ID of the result to be retrieved.</param>
        /// <returns>A result for a single ID from the GW2 API for the specified resource.</returns>
        private Entity GetSingleResult <R, E>(APIResource resource, int id)
            where R : APIDataResult <E>
            where E : Entity
        {
            var baseURL         = Settings.Default.APIBaseURL;
            var listURL         = $"{baseURL}/{resource.GetPath()}";
            var singleResultURL = $"{listURL}/{id}";

            var retryCount = 0;

            while (retryCount < this._maxRetryCount)
            {
                var singleResultResponse = this._httpClient.GetAsync(singleResultURL).Result;

                if (singleResultResponse.IsSuccessStatusCode)
                {
                    Debug.WriteLine($"Resource : {resource} | ID : {id} | Retry Count : {retryCount}");
                    return(singleResultResponse.Content.ReadAsAsync <R>().Result.ToEntity());
                }

                if (singleResultResponse.ReasonPhrase == "Not Found")
                {
                    return(null);
                }

                retryCount += 1;
            }

            return(null);
        }
Пример #5
0
        /// <summary>
        /// Saves a set of entity changes to the SQL database.
        /// </summary>
        /// <typeparam name="E">The entity type that is to be used to save the result data to the SQL database.</typeparam>
        /// <param name="resource">The type of resource to get data for.</param>
        /// <param name="targetDataSet">The dataset containing entities to be populated from results from the GW2 API.</param>
        /// <param name="result">The GW2 API query result containing data to be saved to the database.</param>
        private void SaveChanges(APIResource resource, Action onFailure)
        {
            try
            {
                this._entities.SaveChanges();
            }
            catch (DbUpdateException e)
            {
                var message = $"Error saving changes for resource \"{resource}\". Exception message: {e.Message}";

                if (e.InnerException != null)
                {
                    message += $" First sub-exception message: {e.InnerException.Message}";
                }

                if (e.InnerException.InnerException != null)
                {
                    message += $" Second sub-exception message: {e.InnerException.InnerException.Message}";
                }

                message += $" : {e.StackTrace}";

                //this.OnDataLoadStatusUpdate(new DataLoadEventArgs(resource, null, message));

                onFailure?.Invoke();

                if (!this._continueOnError)
                {
                    throw;
                }
            }
        }
Пример #6
0
        public async Task <bool> CreateResource(APIResource req)
        {
            if (req.ResName == string.Empty)
            {
                return(false);
            }

            var apires = new ApiResourceApiDto()
            {
                Description = req.Description,
                DisplayName = req.ResName,
                Enabled     = true,
                Name        = req.ResName
            };
            var res = await apiLao.CreateApiResource(apires);

            if (res)
            {
                req.ResID = apires.Id;
                var result = await couchContext.InsertAsync <APIResource>(couchDbHelper, req);

                return(result.IsSuccess);
            }

            return(false);
        }
Пример #7
0
        /// <summary>
        /// Downloads data from the GW2 API for the specified resource with the option
        /// to append to or replace existing data for that resource.
        /// </summary>
        /// <param name="resource">The API resource for which to download data.</param>
        /// <param name="replace">True if existing data is to be replace; false otherwise.</param>
        public void Load(APIResource resource, bool replace)
        {
            if (replace)
            {
                _entities.Delete(resource);
            }

            switch (resource)
            {
            case APIResource.Items:
                _isModelBuilt = false;
                _api.UploadToDatabase <ItemResult, ItemEntity>(resource, _entities.Items);
                break;

            case APIResource.Recipes:
                _isModelBuilt = false;
                _api.UploadToDatabase <RecipeResult, RecipeEntity>(resource, _entities.Recipes);
                break;

            case APIResource.CommerceListings:
                var sellableItems = ApplyListingsToSellableItems();
                _api.UploadToDatabase <ListingResult, ListingEntity>(resource, _entities.Listings, sellableItems);
                break;

            default:
                throw new ArgumentException($"Unable to load data for API resource \"{nameof(resource)}\".", nameof(resource));
            }
        }
Пример #8
0
        private static void RunInternationalAddressValidationExample(APIResource resource)
        {
            Hashtable parameters = new Hashtable();

            parameters.Add("name", "Shippo Hippo");
            parameters.Add("company", "Shippo");
            parameters.Add("street_no", null);
            parameters.Add("street1", "40 Bay St");
            parameters.Add("street2", null);
            parameters.Add("city", "Toronto");
            parameters.Add("state", "ON");
            parameters.Add("zip", "M5J 2X2");
            parameters.Add("country", "CA");
            parameters.Add("phone", "+1 555 341 9393");
            parameters.Add("email", "*****@*****.**");
            parameters.Add("metadata", "Customer ID 123456");
            parameters.Add("validate", "true");
            Address address = resource.CreateAddress(parameters);

            Console.Out.WriteLine("Address IsValid: " + address.ValidationResults.IsValid);
            if (address.ValidationResults.Messages != null)
            {
                foreach (ValidationMessage message in address.ValidationResults.Messages)
                {
                    Console.Out.WriteLine("Address Message Code: " + message.Code);
                    Console.Out.WriteLine("Address Message Text: " + message.Text);
                    Console.Out.WriteLine();
                }
            }
            Console.Out.WriteLine("Address Latitude: " + address.Latitude);
            Console.Out.WriteLine("Address Longitude: " + address.Longitude);
        }
Пример #9
0
        private static void RunTrackingExample(APIResource resource)
        {
            Track track = resource.RetrieveTracking("usps", TRACKING_NO);

            Console.WriteLine("Carrier = " + track.Carrier.ToUpper());
            Console.WriteLine("Tracking number = " + track.TrackingNumber);
        }
Пример #10
0
        /// <summary>
        /// Gets results from the GW2 API and saves those results to the SQL database.
        /// </summary>
        /// <typeparam name="R">The result type that query results from the GW2 API are to be filtered into.</typeparam>
        /// <typeparam name="E">The entity type that is to be used to save the result data to the SQL database.</typeparam>
        /// <param name="client">The HTTP client used to interact with the GW2 API.</param>
        /// <param name="resource">The type of resource to get data for.</param>
        /// <param name="targetDataSet">The dataset containing entities to be populated from results from the GW2 API.</param>
        public void UploadToDatabase <R, E>(APIResource resource, DbSet <E> targetDataSet)
            where R : APIDataResult <E>
            where E : Entity
        {
            var ids = this.GetIds(resource, targetDataSet);

            this.UploadToDatabase <R, E>(resource, targetDataSet, ids);
        }
Пример #11
0
        [SetUp] public void Init()
        {
            String token = Environment.GetEnvironmentVariable("Wrapper_Token");

            apiResource = new APIResource(token);
            liveAPI     = new APIResource(Environment.GetEnvironmentVariable("Live_Token"));
            now         = DateTime.Now.ToString("yyyy-MM-dd HH':'mm':'ss");
            live        = false;
        }
Пример #12
0
        public ActionResult <object> ShipAsync(ShippoShipping model)
        {
            APIResource resource = new APIResource("shippo_test_4b21ff87309dbb951077d18f554f1ffc1d1f9988");

            Hashtable parameters = new Hashtable();

            parameters.Add("address_to", model.address_to);
            parameters.Add("address_from", model.address_from);
            parameters.Add("parcels", model.parcels);
            parameters.Add("async", false);

            var shipmentInfo = resource.CreateShipment(parameters);

            return(shipmentInfo);
        }
Пример #13
0
        public async Task Request_withdraw()
        {
            // Arrange
            AccountRequestWithdrawResponse response;

            // Act && Assert
            using (IApiResources apiClient = new APIResource())
                using (var client = new Account(apiClient))
                {
                    var value = 5.00m;
                    response = await client.RequestWithdrawAsync("74c265aedbfaea379bc0148fae9b5526", value, "74c265aedbfaea379bc0148fae9b5526").ConfigureAwait(false);

                    Assert.That(response.WithdrawValue, Is.EqualTo(value));
                }
        }
Пример #14
0
        public async Task Update_account_information_configurations_with_success()
        {
            // Arrange
            SimpleResponseMessage response;
            var request = new BankVerificationRequestMessage(AvailableBanks.Santander, "1111", "99999999-9", BankAccountTypeAbbreviation.CC, true);

            // Act && Assert
            using (IApiResources apiClient = new APIResource())
                using (var client = new Account(apiClient))
                {
                    response = await client.UpdateBankAccoutDataAsync(request, "74c265aedbfaea379bc0148fae9b5526").ConfigureAwait(false);
                }

            Assert.That(response.Success, Is.True);
        }
Пример #15
0
        public async Task CreateNewResource(string apiname, string display, string description,
                                            string userid, string created)
        {
            APIResource req = new APIResource()
            {
                ResName     = apiname,
                Created     = created,
                Description = description,
                UserID      = userid,
                DisplayName = display
            };
            var result = await myAPIResouce.CreateResource(req);

            Assert.True(result);
        }
Пример #16
0
        public ActionResult <object> ShippingLabelAsync(ShippoShippingLabel model)
        {
            APIResource resource = new APIResource("shippo_test_4b21ff87309dbb951077d18f554f1ffc1d1f9988");

            Hashtable parameters = new Hashtable();


            parameters.Add("shipment", model.shipment);
            parameters.Add("carrier_account", model.carrier_account);
            parameters.Add("servicelevel_token", model.servicelevel_token);

            var shippingLabel = resource.CreateTransaction(parameters);

            return(shippingLabel);
        }
Пример #17
0
        public async Task Update_account_configurations_with_success()
        {
            // Arrange
            GetAccountResponseMessage response;
            var request = new AccountConfigurationRequestMessage
            {
                PerDayInterest  = true,
                Fines           = true,
                LatePaymentFine = 2,
            };

            // Act && Assert
            using (IApiResources apiClient = new APIResource())
                using (var client = new Account(apiClient))
                {
                    Assert.DoesNotThrow(async() => { await client.ConfigureAccountAsync(request, "74c265aedbfaea379bc0148fae9b5526").ConfigureAwait(false); });
                }
        }
Пример #18
0
        /// <summary>
        /// Deletes existing data from the SQL database. Respects foreign key relationships in that data.
        /// </summary>
        /// <param name="resource">The resource for which data is to be deleted.</param>
        public void Delete(APIResource resource)
        {
            if (resource == APIResource.Recipes || resource == APIResource.Items)
            {
                this.Disciplines.RemoveRange(this.Disciplines);
                this.RecipeFlags.RemoveRange(this.RecipeFlags);
                this.Ingredients.RemoveRange(this.Ingredients);
                this.GuildIngredients.RemoveRange(this.GuildIngredients);
                this.Recipes.RemoveRange(this.Recipes);
            }

            if (resource == APIResource.Items)
            {
                this.ItemFlags.RemoveRange(this.ItemFlags);
                this.Items.RemoveRange(this.Items);
            }

            this.SaveChanges();
        }
Пример #19
0
        public async Task Verify_if_account_is_valid()
        {
            // Arrange
            var requestAccountVerify = new VerifyAccountRequestMessage(expectedResponse.Data, true);
            VerifyAccountResponseMessage verifyAccountResponse;
            var responseContent = JsonConvert.SerializeObject(expectedResponse);

            // Act
            using (IHttpClientWrapper stubHttpClient = new StubHttpClient(new StringContent(responseContent, Encoding.UTF8, "application/json")))
                using (IApiResources apiClient = new APIResource(stubHttpClient))
                    using (var client = new Account(apiClient))
                    {
                        verifyAccountResponse = await client.VerifyUnderAccountAsync(requestAccountVerify, response.AccountId, response.UserToken).ConfigureAwait(false);
                    }

            // Assert
            Assert.That(expectedResponse.Data.Name, Is.EqualTo(verifyAccountResponse.Data.Name));
            Assert.That(expectedResponse.Data.Address, Is.EqualTo(verifyAccountResponse.Data.Address));
            Assert.That(expectedResponse.AccountId, Is.EqualTo(verifyAccountResponse.AccountId));
        }
Пример #20
0
        public async Task Get_a_created_account()
        {
            // Arrange
            var requestAccountVerify = new VerifyAccountRequestMessage(expectedResponse.Data, true);
            var request         = new Fixture().Build <GetAccountResponseMessage>().Create();
            var responseContent = JsonConvert.SerializeObject(request);

            GetAccountResponseMessage response;

            // Act
            using (IHttpClientWrapper stubHttpClient = new StubHttpClient(new StringContent(responseContent, Encoding.UTF8, "application/json")))
                using (IApiResources apiClient = new APIResource(stubHttpClient))
                    using (var client = new Account(apiClient))
                    {
                        response = await client.GetAsync(request.AccountId, "any-user-token").ConfigureAwait(false);
                    }

            // Assert
            response.ShouldBeEquivalentTo(request);
        }
Пример #21
0
        /// <summary>
        /// Returns a complete list of all possible IDs for the specified resource.
        /// </summary>
        /// <typeparam name="E">The entity type that is to be used to save the result data to the SQL database.</typeparam>
        /// <param name="client">The HTTP client used to interact with the GW2 API.</param>
        /// <param name="resource">The type of resource to get data for.</param>
        /// <param name="targetDataSet">The dataset containing entities to be populated from results from the GW2 API.</param>
        /// <returns>A complete list of all possible IDs for the specified resource.</returns>
        private IEnumerable <int> GetIds <E>(APIResource resource, DbSet <E> targetDataSet)
            where E : Entity
        {
            var baseURL  = Settings.Default.APIBaseURL;
            var listURL  = $"{baseURL}/{resource.GetPath()}";
            var response = this._httpClient.GetAsync(listURL).Result;

            if (!response.IsSuccessStatusCode)
            {
                return(null);
            }

            var queryableDbSet = (IQueryable <Entity>)targetDataSet;
            var existingIds    = queryableDbSet.Select(row => row.APIID)
                                 .OrderBy(id => id)
                                 .ToList();
            var newIds = response.Content.ReadAsAsync <List <int> >().Result;

            return(newIds.Except(existingIds));
        }
Пример #22
0
        public async Task PrepareTests()
        {
            var request = new AccountRequestMessage {
                Name = "*****@*****.**", CommissionPercent = 10
            };

            var responseContent = JsonConvert.SerializeObject(new Fixture().Build <AccountModel>()
                                                              .With(a => a.Name, request.Name)
                                                              .Create());

            using (IHttpClientWrapper stubHttpClient = new StubHttpClient(new StringContent(responseContent, Encoding.UTF8, "application/json")))
                using (IApiResources apiClient = new APIResource(stubHttpClient))
                    using (var client = new MarketPlace(apiClient))
                    {
                        response = await client.CreateUnderAccountAsync(request).ConfigureAwait(false);
                    }

            var address     = new Fixture().Build <AddressModel>().Create();
            var fullAddress = $"{address.Street}, {address.Number} - {address.City} - {address.State}/{address.Country}";

            expectedResponse = new VerifyAccountResponseMessage
            {
                AccountId = response.AccountId,
                Data      = new AccountModel(fullAddress)
                {
                    PriceRange              = "Entre R$ 100,00 e R$ 500,00",
                    PhysicalProducts        = false,
                    BusinessDescription     = "Negócios online",
                    PersonType              = Constants.PersonType.INDIVIDUAL_PERSON,
                    AcceptAutomaticTransfer = true,
                    CPF               = "42753418306",
                    Name              = "Meu Cliente",
                    Phone             = "2199999999",
                    Bank              = Constants.SupportedBanks.CAIXA_ECONOMICA,
                    AccountType       = Constants.BankAccountType.CHECKING_ACCOUNT,
                    BankAgency        = "1520",
                    BankAccountNumber = "00100021066-6"
                },
            };
        }
        /// <summary>
        /// Runs a query towards the JIRA REST api
        /// </summary>
        /// <param name="resource">The kind of resource to ask for</param>
        /// <param name="argument">Any argument that needs to be passed, such as a project key</param>
        /// <param name="data">More advanced data sent in POST requests</param>
        /// <param name="method">Either GET or POST</param>
        /// <param name="APIBase">Base or DevStatus</param>
        /// <returns></returns>
        protected string RunQuery(JiraResource resource, APIResource apiresource, string argument = null, string data = null, string method = "GET")
        {
            string url = string.Format("{0}{1}/", m_BaseUrl, resource.ToString());

            if (argument != null)
            {
                url = string.Format("{0}{1}/", url, argument);
            }

            HttpWebRequest         request       = WebRequest.Create(url) as HttpWebRequest;
            HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);

            request.CachePolicy = noCachePolicy;
            request.ContentType = "application/json";
            request.Method      = method;

            if (data != null)
            {
                using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
                {
                    writer.Write(data);
                }
            }

            string base64Credentials = GetEncodedCredentials();

            request.Headers.Add("Authorization", "Basic " + base64Credentials);

            HttpWebResponse response = request.GetResponse() as HttpWebResponse;

            string result = string.Empty;

            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                result = reader.ReadToEnd();
            }

            return(result);
        }
Пример #24
0
        public async Task Create_a_under_acoount_with_success()
        {
            // Arrange
            var request = new AccountRequestMessage {
                Name = "*****@*****.**", CommissionPercent = 10
            };
            AccountResponseMessage response;

            var responseContent = JsonConvert.SerializeObject(new Fixture().Build <AccountModel>()
                                                              .With(a => a.Name, request.Name)
                                                              .Create());

            // Act
            using (IHttpClientWrapper stubHttpClient = new StubHttpClient(new StringContent(responseContent, Encoding.UTF8, "application/json")))
                using (IApiResources apiClient = new APIResource(stubHttpClient))
                    using (var client = new MarketPlace(apiClient))
                    {
                        response = await client.CreateUnderAccountAsync(request).ConfigureAwait(false);
                    }

            // Assert
            Assert.That(response.Name, Is.EqualTo(request.Name));
        }
Пример #25
0
 [SetUp] public void Init()
 {
     apiResource = new APIResource("<Shippo Token>");
 }
Пример #26
0
 [SetUp] public void Init()
 {
     apiResource = new APIResource("<Shippo Token>");
     now         = DateTime.Now.ToString("yyyy-MM-dd HH':'mm':'ss");
 }
Пример #27
0
        static void Main(string[] args)
        {
            // replace with your Shippo Token
            // don't have one? get more info here
            // (https://goshippo.com/docs/#overview)
            APIResource resource = new APIResource("<Shippo Token>");

            // to address
            Hashtable toAddressTable = new Hashtable();

            toAddressTable.Add("object_purpose", "PURCHASE");
            toAddressTable.Add("name", "Shippo Itle");
            toAddressTable.Add("company", "Shippo");
            toAddressTable.Add("street1", "215 Clayton St.");
            toAddressTable.Add("city", "San Francisco");
            toAddressTable.Add("state", "CA");
            toAddressTable.Add("zip", "94117");
            toAddressTable.Add("country", "US");
            toAddressTable.Add("phone", "+1 555 341 9393");
            toAddressTable.Add("email", "*****@*****.**");

            // from address
            Hashtable fromAddressTable = new Hashtable();

            fromAddressTable.Add("object_purpose", "PURCHASE");
            fromAddressTable.Add("name", "Mr Hippo");
            fromAddressTable.Add("company", "San Diego Zoo");
            fromAddressTable.Add("street1", "2920 Zoo Drive");
            fromAddressTable.Add("city", "San Diego");
            fromAddressTable.Add("state", "CA");
            fromAddressTable.Add("zip", "92101");
            fromAddressTable.Add("country", "US");
            fromAddressTable.Add("email", "*****@*****.**");
            fromAddressTable.Add("phone", "+1 619 231 1515");
            fromAddressTable.Add("metadata", "Customer ID 123456");

            // parcel
            Hashtable parcelTable = new Hashtable();

            parcelTable.Add("length", "5");
            parcelTable.Add("width", "5");
            parcelTable.Add("height", "5");
            parcelTable.Add("distance_unit", "in");
            parcelTable.Add("weight", "2");
            parcelTable.Add("mass_unit", "lb");

            // shipment
            Hashtable shipmentTable = new Hashtable();

            shipmentTable.Add("address_to", toAddressTable);
            shipmentTable.Add("address_from", fromAddressTable);
            shipmentTable.Add("parcel", parcelTable);
            shipmentTable.Add("object_purpose", "PURCHASE");

            // create Shipment object
            Console.WriteLine("Creating Shipment object..");
            Shipment shipment = resource.CreateShipment(shipmentTable);

            // get shipping rates
            Console.WriteLine("Generating rates for shipment " + shipment.ObjectId);
            ShippoCollection <Rate> rates = resource.GetShippingRatesSync((String)shipment.ObjectId);

            Console.WriteLine(String.Format("Obtained " + rates.Data.Count + " rates for shipment " + shipment.ObjectId));
            Rate rate = rates.Data [0];

            Console.WriteLine("Getting shipping label..");
            Hashtable transactionParameters = new Hashtable();

            transactionParameters.Add("rate", rate.ObjectId);
            Transaction transaction = resource.CreateTransactionSync(transactionParameters);


            if (((String)transaction.ObjectStatus).Equals("SUCCESS", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("Label url : " + transaction.LabelURL);
                Console.WriteLine("Tracking number : " + transaction.TrackingNumber);
            }
            else
            {
                Console.WriteLine("An Error has occured while generating your label. Messages : " + transaction.Messages);
            }
        }
Пример #28
0
        static void Main(string[] args)
        {
            // replace with your Shippo Token
            // don't have one? get more info here
            // (https://goshippo.com/docs/#overview)
            APIResource resource = new APIResource ("<Shippo Token>");

            // to address
            Hashtable toAddressTable = new Hashtable ();
            toAddressTable.Add ("object_purpose", "PURCHASE");
            toAddressTable.Add ("name", "Mr. Hippo");
            toAddressTable.Add ("company", "Shippo");
            toAddressTable.Add ("street1", "215 Clayton St.");
            toAddressTable.Add ("city", "San Francisco");
            toAddressTable.Add ("state", "CA");
            toAddressTable.Add ("zip", "94117");
            toAddressTable.Add ("country", "US");
            toAddressTable.Add ("phone", "+1 555 341 9393");
            toAddressTable.Add ("email", "*****@*****.**");

            // from address
            Hashtable fromAddressTable = new Hashtable ();
            fromAddressTable.Add ("object_purpose", "PURCHASE");
            fromAddressTable.Add ("name", "Ms Hippo");
            fromAddressTable.Add ("company", "San Diego Zoo");
            fromAddressTable.Add ("street1", "2920 Zoo Drive");
            fromAddressTable.Add ("city", "San Diego");
            fromAddressTable.Add ("state", "CA");
            fromAddressTable.Add ("zip", "92101");
            fromAddressTable.Add ("country", "US");
            fromAddressTable.Add ("email", "*****@*****.**");
            fromAddressTable.Add ("phone", "+1 619 231 1515");
            fromAddressTable.Add ("metadata", "Customer ID 123456");

            // parcel
            Hashtable parcelTable = new Hashtable ();
            parcelTable.Add ("length", "5");
            parcelTable.Add ("width", "5");
            parcelTable.Add ("height", "5");
            parcelTable.Add ("distance_unit", "in");
            parcelTable.Add ("weight", "2");
            parcelTable.Add ("mass_unit", "lb");

            // shipment
            Hashtable shipmentTable = new Hashtable ();
            shipmentTable.Add ("address_to", toAddressTable);
            shipmentTable.Add ("address_from", fromAddressTable);
            shipmentTable.Add ("parcel", parcelTable);
            shipmentTable.Add ("object_purpose", "PURCHASE");
            shipmentTable.Add ("async", false);

            // create Shipment object
            Console.WriteLine ("Creating Shipment object..");
            Shipment shipment = resource.CreateShipment (shipmentTable);

            // select desired shipping rate according to your business logic
            // we simply select the first rate in this example
            Rate rate = shipment.RatesList[0];

            Console.WriteLine ("Getting shipping label..");
            Hashtable transactionParameters = new Hashtable ();
            transactionParameters.Add ("rate", rate.ObjectId);
            transactionParameters.Add ("async", false);
            Transaction transaction = resource.CreateTransaction (transactionParameters);

            if (((String) transaction.ObjectStatus).Equals ("SUCCESS", StringComparison.OrdinalIgnoreCase)) {
                Console.WriteLine ("Label url : " + transaction.LabelURL);
                Console.WriteLine ("Tracking number : " + transaction.TrackingNumber);
            } else {
                Console.WriteLine ("An Error has occured while generating your label. Messages : " + transaction.Messages);
            }
        }
Пример #29
0
 public void Init()
 {
     apiResource = new APIResource ("<Shippo Token>");
 }
Пример #30
0
        public void Test()
        {
            var resource = new APIResource("shippo_live_c436088fca4e8ddee7df15da1c46458777e9d687");

            // Create address (from)
            var fromAdr = new Hashtable();

            fromAdr.Add("name", "Mr. Thierry Habart");
            fromAdr.Add("street1", "223 avenue des croix du feu");
            fromAdr.Add("city", "BRUXELLES");
            fromAdr.Add("zip", "1020");
            fromAdr.Add("country", "BE");
            fromAdr.Add("phone", "0485350536");
            fromAdr.Add("email", "*****@*****.**");

            var fromAddress = resource.CreateAddress(fromAdr);

            // Create address (to)
            var toAdr = new Hashtable();

            toAdr.Add("name", "Mr. Donabedian David");
            toAdr.Add("street1", "rue solleveld 20");
            toAdr.Add("city", "BRUXELLES");
            toAdr.Add("zip", "1200");
            toAdr.Add("country", "BE");
            toAdr.Add("phone", "0485350536");
            toAdr.Add("email", "*****@*****.**");

            var toAddress = resource.CreateAddress(toAdr);

            // Create a parcel (colis)
            var parcel = new Hashtable();

            parcel.Add("length", 5);
            parcel.Add("width", 5);
            parcel.Add("height", 5);
            parcel.Add("distance_unit", "cm");
            parcel.Add("weight", 2);
            parcel.Add("mass_unit", "kg");

            var p = resource.CreateParcel(parcel);

            // Create shippment.
            var shippment  = new Hashtable();
            var lstParcels = new List <string> {
                p.ObjectId
            };

            shippment.Add("address_to", toAddress.ObjectId);
            shippment.Add("address_from", fromAddress.ObjectId);
            shippment.Add("object_purpose", "PURCHASE");
            shippment.Add("parcels", lstParcels);
            shippment.Add("insurance_currency", "EUR");
            shippment.Add("insurance_amount", 0);
            shippment.Add("submission_type", "DROPOFF");
            shippment.Add("submission_date", "2017-09-04T23:59:50+00:00");
            var ship = resource.CreateShipment(shippment);

            // Get rates
            var    rates = resource.GetShippingRatesSync(ship.ObjectId);
            string s     = "";
        }
Пример #31
0
        static void Main(string[] args)
        {
            // replace with your Shippo Token
            // don't have one? get more info here
            // (https://goshippo.com/docs/#overview)
            APIResource resource = new APIResource("<Shippo Token>");

            // to address
            Hashtable toAddressTable = new Hashtable();

            toAddressTable.Add("name", "Mr. Hippo");
            toAddressTable.Add("company", "Shippo");
            toAddressTable.Add("street1", "215 Clayton St.");
            toAddressTable.Add("city", "San Francisco");
            toAddressTable.Add("state", "CA");
            toAddressTable.Add("zip", "94117");
            toAddressTable.Add("country", "US");
            toAddressTable.Add("phone", "+1 555 341 9393");
            toAddressTable.Add("email", "*****@*****.**");

            // from address
            Hashtable fromAddressTable = new Hashtable();

            fromAddressTable.Add("name", "Ms Hippo");
            fromAddressTable.Add("company", "San Diego Zoo");
            fromAddressTable.Add("street1", "2920 Zoo Drive");
            fromAddressTable.Add("city", "San Diego");
            fromAddressTable.Add("state", "CA");
            fromAddressTable.Add("zip", "92101");
            fromAddressTable.Add("country", "US");
            fromAddressTable.Add("email", "*****@*****.**");
            fromAddressTable.Add("phone", "+1 619 231 1515");
            fromAddressTable.Add("metadata", "Customer ID 123456");

            // parcel
            Hashtable parcelTable = new Hashtable();

            parcelTable.Add("length", "5");
            parcelTable.Add("width", "5");
            parcelTable.Add("height", "5");
            parcelTable.Add("distance_unit", "in");
            parcelTable.Add("weight", "2");
            parcelTable.Add("mass_unit", "lb");

            // shipment
            Hashtable shipmentTable = new Hashtable();

            shipmentTable.Add("address_to", toAddressTable);
            shipmentTable.Add("address_from", fromAddressTable);
            shipmentTable.Add("parcel", parcelTable);
            shipmentTable.Add("object_purpose", "PURCHASE");
            shipmentTable.Add("async", false);

            // create Shipment object
            Console.WriteLine("Creating Shipment object..");
            Shipment shipment = resource.CreateShipment(shipmentTable);

            // select desired shipping rate according to your business logic
            // we simply select the first rate in this example
            Rate rate = shipment.Rates[0];

            Console.WriteLine("Getting shipping label..");
            Hashtable transactionParameters = new Hashtable();

            transactionParameters.Add("rate", rate.ObjectId);
            transactionParameters.Add("async", false);
            Transaction transaction = resource.CreateTransaction(transactionParameters);

            if (((String)transaction.Status).Equals("SUCCESS", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("Label url : " + transaction.LabelURL);
                Console.WriteLine("Tracking number : " + transaction.TrackingNumber);
            }
            else
            {
                Console.WriteLine("An Error has occured while generating your label. Messages : " + transaction.Messages);
            }

            Console.WriteLine("\nBatch\n");
            RunBatchExample(resource);

            Console.WriteLine("\nTrack\n");
            RunTrackingExample(resource);
        }
Пример #32
0
 /// <summary>
 /// Gets results from the GW2 API and saves those results to the SQL database.
 /// </summary>
 /// <typeparam name="R">The result type that query results from the GW2 API are to be filtered into.</typeparam>
 /// <typeparam name="E">The entity type that is to be used to save the result data to the SQL database.</typeparam>
 /// <param name="resource">The type of resource to get data for.</param>
 /// <param name="targetDataSet">The dataset containing entities to be populated from results from the GW2 API.</param>
 /// <param name="ids">The items in the GW2 API for which data is to be retrieved.</param>
 public void UploadToDatabase <R, E>(APIResource resource, DbSet <E> targetDataSet, IEnumerable <Item> items)
     where R : APIDataResult <E>
     where E : Entity
 {
     this.UploadToDatabase <R, E>(resource, targetDataSet, items.Select(i => i.ID));
 }