Pārlūkot izejas kodu

VLCHTTPConnection: Refactor HTML String creation

Soomin Lee 6 gadi atpakaļ
vecāks
revīzija
572fc16141
1 mainītis faili ar 47 papildinājumiem un 69 dzēšanām
  1. 47 69
      Sources/VLCHTTPConnection.m

+ 47 - 69
Sources/VLCHTTPConnection.m

@@ -191,90 +191,68 @@
     return [allMedia copy];
 }
 
+- (NSString *)createHTMLMediaObjectFromMedia:(VLCMLMedia *)media
+{
+    return [NSString stringWithFormat:
+            @"<div style=\"background-image:url('Thumbnail/%@')\"> \
+            <a href=\"download/%@\" class=\"inner\"> \
+            <div class=\"down icon\"></div> \
+            <div class=\"infos\"> \
+            <span class=\"first-line\">%@</span> \
+            <span class=\"second-line\">%@ - %@</span> \
+            </div> \
+            </a> \
+            </div>",
+            media.thumbnail.absoluteString,
+            [[media mainFile].mrl.path
+             stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLFragmentAllowedCharacterSet],
+            media.title,
+            [media mediaDuration], [media formatSize]];
+}
+
+- (NSString *)createHTMLFolderObjectWithImagePath:(NSString *)imagePath
+                                             name:(NSString *)name
+                                            count:(NSUInteger)count
+{
+    return [NSString stringWithFormat:
+            @"<div style=\"background-image:url('Thumbnail/%@')\"> \
+            <a href=\"#\" class=\"inner folder\"> \
+            <div class=\"open icon\"></div> \
+            <div class=\"infos\"> \
+            <span class=\"first-line\">%@</span> \
+            <span class=\"second-line\">%lu items</span> \
+            </div> \
+            </a> \
+            <div class=\"content\">",
+            imagePath,
+            name,
+            count];
+}
+
 - (HTTPDynamicFileResponse *)generateHttpResponseFrom:(NSArray *)media path:(NSString *)path
 {
     NSMutableArray *mediaInHtml = [[NSMutableArray alloc] initWithCapacity:media.count];
     for (NSObject <VLCMLObject> *mediaObject in media) {
         if ([mediaObject isKindOfClass:[VLCMLMedia class]]) {
-            VLCMLMedia *media = (VLCMLMedia *)mediaObject;
-            [mediaInHtml addObject:[NSString stringWithFormat:
-                                    @"<div style=\"background-image:url('Thumbnail/%@')\"> \
-                                    <a href=\"download/%@\" class=\"inner\"> \
-                                    <div class=\"down icon\"></div> \
-                                    <div class=\"infos\"> \
-                                    <span class=\"first-line\">%@</span> \
-                                    <span class=\"second-line\">%@ - %@</span> \
-                                    </div> \
-                                    </a> \
-                                    </div>",
-                                    media.thumbnail.absoluteString,
-                                    [[media mainFile].mrl.path stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLFragmentAllowedCharacterSet],
-                                    media.title,
-                                    [media mediaDuration], [media formatSize]]];
+            [mediaInHtml addObject:[self createHTMLMediaObjectFromMedia:(VLCMLMedia *)mediaObject]];
         } else if ([mediaObject isKindOfClass:[VLCMLPlaylist class]]) {
             VLCMLPlaylist *playlist = (VLCMLPlaylist *)mediaObject;
             NSArray *playlistItems = [playlist media];
-            [mediaInHtml addObject:[NSString stringWithFormat:
-                                    @"<div style=\"background-image:url('Thumbnail/%@')\"> \
-                                    <a href=\"#\" class=\"inner folder\"> \
-                                    <div class=\"open icon\"></div> \
-                                    <div class=\"infos\"> \
-                                    <span class=\"first-line\">%@</span> \
-                                    <span class=\"second-line\">%lu items</span> \
-                                    </div> \
-                                    </a> \
-                                    <div class=\"content\">",
-                                    playlist.artworkMrl,
-                                    playlist.name,
-                                    (unsigned long)playlistItems.count]];
+            [mediaInHtml addObject: [self createHTMLFolderObjectWithImagePath:playlist.artworkMrl
+                                                                name:playlist.name
+                                                               count:playlistItems.count]];
             for (VLCMLMedia *media in playlistItems) {
-                [mediaInHtml addObject:[NSString stringWithFormat:
-                                        @"<div style=\"background-image:url('Thumbnail/%@')\"> \
-                                        <a href=\"download/%@\" class=\"inner\"> \
-                                        <div class=\"down icon\"></div> \
-                                        <div class=\"infos\"> \
-                                        <span class=\"first-line\">%@</span> \
-                                        <span class=\"second-line\">%@ - %@</span> \
-                                        </div> \
-                                        </a> \
-                                        </div>",
-                                        media.thumbnail.path,
-                                        [[media mainFile].mrl.path stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLFragmentAllowedCharacterSet],
-                                        media.title,
-                                        [media mediaDuration], [media formatSize]]];
+                [mediaInHtml addObject:[self createHTMLMediaObjectFromMedia:media]];
             }
             [mediaInHtml addObject:@"</div></div>"];
         } else if ([mediaObject isKindOfClass:[VLCMLAlbum class]]) {
             VLCMLAlbum *album = (VLCMLAlbum *)mediaObject;
             NSArray *albumTracks = [album tracks];
-            [mediaInHtml addObject:[NSString stringWithFormat:
-                                    @"<div style=\"background-image:url('Thumbnail/%@')\"> \
-                                    <a href=\"#\" class=\"inner folder\"> \
-                                    <div class=\"open icon\"></div> \
-                                    <div class=\"infos\"> \
-                                    <span class=\"first-line\">%@</span> \
-                                    <span class=\"second-line\">%lu items</span> \
-                                    </div> \
-                                    </a> \
-                                    <div class=\"content\">",
-                                    album.artworkMrl,
-                                    album.title,
-                                    (unsigned long)albumTracks.count]];
+            [mediaInHtml addObject:[self createHTMLFolderObjectWithImagePath:album.artworkMrl.path
+                                                                        name:album.title
+                                                                       count:albumTracks.count]];
             for (VLCMLMedia *track in albumTracks) {
-                [mediaInHtml addObject:[NSString stringWithFormat:
-                                        @"<div style=\"background-image:url('Thumbnail/%@')\"> \
-                                        <a href=\"download/%@\" class=\"inner\"> \
-                                        <div class=\"down icon\"></div> \
-                                        <div class=\"infos\"> \
-                                        <span class=\"first-line\">%@</span> \
-                                        <span class=\"second-line\">%@ - %@</span> \
-                                        </div> \
-                                        </a> \
-                                        </div>",
-                                        track.thumbnail.absoluteString,
-                                        [[track mainFile].mrl.path stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLFragmentAllowedCharacterSet],
-                                        track.title,
-                                        [track mediaDuration], [track formatSize]]];
+                [mediaInHtml addObject:[self createHTMLMediaObjectFromMedia:track]];
             }
             [mediaInHtml addObject:@"</div></div>"];
         }