shortservice 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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