O ile przy blipie problemów nie było – serwis jest również napisany w Railsach, więc cała obsługa sprowadzała się do wykorzystania biblioteki Active Resource. W przypadku flakera było troszkę trudniej… ale na szczęście Ruby radzi sobie ze wszystkim
Jak czytamy w dokumentacji:
curl -u login:hasło -d 'text=test&link=http://blog.flaker.pl' http://api.flaker.pl/api/type:submit
Pierwszy “genialny” pomysł zakładał wykorzystanie curla, poprzez zrobienia czegoś w rodzaju:
command = "curl -u login:hasło -d 'text=#{tekst}&link=#{link}' http://api.flaker.pl/api/type:submit
eval command
Pomysł przestał być genialny, po ok 3 sekundach zastanawiania się nad nim ![]()
Ostatecznie wykorzystałem model, nie dziedziczący jednak po żadnym innym, o następującym kodzie:
class Flaker
require "net/http"
require 'uri'
def self.flac(text, link)
url = URI.parse("http://api.flaker.pl/api/type:submit")
req = Net::HTTP::Post.new(url.path)
req.basic_auth 'login', 'haslo'
req.set_form_data({'text'=>text, 'link'=>link}, '&')
res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
end
end
Status na flakera wrzucamy używając linijki:
Flaker.flac('text', 'link')
Czyli bez praktycznie żadnej magii, wysłanie żądania post na zadany adres, z odpowiednimi parametrami. I działa świetnie
Oczywiście można by narzekać, że tylko wysyłanie, że nie da się odczytać statusów etc. Ale cóż – miał wysyłać status? Wysyła
Zgodnie z zasadą YAGNI (You Ain’t Gonna Need It) takie rozwiązanie jest jak najbardziej wystarczające.
Komentarze