shortservice 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/shortservice.rb +38 -25
  2. metadata +14 -7
@@ -3,36 +3,49 @@ require 'simplehttp'
3
3
  require 'rexml/document'
4
4
 
5
5
  module ShortService
6
- API_URL = "http://shortservice.local/api"
6
+ API_URL = "http://shortservice.lassebunk.dk/api"
7
7
 
8
- Service = Struct.new(:key, :name)
9
-
10
- # Get a list of all shorten services.
11
- def self.services
12
- xml = SimpleHttp.get("#{API_URL}/services?format=xml")
13
- doc = REXML::Document.new(xml)
14
-
15
- services = []
8
+ class Service
9
+ attr_accessor :key, :name
16
10
 
17
- doc.elements.each("services/service") do |service|
18
- key, name = service.elements["key"].text, service.elements["name"].text
19
- services << Service.new(key, name)
11
+ # Get a list of all services
12
+ def self.all
13
+ @@services ||= begin
14
+ xml = SimpleHttp.get("#{API_URL}/services?format=xml")
15
+ doc = REXML::Document.new(xml)
16
+
17
+ services = []
18
+
19
+ doc.elements.each("services/service") do |service|
20
+ key, name = service.elements["key"].text, service.elements["name"].text
21
+ services << Service.new(key, name)
22
+ end
23
+
24
+ services
25
+ end
20
26
  end
21
27
 
22
- services
23
- end
24
-
25
- # Shorten a URL using the service (key) specified.
26
- def self.shorten(url, service = "bitly")
27
- xml = SimpleHttp.get("#{API_URL}/shorten?url=#{CGI::escape(url)}&service=#{service}&format=xml")
28
- doc = REXML::Document.new(xml)
28
+ # Find a service by key, e.g. "bitly"
29
+ def self.find_by_key(key)
30
+ all.find { |s| s.key == key }
31
+ end
29
32
 
30
- result = doc.elements["result"]
33
+ def initialize(key, name)
34
+ self.key, self.name = key, name
35
+ end
31
36
 
32
- if result.elements["status"].text == "ok"
33
- result.elements["url"].text
34
- else
35
- raise result.elements["description"].text
37
+ # Shorten the given URL
38
+ def shorten(url)
39
+ xml = SimpleHttp.get("#{API_URL}/shorten?url=#{CGI::escape(url)}&service=#{key}&format=xml")
40
+ doc = REXML::Document.new(xml)
41
+
42
+ result = doc.elements["result"]
43
+
44
+ if result.elements["status"].text == "ok"
45
+ result.elements["url"].text
46
+ else
47
+ raise result.elements["description"].text
48
+ end
36
49
  end
37
50
  end
38
- end
51
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shortservice
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 23
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 3
9
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
10
11
  platform: ruby
11
12
  authors:
12
13
  - Lasse Bunk
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-06-28 00:00:00 +02:00
18
+ date: 2010-07-18 00:00:00 +02:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: simplehttp
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 29
27
30
  segments:
28
31
  - 0
29
32
  - 1
@@ -31,7 +34,7 @@ dependencies:
31
34
  version: 0.1.3
32
35
  type: :runtime
33
36
  version_requirements: *id001
34
- description: The ShortService gem is a layer for talking to the ShortService.net API.
37
+ description: The ShortService gem is a layer for talking to the ShortService API.
35
38
  email: lassebunk@gmail.com
36
39
  executables: []
37
40
 
@@ -42,7 +45,7 @@ extra_rdoc_files: []
42
45
  files:
43
46
  - lib/shortservice.rb
44
47
  has_rdoc: true
45
- homepage:
48
+ homepage: http://github.com/lassebunk/shortservice
46
49
  licenses: []
47
50
 
48
51
  post_install_message:
@@ -51,25 +54,29 @@ rdoc_options: []
51
54
  require_paths:
52
55
  - lib
53
56
  required_ruby_version: !ruby/object:Gem::Requirement
57
+ none: false
54
58
  requirements:
55
59
  - - ">="
56
60
  - !ruby/object:Gem::Version
61
+ hash: 3
57
62
  segments:
58
63
  - 0
59
64
  version: "0"
60
65
  required_rubygems_version: !ruby/object:Gem::Requirement
66
+ none: false
61
67
  requirements:
62
68
  - - ">="
63
69
  - !ruby/object:Gem::Version
70
+ hash: 3
64
71
  segments:
65
72
  - 0
66
73
  version: "0"
67
74
  requirements: []
68
75
 
69
76
  rubyforge_project:
70
- rubygems_version: 1.3.6
77
+ rubygems_version: 1.3.7
71
78
  signing_key:
72
79
  specification_version: 3
73
- summary: Layer for talking to ShortService.net.
80
+ summary: Layer for talking to the ShortService API.
74
81
  test_files: []
75
82