short 0.4.0 → 0.4.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.
data/bin/short CHANGED
@@ -27,14 +27,23 @@ def start_web
27
27
  end
28
28
 
29
29
  def shorten(url)
30
- puts Shortener.shorten(url).short_url
30
+ begin
31
+ puts Shortener.shorten(url).short_url
32
+ rescue Shortener::NetworkException => boom
33
+ puts boom.message
34
+ usage
35
+ end
31
36
  end
32
37
 
33
38
  def fetch(url)
34
39
  if url =~ /http:/
35
40
  url = url[-6..-1]
36
41
  end
37
- fetched = Shortener.fetch(url)
42
+ begin
43
+ fetched = Shortener.fetch(url)
44
+ rescue Shortener::NetworkException => boom
45
+ puts boom.message
46
+ end
38
47
  unless fetched['success'] == false
39
48
  puts <<-EOF
40
49
  short => #{fetched['shortened']}
@@ -51,12 +60,20 @@ def fetch(url)
51
60
  end
52
61
 
53
62
  def delete(short)
54
- del = Shortener.delete(short)
63
+ begin
64
+ del = Shortener.delete(short)
65
+ rescue Shortener::NetworkException => boom
66
+ puts boom.message
67
+ end
55
68
  puts "#{short} deleted" if del['success']
56
69
  end
57
70
 
58
71
  def show_index
59
- index = Shortener.index
72
+ begin
73
+ index = Shortener.index
74
+ rescue Shortener::NetworkException => boom
75
+ puts boom.message
76
+ end
60
77
  short_summary = index.map do |v|
61
78
  url = v['url'].length > 38 ? "#{v['url'][0..25]}...#{v['url'][-10..-1]}" : "#{v['url']}"
62
79
  "#{v['shortened']} : #{url} #{v['type'].nil? ? '' : ('type: ' + v['type'])}"
@@ -67,8 +67,9 @@ class Shortener
67
67
 
68
68
  def set_or_fetch_url(params)
69
69
  bad! 'Missing url.' unless url = params['url']
70
+ bad! 'Bad URL' unless params['url'] =~ /(^http|^www)/
70
71
  url = "http://#{url}" unless /^http/i =~ url
71
- bad! 'Malformed url.' unless (url = URI.parse(url)) && /^http/ =~ url.scheme
72
+ bad! 'Bad URL' unless (url = URI.parse(url)) && /^http/ =~ url.scheme
72
73
 
73
74
  %w(max-clicks expire desired-short allow-override).each do |k|
74
75
  params[k] = false if params[k].nil? || params[k].empty?
@@ -90,7 +91,7 @@ class Shortener
90
91
  hash_key = "data:#{sha}:#{key}"
91
92
  url = "https://s3.amazonaws.com/#{$conf.s3_bucket}/#{$conf.s3_key_prefix}/#{fname}"
92
93
  ext = File.extname(fname)[1..-1]
93
- data = {'url' => url, 's3' => true, 'shortened' => key,
94
+ data = {'url' => url, 's3' => true, 'shortened' => key,
94
95
  'extension' => ext, 'set-count' => 1}
95
96
  data = params.merge(data)
96
97
 
@@ -47,12 +47,14 @@ class Shortener
47
47
  # build a request based on configurations
48
48
  def request(type, end_point, conf = nil, args = nil)
49
49
  config = conf || Shortener::Configuration.current
50
- case type
50
+ response = case type
51
51
  when :post
52
52
  Net::HTTP.post_form(config.uri_for(end_point), args)
53
53
  when :get
54
54
  Net::HTTP.get_response(config.uri_for(end_point, args))
55
55
  end
56
+ raise NetworkException.new(response.body) if response.is_a?(Net::HTTPPreconditionFailed)
57
+ response
56
58
  end
57
59
 
58
60
  end # => ClassMethods
@@ -1,6 +1,6 @@
1
1
 
2
2
  class Shortener
3
3
 
4
- VERSION = '0.4.0'
4
+ VERSION = '0.4.1'
5
5
 
6
6
  end
data/lib/shortener.rb CHANGED
@@ -9,4 +9,6 @@ require File.join(dir, 'shortener', 'short')
9
9
 
10
10
  class Shortener
11
11
  class << self; include Shortener::Short::ClassMethods; end
12
+
13
+ class NetworkException < RuntimeError;end
12
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: short
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70301329586160 !ruby/object:Gem::Requirement
16
+ requirement: &70230588057420 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70301329586160
24
+ version_requirements: *70230588057420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redis-namespace
27
- requirement: &70301329585240 !ruby/object:Gem::Requirement
27
+ requirement: &70230592657600 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70301329585240
35
+ version_requirements: *70230592657600
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: haml
38
- requirement: &70301329583820 !ruby/object:Gem::Requirement
38
+ requirement: &70230592656820 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70301329583820
46
+ version_requirements: *70230592656820
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: turn
49
- requirement: &70301329582280 !ruby/object:Gem::Requirement
49
+ requirement: &70230592654100 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70301329582280
57
+ version_requirements: *70230592654100
58
58
  description: A (hopefully) easy and handy deployable APIable way to shorten links.
59
59
  email:
60
60
  - jake@jakewilkins.com