public void Put(int id, Contact newContact)
        {
            Contact contact = _contacts.GetContact(id);
            if (contact == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            _contacts.UpdateContact(id, newContact);
        }
 public Contact AddContact(Contact item)
 {
     item.Id = Interlocked.Increment(ref currentId);
     item.LastModified = DateTime.UtcNow;
     if (_contacts.TryAdd(item.Id, item))
     {
         return item;
     }
     throw new InvalidOperationException(string.Format("Item with ID {0} cannot be added", item.Id));
 }
 public bool UpdateContact(int id, Contact item)
 {
     Contact oldValue;
     if (_contacts.TryGetValue(id, out oldValue))
     {
         item.Id = id;
         item.LastModified = DateTime.UtcNow;
         return _contacts.TryUpdate(id, item, oldValue);
     }
     return false;
 }
        /// <summary>
        /// Runs an HttpClient issuing sample requests against controller using AttributeRouting.
        /// </summary>
        static void RunClient()
        {
            HttpClient client = new HttpClient();
            client.BaseAddress = _baseAddress;

            // Get all contacts
            HttpResponseMessage response = client.GetAsync("/contacts").Result;
            response.EnsureSuccessStatusCode();
            string content = response.Content.ReadAsStringAsync().Result;
            Console.WriteLine("\nAll contacts returned: {0}", content);

            // Get contact with default id = 1
            response = client.GetAsync("/contactOrDefault").Result;
            response.EnsureSuccessStatusCode();
            content = response.Content.ReadAsStringAsync().Result;
            Console.WriteLine("\nContact with default value of id = 1: {0}", content);

            // Get contact with out of range id = 4
            response = client.GetAsync("/contactRange/4").Result;
            content = response.Content.ReadAsStringAsync().Result;
            Console.WriteLine("\nContact with out of range id = 4: {0}", content);

            // Post new contact
            Contact contact = new Contact
            {
                Email = "*****@*****.**",
                Name = "new",
                Phone = "xxx xxx xxxx"
            };
            response = client.PostAsJsonAsync("/contact", contact).Result;
            response.EnsureSuccessStatusCode();
            content = response.Content.ReadAsStringAsync().Result;
            Console.WriteLine("\nNew contact: {0}", content);

            // Update contact
            response = client.PutAsJsonAsync("/contact/1", contact).Result;
            response.EnsureSuccessStatusCode();
            Console.WriteLine("\nUpdated contact with id = 1 succeeded");
        }
 public Contact Post(Contact contact)
 {
     return _contacts.AddContact(contact);
 }