trim-api 0.0.1 → 0.1

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.
@@ -1,3 +1,8 @@
1
+ === 0.1 / 2009-10-23
2
+
3
+ * Added trim_destination method that returns the destination for a trimmed url
4
+ * Added authentication (currently only required for trim_destination)
5
+
1
6
  === 0.0.1 / 2009-10-18
2
7
 
3
8
  * Initial release
@@ -1,6 +1,5 @@
1
1
  module TrimApi
2
2
 
3
- VERSION = "0.0.1"
4
3
  API_URL = "http://api.tr.im/api/"
5
4
 
6
5
  class TrimError < StandardError
@@ -13,13 +12,18 @@ module TrimApi
13
12
 
14
13
  class Trim
15
14
 
15
+ attr_accessor :username
16
+ attr_accessor :password
17
+
16
18
  def initialize(options = {})
17
19
  @client = HTTPClient.new
20
+ self.username = options[:username] if options[:username]
21
+ self.password = options[:password] if options[:password]
18
22
  end
19
23
 
20
- def trim(original_url)
24
+ def trim(original_url, options = {})
21
25
  raise ArgumentError.new(":url to shorten is required") if original_url.nil?
22
- response = @client.get_content(create_url(original_url))
26
+ response = @client.get_content(create_url("trim_url", :url => original_url))
23
27
  data = JSON.parse(response)
24
28
  unless data["status"]["result"] == "OK"
25
29
  raise TrimError.new(data["status"]["code"],data["status"]["message"])
@@ -28,12 +32,24 @@ module TrimApi
28
32
  end
29
33
  end
30
34
 
35
+ def trim_destination(trimmed_url, options = {})
36
+ raise ArgumentError.new(":trimmed url is required") if trimmed_url.nil?
37
+ raise ArgumentError.new(":username and password are required") if (username.nil? || password.nil?)
38
+ response = @client.get_content(create_url("trim_destination", {:trimpath => trimmed_url, :username => username, :password => password}))
39
+ data = JSON.parse(response)
40
+ unless data["status"]["result"] == "OK"
41
+ raise TrimError.new(data["status"]["code"],data["status"]["message"])
42
+ else
43
+ data["destination"]
44
+ end
45
+ end
46
+
31
47
  private
32
48
 
33
- def create_url(original_url)
34
- base_url = "#{API_URL}trim_url.json?"
35
- url = "url=#{CGI::escape(original_url)}"
36
- base_url + url
49
+ def create_url(method, options = {})
50
+ base_url = "#{API_URL}#{method}.json?"
51
+ options = options.map { |k,v| "%s=%s" % [CGI.escape(k.to_s), CGI.escape(v.to_s)] }.join("&")
52
+ base_url + options
37
53
  end
38
54
 
39
55
  end
@@ -5,5 +5,5 @@ require 'CGI'
5
5
  require 'trim-api/trim-api.rb'
6
6
 
7
7
  module TrimApi
8
- VERSION = '0.0.1'
8
+ VERSION = '0.1'
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trim-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: "0.1"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Fisher
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-18 00:00:00 +01:00
12
+ date: 2009-10-23 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency