mush 0.1.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "httparty", "0.6.1"
4
+
5
+ group :development do
6
+ gem "mocha", "0.9.8"
7
+ gem "shoulda", "2.11.3"
8
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,18 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ crack (0.1.8)
5
+ httparty (0.6.1)
6
+ crack (= 0.1.8)
7
+ mocha (0.9.8)
8
+ rake
9
+ rake (0.8.7)
10
+ shoulda (2.11.3)
11
+
12
+ PLATFORMS
13
+ ruby
14
+
15
+ DEPENDENCIES
16
+ httparty (= 0.6.1)
17
+ mocha (= 0.9.8)
18
+ shoulda (= 2.11.3)
data/README.md ADDED
@@ -0,0 +1,100 @@
1
+ MUSh
2
+ ====
3
+
4
+ A multiple service URL shortener gem with command-line utilities
5
+
6
+ NOTE: This gem only supports url shortening, nothing else, no stats, no info, no expand and it won't support any of them.
7
+
8
+ Installation
9
+ ------------
10
+
11
+ MUSh depends on [HTTParty](https://github.com/jnunemaker/httparty "HTTParty")
12
+
13
+ sudo gem install httparty
14
+ sudo gem install mush
15
+
16
+ or
17
+
18
+ sudo gem install mush --include-dependencies
19
+
20
+ Supported services
21
+ ------------------
22
+
23
+ * bit.ly
24
+ * is.gd
25
+
26
+ and thanks to [Noel Dellofano](https://github.com/pinkvelociraptor]) from [ZenDesk](http://www.zendesk.com/)
27
+
28
+ * ow.ly
29
+ * custom service
30
+
31
+ Usage as a command line utility
32
+ -------------------------------
33
+
34
+ $ bitly -l login -k apikey -u http://foo.raflabs.com
35
+
36
+ $ isgd http://foo.raflabs.com
37
+
38
+ $ owly -k apikey -u foo.raflabs.com
39
+
40
+ $ shorten -s "http://chop.ws/index.php?api=1&return_url_text=1&longUrl={{url}}" -u foo.raflabs.com
41
+
42
+ **NOTE:** _The 'shorten' command uses <code>Mush::Service::Custom</code> and currently it only works with services that accept 'get' as method (not 'post') and with services that return only the shortened url not a full html page_
43
+
44
+ Sorry, but at this moment, if you want to use the <code>bitly</code> or <code>owly</code> command line without apikey or login do this:
45
+
46
+ Add the following alias to your ~/.bash_profile or ~/.bashrc
47
+
48
+ alias bitly='bitly -l your_login -k your_apikey'
49
+
50
+ alias owly='owly -k your_apikey'
51
+
52
+ then use it this way (you won't need the -u)
53
+
54
+ $ bitly http://google.com
55
+
56
+ $ owly http://google.com
57
+
58
+ Usage as a Gem
59
+ --------------
60
+
61
+ require 'rubygems' #in a Rails project you won't need this line
62
+ require 'mush'
63
+
64
+ bitly = Mush::Services::Bitly.new
65
+
66
+ bitly.login = "login"
67
+ bitly.apikey = "apikey"
68
+
69
+ bitly.shorten "http://foo.raflabs.com"
70
+
71
+ isgd = Mush::Services::IsGd.new
72
+ isgd.shorten "http://foo.raflabs.com"
73
+
74
+ custom = Mush::Services::Custom.new
75
+ custom.set_service = "http://chop.ws/index.php?api=1&return_url_text=1&longUrl={{url}}"
76
+ custom.shorten 'foo.raflabs.com'
77
+
78
+ ToDo
79
+ ----
80
+
81
+ * Use bitly commmand without -l and -k, save config in home folder (.mush file)
82
+ * Make shorten method to accept multiple URLs
83
+ * add j.mp and maybe other services
84
+ * Cache
85
+
86
+ Note on Patches/Pull Requests
87
+ -----------------------------
88
+
89
+ * Fork the project.
90
+ * Make your feature/service addition or bug fix.
91
+ * Add tests for it. This is important so I don't break it in a
92
+ future version unintentionally.
93
+ * Commit, do not mess with rakefile, version, or history.
94
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
95
+ * Send me a pull request. Bonus points for topic branches.
96
+
97
+ Copyright
98
+ ---------
99
+
100
+ Copyright (c) 2011 Rafael Magana. See LICENSE for details.
data/Rakefile CHANGED
@@ -6,8 +6,8 @@ begin
6
6
  require 'jeweler'
7
7
  Jeweler::Tasks.new do |gem|
8
8
  gem.name = "mush"
9
- gem.summary = %Q{A multiple service URL shortener gem with command-line utility}
10
- gem.description = %Q{A gem to shorten URLs using different services, it has one command-line utility for each supported service.}
9
+ gem.summary = %Q{A multiple service URL shortener gem with command-line utilities}
10
+ gem.description = %Q{A gem to shorten URLs using different services, it has one command-line utility for each supported service and one for custom shorteners called 'shorten'.}
11
11
  gem.email = "raf.magana@gmail.com"
12
12
  gem.homepage = "http://github.com/rafmagana/mush"
13
13
  gem.authors = ["Rafael Magaña"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.1
data/bin/isgd CHANGED
@@ -37,4 +37,4 @@ unless options[:url]
37
37
  abort("You must specify a URL to use the is.gd service")
38
38
  end
39
39
 
40
- puts Mush::Services::IsGd.new.shorten options[:url]
40
+ puts Mush::Services::IsGd.new.shorten options[:url]
data/bin/mush CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
2
  puts "the actual commands are:"
3
- puts "bitly, isgd and unu"
3
+ puts "bitly, isgd, owly and shorten"
data/bin/{unu → owly} RENAMED
@@ -16,9 +16,19 @@ options = {}
16
16
  opts = OptionParser.new do |opts|
17
17
  opts.banner = <<-EOF
18
18
  Usage:
19
- unu url
19
+ owly -k apikey -u url
20
+
21
+ Options:
20
22
  EOF
21
23
 
24
+ opts.on("-kAPIKEY", "--apikey APIKEY", "API Key") do |apikey|
25
+ options[:apikey] = apikey
26
+ end
27
+
28
+ opts.on("-uURL", "--url URL", "The long URL to be shortened") do |url|
29
+ options[:url] = url
30
+ end
31
+
22
32
  opts.on("-v", "--version", "Print the version number and exit") do
23
33
  options[:version] = true
24
34
  end
@@ -32,9 +42,17 @@ end
32
42
 
33
43
  options[:url] = ARGV.first if ARGV.length == 1
34
44
 
35
- # validate
45
+ #validate
46
+ unless options[:apikey]
47
+ abort("You must specify an API Key to access the Ow.ly API")
48
+ end
49
+
36
50
  unless options[:url]
37
- abort("You must specify a URL to use the u.nu service")
51
+ abort("Please provide a valid URL, including http://")
38
52
  end
39
53
 
40
- puts Mush::Services::Unu.new.shorten options[:url]
54
+ owly = Mush::Services::Owly.new
55
+
56
+ owly.apikey = options[:apikey]
57
+
58
+ puts owly.shorten options[:url]
data/bin/shorten ADDED
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDOUT.sync = true
4
+
5
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
6
+
7
+ require 'rubygems'
8
+ require 'optparse'
9
+ require 'mush'
10
+
11
+ ORIGINAL_ARGV = ARGV.dup
12
+
13
+ #the defaults
14
+ options = {}
15
+
16
+ opts = OptionParser.new do |opts|
17
+ opts.banner = <<-EOF
18
+ Usage:
19
+ custom -s service -u url
20
+ EOF
21
+
22
+ opts.on("-v", "--version", "Print the version number and exit") do
23
+ options[:version] = true
24
+ end
25
+ opts.on("-sService", "--service Service", "The url of the custom shortener to use. ie. http://short.en?url={{url}}") do |service|
26
+ options[:service] = service
27
+ end
28
+ opts.on("-uURL", "--url URL", "The long URL to be shortened") do |url|
29
+ options[:url] = url
30
+ end
31
+ end
32
+
33
+ opts.parse!
34
+
35
+ if options[:version]
36
+ abort("Version " + Mush.version)
37
+ end
38
+
39
+ # validate
40
+ unless options[:service]
41
+ abort("You must specify a shortener URL of form http://short.en?url={{url}} to use the custom service")
42
+ end
43
+ unless options[:url]
44
+ abort("You must specify a URL to use the custom service")
45
+ end
46
+
47
+ custom = Mush::Services::Custom.new
48
+ custom.set_service options[:service]
49
+ puts custom.shorten options[:url]
@@ -0,0 +1,26 @@
1
+ module Mush
2
+
3
+ module Services
4
+
5
+ # General class to accept a custom shortener
6
+ # e.g. http://short.en?url={{url}}&api_key=982AAJHKDLFDF
7
+ class Custom < Service
8
+
9
+ def set_service(service_url)
10
+ @service = service_url
11
+ end
12
+
13
+ def shorten(url)
14
+ raise InvalidURI.new("Please provide a valid URI") if url.empty?
15
+
16
+ options = {}
17
+ path = @service.gsub(/\{\{url\}\}/, url)
18
+ get(path,options).body.chomp
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
@@ -0,0 +1,38 @@
1
+ module Mush
2
+
3
+ module Services
4
+
5
+ require 'json'
6
+ class Owly < AuthenticatedService
7
+
8
+ base_uri 'http://ow.ly/api/1.1/url'
9
+ format :json
10
+
11
+ #Ow.ly api bug, response is in json, but response type is html so force parse
12
+ def self.response_parse
13
+ Proc.new do |body, format|
14
+ JSON.parse(body)
15
+ end
16
+ end
17
+ parser response_parse
18
+
19
+ def shorten(url)
20
+ invalid_uri_msg = "Please provide a valid URI, including http://"
21
+ invalid_auth_msg = "Invalid Authorization Data, please provide apikey"
22
+
23
+ raise InvalidURI.new invalid_uri_msg if url.empty?
24
+ raise InvalidAuthorizationData.new(invalid_auth_msg) if apikey.empty?
25
+
26
+ options = {:format => 'json'}
27
+ options[:query] = {:apiKey => self.apikey, :longUrl => url}
28
+
29
+ response = get('/shorten', options)
30
+
31
+ response.code == 200 ? response["results"]["shortUrl"] : response["error"]
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
data/mush.gemspec CHANGED
@@ -1,52 +1,54 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mush}
8
- s.version = "0.1.2"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Rafael Maga\303\261a"]
12
- s.date = %q{2010-08-27}
13
- s.description = %q{A gem to shorten URLs using different services, it has one command-line utility for each supported service.}
12
+ s.date = %q{2011-01-17}
13
+ s.description = %q{A gem to shorten URLs using different services, it has one command-line utility for each supported service and one for custom shorteners called 'shorten'.}
14
14
  s.email = %q{raf.magana@gmail.com}
15
- s.executables = ["bitly", "isgd", "mush", "unu"]
15
+ s.executables = ["isgd", "mush", "bitly", "shorten", "owly"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE",
18
- "README.rdoc"
18
+ "README.md"
19
19
  ]
20
20
  s.files = [
21
21
  ".document",
22
- ".gitignore",
23
- "LICENSE",
24
- "README.rdoc",
25
- "Rakefile",
26
- "VERSION",
27
- "bin/bitly",
28
- "bin/isgd",
29
- "bin/mush",
30
- "bin/unu",
31
- "lib/mush.rb",
32
- "lib/mush/authenticated_service.rb",
33
- "lib/mush/errors.rb",
34
- "lib/mush/service.rb",
35
- "lib/mush/services/bitly.rb",
36
- "lib/mush/services/isgd.rb",
37
- "lib/mush/services/unu.rb",
38
- "mush.gemspec",
39
- "test/helper.rb",
40
- "test/test_mush.rb"
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE",
25
+ "README.md",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/bitly",
29
+ "bin/isgd",
30
+ "bin/mush",
31
+ "bin/owly",
32
+ "bin/shorten",
33
+ "lib/mush.rb",
34
+ "lib/mush/authenticated_service.rb",
35
+ "lib/mush/errors.rb",
36
+ "lib/mush/service.rb",
37
+ "lib/mush/services/bitly.rb",
38
+ "lib/mush/services/custom.rb",
39
+ "lib/mush/services/isgd.rb",
40
+ "lib/mush/services/owly.rb",
41
+ "mush.gemspec",
42
+ "test/helper.rb",
43
+ "test/test_mush.rb"
41
44
  ]
42
45
  s.homepage = %q{http://github.com/rafmagana/mush}
43
- s.rdoc_options = ["--charset=UTF-8"]
44
46
  s.require_paths = ["lib"]
45
47
  s.rubygems_version = %q{1.3.7}
46
- s.summary = %q{A multiple service URL shortener gem with command-line utility}
48
+ s.summary = %q{A multiple service URL shortener gem with command-line utilities}
47
49
  s.test_files = [
48
50
  "test/helper.rb",
49
- "test/test_mush.rb"
51
+ "test/test_mush.rb"
50
52
  ]
51
53
 
52
54
  if s.respond_to? :specification_version then
@@ -54,15 +56,24 @@ Gem::Specification.new do |s|
54
56
  s.specification_version = 3
55
57
 
56
58
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
+ s.add_runtime_dependency(%q<httparty>, ["= 0.6.1"])
60
+ s.add_development_dependency(%q<mocha>, ["= 0.9.8"])
61
+ s.add_development_dependency(%q<shoulda>, ["= 2.11.3"])
57
62
  s.add_development_dependency(%q<shoulda>, [">= 2.11.3"])
58
63
  s.add_development_dependency(%q<mocha>, [">= 0.9.8"])
59
64
  s.add_runtime_dependency(%q<httparty>, [">= 0.6.1"])
60
65
  else
66
+ s.add_dependency(%q<httparty>, ["= 0.6.1"])
67
+ s.add_dependency(%q<mocha>, ["= 0.9.8"])
68
+ s.add_dependency(%q<shoulda>, ["= 2.11.3"])
61
69
  s.add_dependency(%q<shoulda>, [">= 2.11.3"])
62
70
  s.add_dependency(%q<mocha>, [">= 0.9.8"])
63
71
  s.add_dependency(%q<httparty>, [">= 0.6.1"])
64
72
  end
65
73
  else
74
+ s.add_dependency(%q<httparty>, ["= 0.6.1"])
75
+ s.add_dependency(%q<mocha>, ["= 0.9.8"])
76
+ s.add_dependency(%q<shoulda>, ["= 2.11.3"])
66
77
  s.add_dependency(%q<shoulda>, [">= 2.11.3"])
67
78
  s.add_dependency(%q<mocha>, [">= 0.9.8"])
68
79
  s.add_dependency(%q<httparty>, [">= 0.6.1"])
data/test/test_mush.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestMush < Test::Unit::TestCase
4
-
4
+
5
5
  context "Mush::Service class" do
6
6
  should "include HTTParty module" do
7
7
  assert Mush::Service.include? HTTParty
@@ -25,7 +25,7 @@ class TestMush < Test::Unit::TestCase
25
25
  context "All Services" do
26
26
  setup do
27
27
  s = Mush::Services
28
- @services = [s::IsGd, s::Bitly, s::Unu]
28
+ @services = [s::IsGd, s::Bitly]
29
29
  end
30
30
 
31
31
  should "be subclasses of Mush::Service" do
@@ -48,13 +48,14 @@ class TestMush < Test::Unit::TestCase
48
48
  setup do
49
49
  @long_url = "http://www.a_very_long_url.com"
50
50
  @shortened_url = "http://is.gd/test"
51
- @httparty_response = stub('HTTParty::Reponse', :body => @shortened_url)
51
+ @httparty_response = stub('HTTParty::Response', :body => @shortened_url)
52
52
  end
53
53
 
54
54
  context "not authorizable" do
55
55
 
56
56
  setup do
57
- @httparty_response = stub('HTTParty::Reponse', :body => @shortened_url)
57
+ @httparty_response = stub('HTTParty::Response', :body => @shortened_url)
58
+ @custom_shortener = 'http://is.gd/api.php?longurl={{url}}'
58
59
  end
59
60
 
60
61
  context "IsGd" do
@@ -67,21 +68,21 @@ class TestMush < Test::Unit::TestCase
67
68
 
68
69
  assert_equal @shortened_url, isgd_result
69
70
  end
70
-
71
71
  end
72
-
73
- context "Unu" do
72
+
73
+ context "Custom" do
74
74
  should "return a shortened url" do
75
- Mush::Services::Unu.any_instance.stubs(:get).with(instance_of(String), instance_of(Hash)).returns(@httparty_response)
76
-
77
- unu = Mush::Services::Unu.new
78
- unu_result = unu.shorten(@long_url)
79
-
80
- assert_equal @shortened_url, unu_result
75
+ Mush::Services::Custom.any_instance.stubs(:get).with(instance_of(String), instance_of(Hash)).returns(@httparty_response)
76
+
77
+ custom = Mush::Services::Custom.new
78
+ custom.set_service @custom_shortener
79
+ custom_result = custom.shorten(@long_url)
80
+
81
+ assert_equal @shortened_url, custom_result
81
82
  end
82
83
  end
83
84
  end
84
-
85
+
85
86
  context "authorizable" do
86
87
  setup do
87
88
  @response = @shortened_url
@@ -108,6 +109,26 @@ class TestMush < Test::Unit::TestCase
108
109
  assert_equal @shortened_url, bitly.shorten(@long_url)
109
110
  end
110
111
  end
112
+
113
+ context "Owly" do
114
+ should "has authentication credentials to return a shortened url" do
115
+
116
+ httparty_response = stub('HTTParty::Response', :[] => @shortened_url)
117
+ owly = Mush::Services::Owly.new
118
+
119
+ assert_raise Mush::InvalidAuthorizationData do
120
+ owly.shorten(@long_url)
121
+ end
122
+
123
+ owly.apikey = "apikey"
124
+
125
+ assert_nothing_raised do
126
+ owly.shorten(@long_url)
127
+ end
128
+
129
+ Mush::Services::Owly.any_instance.stubs(:get).with(instance_of(String), instance_of(Hash)).returns(httparty_response)
130
+ end
131
+ end
111
132
  end
112
133
  end
113
134
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mush
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
8
  - 2
10
- version: 0.1.2
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Rafael Maga\xC3\xB1a"
@@ -15,13 +15,60 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-27 00:00:00 -05:00
18
+ date: 2011-01-17 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
+ prerelease: false
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - "="
27
+ - !ruby/object:Gem::Version
28
+ hash: 5
29
+ segments:
30
+ - 0
31
+ - 6
32
+ - 1
33
+ version: 0.6.1
34
+ name: httparty
35
+ requirement: *id001
36
+ type: :runtime
37
+ - !ruby/object:Gem::Dependency
38
+ prerelease: false
39
+ version_requirements: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - "="
43
+ - !ruby/object:Gem::Version
44
+ hash: 43
45
+ segments:
46
+ - 0
47
+ - 9
48
+ - 8
49
+ version: 0.9.8
50
+ name: mocha
51
+ requirement: *id002
52
+ type: :development
53
+ - !ruby/object:Gem::Dependency
54
+ prerelease: false
55
+ version_requirements: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - "="
59
+ - !ruby/object:Gem::Version
60
+ hash: 37
61
+ segments:
62
+ - 2
63
+ - 11
64
+ - 3
65
+ version: 2.11.3
22
66
  name: shoulda
67
+ requirement: *id003
68
+ type: :development
69
+ - !ruby/object:Gem::Dependency
23
70
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
71
+ version_requirements: &id004 !ruby/object:Gem::Requirement
25
72
  none: false
26
73
  requirements:
27
74
  - - ">="
@@ -32,12 +79,12 @@ dependencies:
32
79
  - 11
33
80
  - 3
34
81
  version: 2.11.3
82
+ name: shoulda
83
+ requirement: *id004
35
84
  type: :development
36
- version_requirements: *id001
37
85
  - !ruby/object:Gem::Dependency
38
- name: mocha
39
86
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
87
+ version_requirements: &id005 !ruby/object:Gem::Requirement
41
88
  none: false
42
89
  requirements:
43
90
  - - ">="
@@ -48,12 +95,12 @@ dependencies:
48
95
  - 9
49
96
  - 8
50
97
  version: 0.9.8
98
+ name: mocha
99
+ requirement: *id005
51
100
  type: :development
52
- version_requirements: *id002
53
101
  - !ruby/object:Gem::Dependency
54
- name: httparty
55
102
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
103
+ version_requirements: &id006 !ruby/object:Gem::Requirement
57
104
  none: false
58
105
  requirements:
59
106
  - - ">="
@@ -64,38 +111,43 @@ dependencies:
64
111
  - 6
65
112
  - 1
66
113
  version: 0.6.1
114
+ name: httparty
115
+ requirement: *id006
67
116
  type: :runtime
68
- version_requirements: *id003
69
- description: A gem to shorten URLs using different services, it has one command-line utility for each supported service.
117
+ description: A gem to shorten URLs using different services, it has one command-line utility for each supported service and one for custom shorteners called 'shorten'.
70
118
  email: raf.magana@gmail.com
71
119
  executables:
72
- - bitly
73
120
  - isgd
74
121
  - mush
75
- - unu
122
+ - bitly
123
+ - shorten
124
+ - owly
76
125
  extensions: []
77
126
 
78
127
  extra_rdoc_files:
79
128
  - LICENSE
80
- - README.rdoc
129
+ - README.md
81
130
  files:
82
131
  - .document
83
- - .gitignore
132
+ - Gemfile
133
+ - Gemfile.lock
84
134
  - LICENSE
85
- - README.rdoc
135
+ - README.md
86
136
  - Rakefile
87
137
  - VERSION
88
138
  - bin/bitly
89
139
  - bin/isgd
90
140
  - bin/mush
91
- - bin/unu
141
+ - bin/owly
142
+ - bin/shorten
92
143
  - lib/mush.rb
93
144
  - lib/mush/authenticated_service.rb
94
145
  - lib/mush/errors.rb
95
146
  - lib/mush/service.rb
96
147
  - lib/mush/services/bitly.rb
148
+ - lib/mush/services/custom.rb
97
149
  - lib/mush/services/isgd.rb
98
- - lib/mush/services/unu.rb
150
+ - lib/mush/services/owly.rb
99
151
  - mush.gemspec
100
152
  - test/helper.rb
101
153
  - test/test_mush.rb
@@ -104,8 +156,8 @@ homepage: http://github.com/rafmagana/mush
104
156
  licenses: []
105
157
 
106
158
  post_install_message:
107
- rdoc_options:
108
- - --charset=UTF-8
159
+ rdoc_options: []
160
+
109
161
  require_paths:
110
162
  - lib
111
163
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -132,7 +184,7 @@ rubyforge_project:
132
184
  rubygems_version: 1.3.7
133
185
  signing_key:
134
186
  specification_version: 3
135
- summary: A multiple service URL shortener gem with command-line utility
187
+ summary: A multiple service URL shortener gem with command-line utilities
136
188
  test_files:
137
189
  - test/helper.rb
138
190
  - test/test_mush.rb
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
data/README.rdoc DELETED
@@ -1,74 +0,0 @@
1
- = MUSh
2
-
3
- A multiple service URL shortener gem with command-line utilities
4
-
5
- NOTE: This gem only supports url shortening, nothing else, no stats, no info, no expand and it won't support any of them.
6
-
7
- == Installation
8
-
9
- MUSh depends on HTTParty
10
-
11
- sudo gem install httparty
12
- sudo gem install mush
13
-
14
- == Supported services
15
-
16
- * bit.ly
17
- * is.gd
18
- * u.nu
19
-
20
- == Usage as a command line utility
21
-
22
- $ bitly -l login -l apikey -u http://foo.raflabs.com
23
-
24
- $ isgd http://foo.raflabs.com
25
-
26
- $ unu foo.raflabs.com
27
-
28
- Sorry, but at this moment, if you want to use the bitly command line without -l and -k do this:
29
-
30
- Add the following alias to your ~/.bash_profile or ~/.bashrc
31
-
32
- alias bitly='bitly -l your_login -k your_apikey'
33
-
34
- then use it this way (you won't need the -u)
35
-
36
- $ bitly http://google.com
37
-
38
- == Usage as a Gem
39
-
40
- require 'mush'
41
-
42
- bitly = Mush::Services::Bitly.new
43
-
44
- bitly.login = "login"
45
- bitly.apikey = "apikey"
46
-
47
- bitly.shorten "http://foo.raflabs.com"
48
-
49
- isgd = Mush::Services::IsGd.new
50
- isgd.shorten "http://foo.raflabs.com"
51
-
52
- unu = Mush::Services:Unu.new
53
- unu.shorten "http://foo.raflabs.com"
54
-
55
- == ToDo
56
-
57
- * Use bitly commmand without -l and -k, save config in home folder (.mush file)
58
- * Make shorten method to accept multiple URLs
59
- * add j.mp and maybe other services
60
- * Cache
61
-
62
- == Note on Patches/Pull Requests
63
-
64
- * Fork the project.
65
- * Make your feature/service addition or bug fix.
66
- * Add tests for it. This is important so I don't break it in a
67
- future version unintentionally.
68
- * Commit, do not mess with rakefile, version, or history.
69
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
70
- * Send me a pull request. Bonus points for topic branches.
71
-
72
- == Copyright
73
-
74
- Copyright (c) 2010 Rafael Magana. See LICENSE for details.
@@ -1,20 +0,0 @@
1
- module Mush
2
-
3
- module Services
4
-
5
- class Unu < Service
6
- base_uri 'http://u.nu/'
7
-
8
- def shorten(url)
9
- raise InvalidURI.new("Please provide a valid URI") if url.empty?
10
-
11
- options = {}
12
- options[:query] = {:url => url}
13
- get('/unu-api-simple', options).body.chomp
14
- end
15
-
16
- end
17
-
18
- end
19
-
20
- end