Skip to content

Commit f06d2e6

Browse files
authored
Merge pull request #114 from RichardPoes/patch-1
Add syntax highlighting to examples
2 parents ba31444 + 800f539 commit f06d2e6

File tree

1 file changed

+122
-113
lines changed

1 file changed

+122
-113
lines changed

README.md

Lines changed: 122 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -47,133 +47,142 @@ PM> Install-Package HttpMultipartParser
4747

4848
### Single file
4949

50-
// stream:
51-
-----------------------------41952539122868
52-
Content-Disposition: form-data; name="username"
53-
54-
example
55-
-----------------------------41952539122868
56-
Content-Disposition: form-data; name="email"
57-
58-
59-
-----------------------------41952539122868
60-
Content-Disposition: form-data; name="files[]"; filename="photo1.jpg"
61-
Content-Type: image/jpeg
62-
63-
ExampleBinaryData012031203
64-
-----------------------------41952539122868--
65-
66-
// ===== Simple Parsing ====
67-
// You can parse synchronously:
68-
var parser = MultipartFormDataParser.Parse(stream);
69-
70-
// Or you can parse asynchronously:
71-
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
72-
73-
// From this point the data is parsed, we can retrieve the
74-
// form data using the GetParameterValue method.
75-
var username = parser.GetParameterValue("username");
76-
var email = parser.GetParameterValue("email")
50+
```
51+
// stream:
52+
-----------------------------41952539122868
53+
Content-Disposition: form-data; name="username"
7754
78-
// Files are stored in a list:
79-
var file = parser.Files.First();
80-
string filename = file.FileName;
81-
Stream data = file.Data;
55+
example
56+
-----------------------------41952539122868
57+
Content-Disposition: form-data; name="email"
8258
83-
// ==== Advanced Parsing ====
84-
var parser = new StreamingMultipartFormDataParser(stream);
85-
parser.ParameterHandler += parameter => DoSomethingWithParameter(parameter);
86-
parser.FileHandler += (name, fileName, type, disposition, buffer, bytes, partNumber, additionalProperties) =>
87-
{
88-
// Write the part of the file we've received to a file stream. (Or do something else)
89-
filestream.Write(buffer, 0, bytes);
90-
}
59+
60+
-----------------------------41952539122868
61+
Content-Disposition: form-data; name="files[]"; filename="photo1.jpg"
62+
Content-Type: image/jpeg
9163
92-
// You can parse synchronously:
93-
parser.Run();
64+
ExampleBinaryData012031203
65+
-----------------------------41952539122868--
66+
```
9467

95-
// Or you can parse asynchronously:
96-
await parser.RunAsync().ConfigureAwait(false);
68+
```csharp
69+
// ===== Simple Parsing ====
70+
// You can parse synchronously:
71+
var parser = MultipartFormDataParser.Parse(stream);
72+
73+
// Or you can parse asynchronously:
74+
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
75+
76+
// From this point the data is parsed, we can retrieve the
77+
// form data using the GetParameterValue method.
78+
var username = parser.GetParameterValue("username");
79+
var email = parser.GetParameterValue("email")
80+
81+
// Files are stored in a list:
82+
var file = parser.Files.First();
83+
string filename = file.FileName;
84+
Stream data = file.Data;
85+
86+
// ==== Advanced Parsing ====
87+
var parser = new StreamingMultipartFormDataParser(stream);
88+
parser.ParameterHandler += parameter => DoSomethingWithParameter(parameter);
89+
parser.FileHandler += (name, fileName, type, disposition, buffer, bytes, partNumber, additionalProperties) =>
90+
{
91+
// Write the part of the file we've received to a file stream. (Or do something else)
92+
filestream.Write(buffer, 0, bytes);
93+
}
94+
95+
// You can parse synchronously:
96+
parser.Run();
97+
98+
// Or you can parse asynchronously:
99+
await parser.RunAsync().ConfigureAwait(false);
100+
```
97101

98102
### Multiple Parameters
99103

100-
// stream:
101-
-----------------------------41952539122868
102-
Content-Disposition: form-data; name="checkbox"
103-
104-
likes_cake
105-
-----------------------------41952539122868
106-
Content-Disposition: form-data; name="checkbox"
104+
```
105+
// stream:
106+
-----------------------------41952539122868
107+
Content-Disposition: form-data; name="checkbox"
107108
108-
likes_cookies
109-
-----------------------------41952539122868--
109+
likes_cake
110+
-----------------------------41952539122868
111+
Content-Disposition: form-data; name="checkbox"
110112
111-
// ===== Simple Parsing ====
112-
// You can parse synchronously:
113-
var parser = MultipartFormDataParser.Parse(stream);
113+
likes_cookies
114+
-----------------------------41952539122868--
115+
```
116+
```csharp
117+
// ===== Simple Parsing ====
118+
// You can parse synchronously:
119+
var parser = MultipartFormDataParser.Parse(stream);
120+
121+
// Or you can parse asynchronously:
122+
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
123+
124+
// From this point the data is parsed, we can retrieve the
125+
// form data from the GetParameterValues method
126+
var checkboxResponses = parser.GetParameterValues("checkbox");
127+
foreach(var parameter in checkboxResponses)
128+
{
129+
Console.WriteLine("Parameter {0} is {1}", parameter.Name, parameter.Data)
130+
}
131+
```
114132

115-
// Or you can parse asynchronously:
116-
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
133+
### Multiple Files
117134

118-
// From this point the data is parsed, we can retrieve the
119-
// form data from the GetParameterValues method
120-
var checkboxResponses = parser.GetParameterValues("checkbox");
121-
foreach(var parameter in checkboxResponses)
122-
{
123-
Console.WriteLine("Parameter {0} is {1}", parameter.Name, parameter.Data)
124-
}
135+
```
136+
// stream:
137+
-----------------------------41111539122868
138+
Content-Disposition: form-data; name="files[]"; filename="photo1.jpg"
139+
Content-Type: image/jpeg
140+
141+
MoreBinaryData
142+
-----------------------------41111539122868
143+
Content-Disposition: form-data; name="files[]"; filename="photo2.jpg"
144+
Content-Type: image/jpeg
145+
146+
ImagineLotsOfBinaryData
147+
-----------------------------41111539122868--
148+
```
149+
```csharp
150+
// ===== Simple Parsing ====
151+
// You can parse synchronously:
152+
var parser = MultipartFormDataParser.Parse(stream);
125153

126-
### Multiple Files
154+
// Or you can parse asynchronously:
155+
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
127156

128-
// stream:
129-
-----------------------------41111539122868
130-
Content-Disposition: form-data; name="files[]"; filename="photo1.jpg"
131-
Content-Type: image/jpeg
132-
133-
MoreBinaryData
134-
-----------------------------41111539122868
135-
Content-Disposition: form-data; name="files[]"; filename="photo2.jpg"
136-
Content-Type: image/jpeg
137-
138-
ImagineLotsOfBinaryData
139-
-----------------------------41111539122868--
140-
141-
// ===== Simple Parsing ====
142-
// You can parse synchronously:
143-
var parser = MultipartFormDataParser.Parse(stream);
144-
145-
// Or you can parse asynchronously:
146-
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
147-
148-
// Loop through all the files
149-
foreach(var file in parser.Files)
150-
{
151-
Stream data = file.Data;
152-
153-
// Do stuff with the data.
154-
}
155-
156-
// ==== Advanced Parsing ====
157-
var parser = new StreamingMultipartFormDataParser(stream);
158-
parser.ParameterHandler += parameter => DoSomethingWithParameter(parameter);
159-
parser.FileHandler += (name, fileName, type, disposition, buffer, bytes, partNumber, additionalProperties) =>
160-
{
161-
// Write the part of the file we've received to a file stream. (Or do something else)
162-
// Assume that filesreamsByName is a Dictionary<string, FileStream> of all the files
163-
// we are writing.
164-
filestreamsByName[name].Write(buffer, 0, bytes);
165-
};
166-
parser.StreamClosedHandler += ()
167-
{
168-
// Do things when my input stream is closed
169-
};
170-
171-
// You can parse synchronously:
172-
parser.Run();
173-
174-
// Or you can parse asynchronously:
175-
await parser.RunAsync().ConfigureAwait(false);
157+
// Loop through all the files
158+
foreach(var file in parser.Files)
159+
{
160+
Stream data = file.Data;
176161

162+
// Do stuff with the data.
163+
}
164+
165+
// ==== Advanced Parsing ====
166+
var parser = new StreamingMultipartFormDataParser(stream);
167+
parser.ParameterHandler += parameter => DoSomethingWithParameter(parameter);
168+
parser.FileHandler += (name, fileName, type, disposition, buffer, bytes, partNumber, additionalProperties) =>
169+
{
170+
// Write the part of the file we've received to a file stream. (Or do something else)
171+
// Assume that filesreamsByName is a Dictionary<string, FileStream> of all the files
172+
// we are writing.
173+
filestreamsByName[name].Write(buffer, 0, bytes);
174+
};
175+
parser.StreamClosedHandler += ()
176+
{
177+
// Do things when my input stream is closed
178+
};
179+
180+
// You can parse synchronously:
181+
parser.Run();
182+
183+
// Or you can parse asynchronously:
184+
await parser.RunAsync().ConfigureAwait(false);
185+
```
177186
## Licensing
178187

179188
This project is licensed under MIT.

0 commit comments

Comments
 (0)