builder.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package uri
  2. // Builder builds URIs.
  3. type Builder interface {
  4. URI() URI
  5. SetScheme(scheme string) Builder
  6. SetUserInfo(userinfo string) Builder
  7. SetHost(host string) Builder
  8. SetPort(port string) Builder
  9. SetPath(path string) Builder
  10. SetQuery(query string) Builder
  11. SetFragment(fragment string) Builder
  12. // Returns the URI this Builder represents.
  13. String() string
  14. }
  15. func (u *uri) SetScheme(scheme string) Builder {
  16. u.scheme = scheme
  17. return u
  18. }
  19. func (u *uri) SetUserInfo(userinfo string) Builder {
  20. u.ensureAuthorityExists()
  21. u.authority.userinfo = userinfo
  22. return u
  23. }
  24. func (u *uri) SetHost(host string) Builder {
  25. u.ensureAuthorityExists()
  26. u.authority.host = host
  27. return u
  28. }
  29. func (u *uri) SetPort(port string) Builder {
  30. u.ensureAuthorityExists()
  31. u.authority.port = port
  32. return u
  33. }
  34. func (u *uri) SetPath(path string) Builder {
  35. u.ensureAuthorityExists()
  36. u.authority.path = path
  37. return u
  38. }
  39. func (u *uri) SetQuery(query string) Builder {
  40. u.query = query
  41. return u
  42. }
  43. func (u *uri) SetFragment(fragment string) Builder {
  44. u.fragment = fragment
  45. return u
  46. }
  47. func (u *uri) Builder() Builder {
  48. return u
  49. }