Archiwum dla Maj 30th, 2009

Roflcopter i flaker.pl

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.



Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.