tModLoader v0.11.8.9
A mod to make and play Terraria mods
Terraria.ModLoader.IO.UploadFile Class Reference

Public Member Functions

 UploadFile ()
 

Static Public Member Functions

static byte[] GetUploadFilesRequestData (IEnumerable< UploadFile > files, NameValueCollection values, string boundary)
 
static byte[] UploadFiles (string address, IEnumerable< UploadFile > files, NameValueCollection values)
 

Properties

byte[] Content [get, set]
 
string ContentType [get, set]
 
string Filename [get, set]
 
string Name [get, set]
 

Static Private Member Functions

static void WriteFiles (Stream requestStream, IEnumerable< UploadFile > files, string boundary)
 
static void WriteValues (Stream requestStream, NameValueCollection values, string boundary)
 

Detailed Description

Definition at line 11 of file UploadFile.cs.

Constructor & Destructor Documentation

◆ UploadFile()

Terraria.ModLoader.IO.UploadFile.UploadFile ( )

Definition at line 13 of file UploadFile.cs.

13 {
14 ContentType = "application/octet-stream";
15 }

References Terraria.ModLoader.IO.UploadFile.ContentType.

Member Function Documentation

◆ GetUploadFilesRequestData()

static byte[] Terraria.ModLoader.IO.UploadFile.GetUploadFilesRequestData ( IEnumerable< UploadFile files,
NameValueCollection  values,
string  boundary 
)
static

Definition at line 45 of file UploadFile.cs.

45 {
46 boundary = "--" + boundary;
47 using (var requestStream = new MemoryStream()) {
48 WriteValues(requestStream, values, boundary);
49 WriteFiles(requestStream, files, boundary);
50 var boundaryBuffer = Encoding.ASCII.GetBytes(boundary + "--");
51 requestStream.Write(boundaryBuffer, 0, boundaryBuffer.Length);
52 return requestStream.ToArray();
53 }
54 }
static void WriteFiles(Stream requestStream, IEnumerable< UploadFile > files, string boundary)
Definition: UploadFile.cs:71
static void WriteValues(Stream requestStream, NameValueCollection values, string boundary)
Definition: UploadFile.cs:56

References Terraria.ModLoader.IO.UploadFile.WriteFiles(), and Terraria.ModLoader.IO.UploadFile.WriteValues().

+ Here is the call graph for this function:

◆ UploadFiles()

static byte[] Terraria.ModLoader.IO.UploadFile.UploadFiles ( string  address,
IEnumerable< UploadFile files,
NameValueCollection  values 
)
static

Definition at line 25 of file UploadFile.cs.

25 {
26 var request = WebRequest.Create(address);
27 request.Method = "POST";
28 var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo);
29 request.ContentType = "multipart/form-data; boundary=" + boundary;
30 boundary = "--" + boundary;
31 using (var requestStream = request.GetRequestStream()) {
32 WriteValues(requestStream, values, boundary);
33 WriteFiles(requestStream, files, boundary);
34 var boundaryBuffer = Encoding.ASCII.GetBytes(boundary + "--");
35 requestStream.Write(boundaryBuffer, 0, boundaryBuffer.Length);
36 }
37 using (var response = request.GetResponse())
38 using (var responseStream = response.GetResponseStream())
39 using (var stream = new MemoryStream()) {
40 responseStream.CopyTo(stream);
41 return stream.ToArray();
42 }
43 }

References Terraria.ModLoader.IO.UploadFile.WriteFiles(), and Terraria.ModLoader.IO.UploadFile.WriteValues().

+ Here is the call graph for this function:

◆ WriteFiles()

static void Terraria.ModLoader.IO.UploadFile.WriteFiles ( Stream  requestStream,
IEnumerable< UploadFile files,
string  boundary 
)
staticprivate

Definition at line 71 of file UploadFile.cs.

71 {
72 if (files == null)
73 return;
74
75 // Write the files
76 foreach (var file in files) {
77 var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine);
78 requestStream.Write(buffer, 0, buffer.Length);
79 buffer = Encoding.UTF8.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"{2}", file.Name, file.Filename, Environment.NewLine));
80 requestStream.Write(buffer, 0, buffer.Length);
81 buffer = Encoding.ASCII.GetBytes(string.Format("Content-Type: {0}{1}{1}", file.ContentType, Environment.NewLine));
82 requestStream.Write(buffer, 0, buffer.Length);
83 requestStream.Write(file.Content, 0, file.Content.Length);
84 buffer = Encoding.ASCII.GetBytes(Environment.NewLine);
85 requestStream.Write(buffer, 0, buffer.Length);
86 }
87 }
@ Environment
Sandstorm, Hell, Above surface during Eclipse, Space

References Terraria.ModLoader.Environment.

Referenced by Terraria.ModLoader.IO.UploadFile.GetUploadFilesRequestData(), and Terraria.ModLoader.IO.UploadFile.UploadFiles().

+ Here is the caller graph for this function:

◆ WriteValues()

static void Terraria.ModLoader.IO.UploadFile.WriteValues ( Stream  requestStream,
NameValueCollection  values,
string  boundary 
)
staticprivate

Definition at line 56 of file UploadFile.cs.

56 {
57 if (values == null)
58 return;
59
60 // Write the values
61 foreach (string name in values.Keys) {
62 var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine);
63 requestStream.Write(buffer, 0, buffer.Length);
64 buffer = Encoding.ASCII.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"{1}{1}", name, Environment.NewLine));
65 requestStream.Write(buffer, 0, buffer.Length);
66 buffer = Encoding.UTF8.GetBytes(values[name] + Environment.NewLine);
67 requestStream.Write(buffer, 0, buffer.Length);
68 }
69 }

References Terraria.ModLoader.Environment.

Referenced by Terraria.ModLoader.IO.UploadFile.GetUploadFilesRequestData(), and Terraria.ModLoader.IO.UploadFile.UploadFiles().

+ Here is the caller graph for this function:

Property Documentation

◆ Content

byte [] Terraria.ModLoader.IO.UploadFile.Content
getset

Definition at line 23 of file UploadFile.cs.

23{ get; set; }

◆ ContentType

string Terraria.ModLoader.IO.UploadFile.ContentType
getset

Definition at line 21 of file UploadFile.cs.

21{ get; set; }

Referenced by Terraria.ModLoader.IO.UploadFile.UploadFile().

◆ Filename

string Terraria.ModLoader.IO.UploadFile.Filename
getset

Definition at line 19 of file UploadFile.cs.

19{ get; set; }

◆ Name

string Terraria.ModLoader.IO.UploadFile.Name
getset

Definition at line 17 of file UploadFile.cs.

17{ get; set; }