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 +21 -4
- data/lib/shortener/server.rb +3 -2
- data/lib/shortener/short.rb +3 -1
- data/lib/shortener/version.rb +1 -1
- data/lib/shortener.rb +2 -0
- metadata +9 -9
data/bin/short
CHANGED
@@ -27,14 +27,23 @@ def start_web
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def shorten(url)
|
30
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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'])}"
|
data/lib/shortener/server.rb
CHANGED
@@ -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! '
|
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
|
|
data/lib/shortener/short.rb
CHANGED
@@ -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
|
data/lib/shortener/version.rb
CHANGED
data/lib/shortener.rb
CHANGED
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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *70230588057420
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: redis-namespace
|
27
|
-
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: *
|
35
|
+
version_requirements: *70230592657600
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: haml
|
38
|
-
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: *
|
46
|
+
version_requirements: *70230592656820
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: turn
|
49
|
-
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: *
|
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
|