ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/DecentralizedMedia/DecentralizedMediaClient/DecentralizedMediaClient.cs
Revision: 520
Committed: 2005-06-22T03:01:07-07:00 (20 years ago) by douglas
File size: 3257 byte(s)
Log Message:
Don't send a bunch a stuff if it's just going to be empty, also it makes the code look nicer, yay!

File Contents

# User Rev Content
1 douglas 518 // Decentralized Media Client
2     //
3     // Douglas Thrift
4     //
5     // $Id$
6    
7     using System;
8 douglas 519 using System.Collections.Generic;
9 douglas 518 using System.Net;
10     using System.IO;
11     using System.Text;
12     using System.Xml;
13    
14     public class DecentralizedMediaClient
15     {
16 douglas 519 public DecentralizedMediaClient()
17     {
18     Extensions();
19    
20     DirectoryInfo folder = new DirectoryInfo(@"C:\DouglasThrift.net\DecentralizedMedia\Media");
21    
22     folders.Add(new KeyValuePair<DirectoryInfo,MediaFolder>(folder, new MediaFolder(folder, extensions)));
23    
24     Media();
25     }
26    
27 douglas 518 public static void Main(string[] args)
28     {
29 douglas 519 DecentralizedMediaClient client = new DecentralizedMediaClient();
30     }
31    
32     private List<string> extensions = new List<string>();
33     private List<KeyValuePair<DirectoryInfo, MediaFolder>> folders = new List<KeyValuePair<DirectoryInfo, MediaFolder>>();
34    
35     private void Extensions()
36     {
37 douglas 518 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://daemon:6996/");
38    
39 douglas 519 request.Method = "EXTENSIONS";
40    
41     HttpWebResponse response = (HttpWebResponse)request.GetResponse();
42     StreamReader reader = new StreamReader(response.GetResponseStream());
43     string extension;
44    
45     while ((extension = reader.ReadLine()) != null)
46     extensions.Add(extension);
47     }
48    
49     private void Media()
50     {
51     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://daemon:6996/");
52    
53 douglas 518 request.Method = "MEDIA";
54     request.SendChunked = true;
55    
56     XmlWriterSettings settings = new XmlWriterSettings();
57    
58     settings.Indent = true;
59    
60     Stream stream = request.GetRequestStream();
61     XmlWriter writer = XmlWriter.Create(stream, settings);
62    
63     writer.WriteStartDocument();
64     writer.WriteStartElement("media");
65 douglas 519
66     foreach (KeyValuePair<DirectoryInfo, MediaFolder> folder in folders)
67     Media(folder.Value, "//unplugged/DCXXXX$", writer);
68    
69 douglas 518 writer.WriteEndDocument();
70     writer.Close();
71 douglas 519 // XXX: for some reason the XmlWriter's Close() doesn't work right
72 douglas 518 stream.Close();
73    
74     HttpWebResponse response = (HttpWebResponse)request.GetResponse();
75    
76     Console.WriteLine("{0} {1}", (int)response.StatusCode, response.StatusDescription);
77    
78     response.Close();
79     }
80 douglas 519
81     private void Media(MediaFolder folder, string path, XmlWriter writer)
82     {
83     writer.WriteStartElement("folder");
84     writer.WriteStartElement("path");
85     writer.WriteString(path);
86     writer.WriteEndElement();
87    
88     foreach (MediaFile file in folder.files)
89     {
90     writer.WriteStartElement("file");
91     writer.WriteStartElement("path");
92     writer.WriteString(file.path);
93     writer.WriteEndElement();
94 douglas 520
95     if (file.artist != null && file.artist != "")
96     {
97     writer.WriteStartElement("artist");
98     writer.WriteString(file.artist);
99     writer.WriteEndElement();
100     }
101    
102     if (file.title != null && file.title != "")
103     {
104     writer.WriteStartElement("title");
105     writer.WriteString(file.title);
106     writer.WriteEndElement();
107     }
108    
109     if (file.album != null && file.album != "")
110     {
111     writer.WriteStartElement("album");
112     writer.WriteString(file.album);
113     writer.WriteEndElement();
114     }
115    
116     if (file.genre != null && file.album != "")
117     {
118     writer.WriteStartElement("genre");
119     writer.WriteString(file.genre);
120     writer.WriteEndElement();
121     }
122    
123 douglas 519 writer.WriteEndElement();
124     }
125    
126     foreach (MediaFolder folder_ in folder.folders)
127     Media(folder_, folder_.path, writer);
128    
129     writer.WriteEndElement();
130     }
131 douglas 518 }

Properties

Name Value
svn:eol-style native
svn:keywords Id