Last active
April 5, 2019 17:33
-
-
Save SirmaXX/1dc97a086c11eaa3796d3e6d674df3d7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
//kullandığım kütüphaneler | |
import ( | |
"fmt" | |
"io" | |
"net/http" | |
"os" | |
"strings" | |
) | |
//değişkenler | |
var ( | |
fileInfo *os.FileInfo | |
err error | |
) | |
//gelen inputu istediğim şekilde ayırmak için ufak bir fonksiyon | |
func ChunkString(s string, chunkSize int) []string { | |
var chunks []string | |
runes := []rune(s)n | |
if len(runes) == 0 { | |
return []string{s} | |
} | |
for i := 0; i < len(runes); i += chunkSize { | |
nn := i + chunkSize | |
if nn > len(runes) { | |
nn = len(runes) | |
} | |
chunks = append(chunks, string(runes[i:nn])) | |
} | |
return chunks | |
} | |
//indirme işlemini yaoan fonksiyon | |
func downloadFromUrl(url string) { | |
//urli tokene dönüştürdüm | |
tokens := strings.Split(url, "/") | |
//dosya adını oluşturdum | |
fileName := tokens[len(tokens)-1] | |
fmt.Println("Downloading", url, "to", fileName) | |
//o filename'e ait dosyayı oluşturdum | |
f := createFile(fileName) | |
//urli çektim | |
response, err := http.Get(url) | |
check(err) | |
defer response.Body.Close() | |
//dosyanın bilgilerini almak için dosyayı açtım | |
file, err := os.Open(fileName) | |
check(err) | |
//dosyanın bilgilerini çekiyorum | |
fInfo, err := file.Stat() | |
check(err) | |
n:=fInfo.Size() | |
//dosya boyut kontrolü | |
if n < 1{ | |
//burada yapacağımı bilmiyorum | |
for i := 1; i<=5; i++ { | |
fmt.Printf("Welcome %d times\n",i) | |
f := createFile(fileName) | |
io.Copy(f,response.Body) | |
} | |
}else{//eğer dosya 1 mbdan küçük ise | |
fmt.Println("ı want to this"); | |
} | |
} //indirme fonksiyonun sonu | |
//hataları kontrollerini yapan fonksiyon | |
func check(e error){ | |
if e != nil { | |
panic(e) | |
} | |
} | |
//dosyaları oluşturan basit fonksiyon | |
func createFile(p string)*os.File { | |
fmt.Println("creating") | |
output, err := os.Create(p) | |
check(err) | |
return output | |
} | |
func main() { | |
if len(os.Args) < 2 { | |
fmt.Fprintf(os.Stderr, "usage: %s url\n", os.Args[0]) | |
os.Exit(1) | |
} | |
var justString string; | |
url := os.Args[1:] | |
justString = strings.Join( url," ") | |
downloadFromUrl(justString) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
//kullandığım kütüphaneler | |
import ( | |
"fmt" | |
"net/http" | |
"os" | |
"strings" | |
"runtime" | |
"strconv" | |
) | |
//değişkenler | |
var ( | |
fileInfo *os.FileInfo | |
err error | |
) | |
var ( | |
client http.Client | |
) | |
var ( | |
acceptRangeHeader = "Accept-Ranges" | |
) | |
func calculateprocess(processnumber int64,length int64,url string){ | |
for j := int64(0) ;j <= processnumber; j++ { | |
if j <processnumber-1{ | |
j++ | |
}else{ | |
} | |
} | |
} | |
//indirme işlemini yaoan fonksiyon | |
func downloadFromUrl(processnumber int64,url string) { | |
tokens := strings.Split(url, "/") | |
fileName := tokens[len(tokens)-1] | |
fmt.Println("Downloading", url, "to", fileName) | |
output :=createFile(fileName) | |
defer output.Close() | |
response:=getHeader(url) | |
contentLength := response.Header.Get("Content-Length") | |
length,_:= strconv.ParseInt(contentLength, 10, 64) | |
calculateprocess(processnumber, length, url) | |
//n, err := io.Copy(output, response.Body) | |
//check(err) | |
//fmt.Println(n, "bytes downloaded.") | |
} //indirme fonksiyonun sonu | |
//hataları kontrollerini yapan fonksiyon | |
func check(e error){ | |
if e != nil { | |
panic(e) | |
} | |
} | |
func getHeader(url string) *http.Response { | |
req, err := http.NewRequest("GET", url, nil) | |
check(err) | |
resp, err := client.Do(req) | |
check(err) | |
return resp | |
} | |
//dosyaları oluşturan basit fonksiyon | |
func createFile(p string)*os.File { | |
fmt.Println("creating") | |
output, err := os.Create(p) | |
check(err) | |
return output | |
} | |
func main() { | |
if len(os.Args) < 2 { | |
fmt.Fprintf(os.Stderr, "usage: %s url\n", os.Args[0]) | |
os.Exit(1) | |
} | |
var justString string; | |
url := os.Args[1:] | |
process := runtime.NumCPU() | |
justString = strings.Join( url," ") | |
downloadFromUrl(int64(process) ,justString) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment