OSDN Git Service

・フォトライフの対応一応完了
[futonwriter/old_trunk.git] / HatenaDiaryClient / Models / Hatena / HatenaFotolife.cs
index cefc45f..bdb6cf9 100644 (file)
@@ -1,10 +1,9 @@
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Text;
-using System.IO;
 using System.Xml.Linq;
-using System.Net;
 
 namespace Azyobuzi.HatenaDiaryClient.Models.Hatena
 {
@@ -38,30 +37,30 @@ namespace Azyobuzi.HatenaDiaryClient.Models.Hatena
                 case "bmp":
                     mimeType = "image/x-bmp";
                     break;
-                case "mov":
-                    mimeType = "video/quicktime";
-                    break;
-                case "mpg":
-                case "mpeg":
-                case "m1v":
-                    mimeType = "video/mpeg";
-                    break;
-                case "wmv":
-                    mimeType = "video/x-ms-wmv";
-                    break;
-                case "avi":
-                    mimeType = "video/avi";
-                    break;
-                case "flv":
-                    mimeType = "video/x-flv";
-                    break;
-                case "3gp":
-                case "3gpp":
-                    mimeType = "video/3gpp";
-                    break;
-                case "3g2":
-                    mimeType = "video/3gpp2";
-                    break;
+                //case "mov":
+                //    mimeType = "video/quicktime";
+                //    break;
+                //case "mpg":
+                //case "mpeg":
+                //case "m1v":
+                //    mimeType = "video/mpeg";
+                //    break;
+                //case "wmv":
+                //    mimeType = "video/x-ms-wmv";
+                //    break;
+                //case "avi":
+                //    mimeType = "video/avi";
+                //    break;
+                //case "flv":
+                //    mimeType = "video/x-flv";
+                //    break;
+                //case "3gp":
+                //case "3gpp":
+                //    mimeType = "video/3gpp";
+                //    break;
+                //case "3g2":
+                //    mimeType = "video/3gpp2";
+                //    break;
                 default:
                     throw new ArgumentException("対応してないファイルです。");
             } 
@@ -84,7 +83,59 @@ namespace Azyobuzi.HatenaDiaryClient.Models.Hatena
                 Encoding.GetEncoding("shift_jis"),
                 this.userName,
                 this.password);
-            return new FotolifeEntry(reXml.Root, false);
+            return new FotolifeEntry(reXml.Root);
+        }
+
+        public FotolifeEntry GetEntry(string id)
+        {
+            return new FotolifeEntry(
+                WsseAtomConnection.Get(
+                    "http://f.hatena.ne.jp/atom/edit/" + id,
+                    Encoding.UTF8,
+                    this.userName,
+                    this.password
+                )
+                .Root
+            );
+        }
+
+        public void EditEntry(string id, string newTitle)
+        {
+            WsseAtomConnection.Put(
+                "http://f.hatena.ne.jp/atom/edit/" + id,
+                null,
+                Encoding.GetEncoding("shift_jis").GetBytes(
+                    new XDocument(
+                        new XElement(XmlNamespaces.Atom02Spec + "entry",
+                            new XElement(XmlNamespaces.Atom02Spec + "title", newTitle)
+                        )
+                    )
+                    .ToString()
+                ),
+                null,
+                this.userName,
+                this.password);
+        }
+
+        public void DeleteEntry(string id)
+        {
+            WsseAtomConnection.Delete(
+                "http://f.hatena.ne.jp/atom/edit/" + id,
+                this.userName,
+                this.password);
+        }
+
+        public IEnumerable<FotolifeEntry> GetEntrys(int page = 1)
+        {
+            return WsseAtomConnection.Get(
+                "http://f.hatena.ne.jp/atom/feed?page=" + page.ToString(),
+                Encoding.UTF8,
+                this.userName,
+                this.password
+            )
+            .Root
+            .Elements(XmlNamespaces.Atom02Spec + "entry")
+            .Select(_ => new FotolifeEntry(_));
         }
     }
 }