1# has useful print method
2
3    Code
4      html_form(html, base_url = "http://google.com")[[1]]
5    Output
6      <form> 'test' (POST http://google.com/test-path)
7        <field> (select) select:
8        <field> (text) name: Hadley
9        <field> (password) name: ******
10        <field> (button) clickMe:
11        <field> (textarea) address: ABCDEF
12
13---
14
15    Code
16      html_form(html)[[1]]$fields[[2]]
17    Output
18      <field> (text) name: Hadley
19
20# handles different encoding types
21
22    Code
23      convert_enctype("unknown")
24    Warning <warning>
25      Unknown enctype (unknown). Defaulting to form encoded.
26    Output
27      [1] "form"
28
29# can set values of inputs
30
31    Code
32      form <- html_form_set(form, hidden = "abc")
33    Warning <warning>
34      Setting value of hidden field 'hidden'.
35
36# has informative errors
37
38    Code
39      html_form_set(form, text = "x")
40    Error <rlang_error>
41      Can't change value of input with type submit: 'text'.
42
43---
44
45    Code
46      html_form_set(form, missing = "x")
47    Error <rlang_error>
48      Can't set value of fields that don't exist: ' missing '
49
50# useful feedback on invalid forms
51
52    Code
53      submission_build(form, NULL)
54    Error <rlang_error>
55      `form` doesn't contain a `action` attribute
56
57---
58
59    Code
60      x <- submission_build(form, NULL)
61    Warning <warning>
62      Invalid method (FOO), defaulting to GET
63
64# handles multiple buttons
65
66    Code
67      vals <- submission_build_values(form, NULL)
68    Message <message>
69      Submitting with 'one'
70
71---
72
73    Code
74      submission_build_values(form, 3L)
75    Error <rlang_error>
76      Numeric `submit` out of range
77
78---
79
80    Code
81      submission_build_values(form, "three")
82    Error <rlang_error>
83      No <input> found with name 'three'.
84      i Possible values: one, two
85
86---
87
88    Code
89      submission_build_values(form, TRUE)
90    Error <rlang_error>
91      `submit` must be NULL, a string, or a number.
92
93# can submit using three primary techniques
94
95    Code
96      show_response(html_form_submit(form))
97    Output
98      GET
99      Query string: x=1&x=2&y=3
100
101    Code
102      form$method <- "POST"
103      show_response(html_form_submit(form))
104    Output
105      POST application/x-www-form-urlencoded
106      Query string:
107      x=1&x=2&y=3
108    Code
109      form$enctype <- "multipart"
110      show_response(html_form_submit(form))
111    Output
112      POST multipart/form-data; boundary=---<divider>
113      Query string:
114      ---<divider>
115      Content-Disposition: form-data; name="x"
116
117      1
118      ---<divider>
119      Content-Disposition: form-data; name="x"
120
121      2
122      ---<divider>
123      Content-Disposition: form-data; name="y"
124
125      3
126      ---<divider>--
127
128
129