ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/DecentralizedMedia/DecentralizedMediaClient/DecentralizedMediaClient.cs
Revision: 519
Committed: 2005-06-22T02:53:14-07:00 (20 years ago) by douglas
File size: 3010 byte(s)
Log Message:
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     writer.WriteStartElement("artist");
95     writer.WriteString(file.artist);
96     writer.WriteEndElement();
97     writer.WriteStartElement("title");
98     writer.WriteString(file.title);
99     writer.WriteEndElement();
100     writer.WriteStartElement("album");
101     writer.WriteString(file.album);
102     writer.WriteEndElement();
103     writer.WriteStartElement("genre");
104     writer.WriteString(file.genre);
105     writer.WriteEndElement();
106     writer.WriteEndElement();
107     }
108    
109     foreach (MediaFolder folder_ in folder.folders)
110     Media(folder_, folder_.path, writer);
111    
112     writer.WriteEndElement();
113     }
114 douglas 518 }

Properties

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