Ruby ile FTP ve HTTP Ä°ÅŸlemleri

Merhabalar,

Bugün yazımızda Ruby’nin aÄŸ(network) ve genel aÄŸ(web) kütüphanelerini inceleyeceÄŸiz. Bu kütüphaneleri, mail göndermek, ftp ile baÅŸka bir makinaya dosya kaydetmek, herhangi bir baÅŸka web sitesininden bir sayfayı okumak veya düşük seviyeli (socket bazlı) iÅŸlemler yapmak için kullanabiliriz.

Bu yazımda, tabii sizlerde izin verirseniz, düşük seviyeli baÄŸlantılar (Socket, BasicSocket, IPSocket, TCPSocket, SOCKSSocket.. vb.) yerine, yüksek seviyeli baÄŸlantılardan HTTP ve FTP’yi incelemek istiyorum. Özellikle bu tür yüksek seviyeli baÄŸlantılar için Ruby’nin gerçekten güçlü silahları vardır, bu silahlar ile pek çok uygulamayı zorlanmaksızın yazabilir, pek çok problemini kolayca çözebilirsiniz.

Öncelikle FTP sınıfını inceleyelim;
Bir örnek yapalım; Herhangi FTP sunucusunda yer alan belirli bir dosyaları indirelim, değişiklik yapalım ve daha sonra geri gönderelim.
[ruby]
require ‘net/ftp’
include Net

srv = nil
file = nil
begin
srv = FTP.open(“10.0.0.4”, “ruby”, “ruby”) # BaÄŸlantı kuruluyor.
puts srv.welcome # Hoşgeldin mesajı yazdırılır.
srv.chdir(‘\ftproot’) # çalışılacak dizin belirtilir.
puts srv.list # Dizin içerisinde yer alan dosyalar tanımlanır.
# dosya.txt dosyası indirilir.
srv.gettextfile(“dosya.txt”, “d:\\All download\\dosya.txt”)
# dosya.txt açılır.
file = File.open(“d:\\All download\\dosya.txt”, “r+”)
file << "Bizi belli edecek herhangi bir isim veya buna benzer birşey." file.close # FTP sunucusuna geri gönderilir. srv.puttextfile("d:\\All download\\dosya.txt", "dosya.txt") puts "İşlem tamamlandı." ensure srv.close if srv file.close if file && file.closed? == false end [/ruby] HTTP konusuna gelince; Günümüzde 'spider' olarak adlandırılan sayfalarda yer alan linkleri takip eden programları duymuşsunuzdur, işte bu tarz uygulamalarda kullanılan bir yöntem vardır. Safyalar üzerinde yer alan 'a' tagı ile verilmiş linkleri bulalım. [ruby]require 'net/http' # esiyo.net'e 80 no'lu porttan bağlantı açılır. esiyo = Net::HTTP.new('esiyo.net', 80) # '/' yani root'ta yer alan sayfa istenir. resp, data = esiyo.get('/', nil ) if resp.message == "OK" # sayfanın istenmesinde problem yok ise, # Tüm linkleri listeleyelim..! # Regular Expression kullanılarak 'src' bilgileri elde edilir. data.scan(/

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir