otarza / serv-cst

CST web III porject
6 stars 0 forks source link

დირექტორიაში არსებული ფაილების ჩამონათვალი #17

Closed ioseb closed 11 years ago

ioseb commented 11 years ago

იმ შემთხვევაში თუ HTTP მოთხოვნაში მითითებული URI მიუთითებს დირექტორიას უნდა გამოვიტანოთ ამ დირექტორიის შიგნით შემავალი ფაილების ჩამონათვალი. მაგალითად გვაქვს მოთხოვნა:

GET /documents HTTP/1.1
Host: service.org

და დავადგინეთ რომ /documents არის დირექტორია. ასეთ შემთხვევაში უნდა ავიღოთ ამ დირექტორიაში შემავალი ფაილებისა და დირექტორიების ჩამონათვალი და მომხმარებელს ვუჩვენოთ როგორც HTML გვერდი სადაც ფაილები/ფოლდერები იქნება ბმულები.

მაგალითად თუ დირექტორია შედგება შემდეგი ფაილებისგან და ქვედირექტორიებისგან:

/documents
    university
    mydocument.doc
    mypicture.jpg
    grades.xlsx

მომხარებელს უნდა ვუჩვენოთ ასეთი HTML გვერდი:

<ul>
  <li><a href="/documents/university">/university</a></li>
  <li><a href="/documents/mydocument.doc">mydocument.doc</a></li>
  <li><a href="/documents/mypicture.jpg">mypicture.jpg</a></li>
  <li><a href="/documents/grades.xlsx">grades.xlsx</a></li>
</ul>

ფაილები ჩამონათვალში ხვდება მხოლოდ იმ შემთხვევაში თუ მასზე გვაქვს წაკითხვის პერმიჟენი(უფლება)

დამატებითი დეტალებისთვის შეიხედე აქ #10 და ნახე როგორ ხდება ფაილებთან მუშაობა File კლასის მეშვეობით.

@demonno @reflooding @revazi თქვენს მოსაზრებებს და იდეებსაც ველოდები თუმცა დავალება @vaxop - ს გასაკეთებელია.

ioseb commented 11 years ago

@vaxop ამ დავალებაზე ფიქრი დაიწყე მხოლოდ მას მერე როცა დაამთავრებ #14 დავალებას.

vaxop commented 11 years ago

directoryList რომ დ ვარქვა ამ კლასს მოსულა?

vaxop commented 11 years ago

HttpFilesList?

vaxop commented 11 years ago

არა HttpDirFileList

ioseb commented 11 years ago

ვახო, ეგ ყველაფერი ფანტასტიურია! ერთი გაითვალისწინე, რომ შენს რეალიზაციას File ტიპის ობიექტი გადმოეცემა გარედან, სხვის მიერ და isDirectory აღარ დაგჭირდება. ასევე სტრიქონი მასე არ დააგენერირო StringBuilder გამოიყენე. დეტალებს კომპტან რომ ვიქნები კიდევ მოგწერ.

Sent from my iPhone

On Mar 9, 2013, at 6:16 PM, Vaxtang Pataraia notifications@github.com wrote:

package edu.cst.webserver.http;

import java.io.File;

public class HttpDirFilesList { public static void main(String[] args) {

String path = "C:\\Users\\vaxop\\Documents\\GitHub\\serv-cst\\src\\main\\java\\edu\\cst\\webserver\\http\\fold";
File file2 = new File(path);
if (file2.isDirectory()) {
    File[] item = file2.listFiles();
    String absolutePath = file2.getAbsolutePath();
    System.out.println("<ul>");
    for(File f : item){
        if(f.isDirectory()){
            System.out.println("<li>" + "<a href=" + '"' + absolutePath + "\\" + f.getName() + '"' + ">"+"/" + f.getName() + "</a>" + "</li>");
        }
        else{
            System.out.println("<li>" + "<a href=" + '"' + absolutePath + "\\" + f.getName() + '"' + ">" + f.getName() + "</a>" + "</li>");
        }
    }
    System.out.println("</ul>");
} else {
    System.out.println("file");
    System.out.println(file2.getAbsolutePath());
}

} }

@ioseb ესეთი რაღაცეები ვიმაიმუნე ცოტა რომ აზრზე მოვსულიყავი , ეხლა როგორ მოვიქცე?.

— Reply to this email directly or view it on GitHub.

vaxop commented 11 years ago

სტრიქონი დავაგენერირე StringBuilder-ით ეხლა ეს კლასი მაქვს.

package edu.cst.webserver.http;

import java.io.File;

/**
 * User: vaxop
 */
public class HttpDirFilesList {
    public static void main(String[] args) {

        String path = "C:\\Users\\vaxop\\Documents\\GitHub\\serv-cst\\src\\main\\java\\edu\\cst\\webserver\\http\\fold";
        File file2 = new File(path);
        if (file2.isDirectory()) {
            File[] item = file2.listFiles();
            String absolutePath = file2.getAbsolutePath();
            StringBuilder builder = new StringBuilder();
            builder.append("<ul>");
            for (File f : item) {
                builder.append("<li><a href=\"");
                builder.append(absolutePath);
                builder.append("\\");
                builder.append(f.getName());
                builder.append("\" >");
                if (f.isDirectory()) {
                    builder.append("/");
                }
                builder.append(f.getName());
                builder.append("</a></li>");
            }
            builder.append("</ul>");

            builder.toString();
            System.out.println(builder);

        } else {
            System.out.println("file");
            System.out.println(file2.getAbsolutePath());
        }
    }
}
demonno commented 11 years ago

@vaxop ეს არ გამოგრჩეს :warning:

ფაილები ჩამონათვალში ხვდება მხოლოდ იმ შემთხვევაში თუ მასზე გვაქვს წაკითხვის პერმიჟენი(უფლება)

ioseb commented 11 years ago

@vaxop განვაახლოთ ამ საკითხის დამუშავება.

vaxop commented 11 years ago

@ioseb ამას ტესტები უნდა?

demonno commented 11 years ago

@vaxop ჩაერთო შენი კოდი საქმეში , გადახედე #37 ამას..

otarza commented 11 years ago

@demonno მოწოდების სიმაღლეზე ხარ? :D :+1:

ioseb commented 11 years ago

@otarza ხო არა თქვენსავით მახათები უნდა აპრიალოს...

On Thursday, April 25, 2013 at 4:25 PM, otar wrote:

@demonno (https://github.com/demonno) მოწოდების სიმაღლეზე ხარ? :D

— Reply to this email directly or view it on GitHub (https://github.com/otarza/serv-cst/issues/17#issuecomment-17003544).

otarza commented 11 years ago

@ioseb ზოგისთვის ეგეც საქმეა :D

vaxop commented 11 years ago

@otarza ჭეშმარიტი ხარ როგორც ყოველთვის:დ

ioseb commented 11 years ago

ახალგაზრდებო,

თქვენს დოკუმენტ რუტში(ანუ იქ სადაც დემურმა მოიწერა) ჩააგდეთ ის ფაილები რასაც ახლა გიგზავნით. დაქოქეთ სერვერი, გახსენით ბრაუზერი აკრიფეთ: http://localhost:9191/ და ისიამოვნეთ B-)

ფაილები: http://cl.ly/3z0c2X2G3P3Q

On Thursday, April 25, 2013 at 4:36 PM, otar wrote:

@ioseb (https://github.com/ioseb) ზოგისთვის ეგეც საქმეა :D

— Reply to this email directly or view it on GitHub (https://github.com/otarza/serv-cst/issues/17#issuecomment-17004017).

ioseb commented 11 years ago

@otarza @revazi @gtkesh @vaxop ყველას გეხებათ! B-)

P.S. კოდის განახლება არ დაგავიწყდეთ ბოლო ვერსიაზე.

ioseb commented 11 years ago

@demonno მიეხმარე @vaxop - ს ამ დავალების დასრულებაში.

demonno commented 11 years ago

ვაუ :smile: აი შედეგი და ეფექტი ამას ქვია .. Network მონიტორში რა რექვესტები იგზავნება :+1:

@ioseb მივეხმარები

ioseb commented 11 years ago

@demonno მოიტანა? :P სხვებმაც გააკეთეთ იგივე!

ioseb commented 11 years ago

@vaxop @demonno რას აპირებთ?

demonno commented 11 years ago

@ioseb

ამას ვაპირებთ და დღეს უმეტესობის გაკეთებას ვგეგმავთ. /cc @vaxop

p.s. თუ რამე ზედმეტია ან აკლია გვითხარი ...

ioseb commented 11 years ago

@demonno ძალიან კარგია!

On Friday, April 26, 2013 at 10:53 AM, Demur Nodia wrote:

@ioseb (https://github.com/ioseb)
ვაპირებთ რომ გავმართოთ ისე რო დირექტორიებზე გადასვლა შეიძლებოდეს, დავასორტიროთ ლისტი ისე რომ ჯერ დირექტორიები იყოს მერე ფაილები ასევე მშობელ დირექტორიაში დაბრუნება ხდებოდეს ლისტის ზემოთ არსებული ღილაკით
გვინდა ჩავამატოთ Size და Date Modified
ფაილების და დირექტორიების განმასხვავებელი იკონკების ჩამატება რამე ესეთი დასახელების წინ Directory: File:

ამას ვაპირებთ და დღეს უმეტესობის გაკეთებას ვგეგმავთ. /cc @vaxop (https://github.com/vaxop)
p.s. თუ რამე ზედმეტია ან აკლია გვითხარი ...

— Reply to this email directly or view it on GitHub (https://github.com/otarza/serv-cst/issues/17#issuecomment-17058127).

demonno commented 11 years ago

2 ჯერ გამოძახება აღარ ხდება .. @vaxop გამოდი კონტაქტზე :baby:

otarza commented 11 years ago

საღამოს გამოვალ არ ვარ სახლშიო ვახომ.

2013/4/26 Demur Nodia notifications@github.com

2 ჯერ გამოძახება აღარ ხდება .. @vaxop https://github.com/vaxop გამოდი კონტაქტზე [image: :baby:]

— Reply to this email directly or view it on GitHubhttps://github.com/otarza/serv-cst/issues/17#issuecomment-17063910 .

demonno commented 11 years ago

@otarza ს დახმარებით ეს თიქეთიც მივიდა ბოლომდე , დარჩნილი ბაგებიც გავასწორე ...