example_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright 2016 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package cookiejar_test
  5. import (
  6. "fmt"
  7. "log"
  8. "net/http"
  9. "net/http/cookiejar"
  10. "net/http/httptest"
  11. "net/url"
  12. )
  13. func ExampleNew() {
  14. // Start a server to give us cookies.
  15. ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  16. if cookie, err := r.Cookie("Flavor"); err != nil {
  17. http.SetCookie(w, &http.Cookie{Name: "Flavor", Value: "Chocolate Chip"})
  18. } else {
  19. cookie.Value = "Oatmeal Raisin"
  20. http.SetCookie(w, cookie)
  21. }
  22. }))
  23. defer ts.Close()
  24. u, err := url.Parse(ts.URL)
  25. if err != nil {
  26. log.Fatal(err)
  27. }
  28. // All users of cookiejar should import "golang.org/x/net/publicsuffix"
  29. jar, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List})
  30. if err != nil {
  31. log.Fatal(err)
  32. }
  33. client := &http.Client{
  34. Jar: jar,
  35. }
  36. if _, err = client.Get(u.String()); err != nil {
  37. log.Fatal(err)
  38. }
  39. fmt.Println("After 1st request:")
  40. for _, cookie := range jar.Cookies(u) {
  41. fmt.Printf(" %s: %s\n", cookie.Name, cookie.Value)
  42. }
  43. if _, err = client.Get(u.String()); err != nil {
  44. log.Fatal(err)
  45. }
  46. fmt.Println("After 2nd request:")
  47. for _, cookie := range jar.Cookies(u) {
  48. fmt.Printf(" %s: %s\n", cookie.Name, cookie.Value)
  49. }
  50. // Output:
  51. // After 1st request:
  52. // Flavor: Chocolate Chip
  53. // After 2nd request:
  54. // Flavor: Oatmeal Raisin
  55. }