corto 0.90.0 → 0.99.0

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 (6) hide show
  1. data/VERSION +1 -1
  2. data/corto.gemspec +144 -0
  3. data/db/corto.db +0 -0
  4. data/lib/corto.rb +28 -10
  5. metadata +6 -13
  6. data/.gitignore +0 -21
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.90.0
1
+ 0.99.0
@@ -0,0 +1,144 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{corto}
8
+ s.version = "0.99.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Paolo Perego"]
12
+ s.date = %q{2011-03-25}
13
+ s.default_executable = %q{corto}
14
+ s.description = %q{CORTO - your url shortner gem
15
+ -----------------------------
16
+
17
+ - Yet another url shortner?
18
+
19
+ corto is a ruby gem that shorten a URL for you and store the result in a SQLite3 database.
20
+ Why the world needs another url shortener? Well, true to be told I don't know the answer and I'm
21
+ pretty sure this code is far away from being revolutionary.
22
+
23
+ However... corto is funniest!
24
+
25
+ - Usage
26
+
27
+ Using corto as standalone utility is straightforward. In case you want to shorten an url you just
28
+ launch the program with the url as parameter.
29
+
30
+ % bin/corto http://www.armoredcode.com
31
+ % corto: http://www.armoredcode.com shrunk as ji5jnu
32
+
33
+ Please note that you've to supply a valid URL, since internally it's parsed and rejected anything but
34
+ HTTP and HTTPS verbs.
35
+
36
+ % bin/corto funnystatementhere
37
+ % corto: it seems funnystatementhere is not a valid url to shrink
38
+
39
+ If you want to deflate a shrunk url, you have just to specify the '-d' flag this way.
40
+
41
+ % bin/corto -d ji5jnu
42
+ % corto: ji5jnu deflated is http://www.armoredcode.com
43
+
44
+ Super easy, isn't it? Now, go ahead and shrink the web!
45
+
46
+ - API
47
+
48
+ A simple corto shortening session start with class initialization, optionally telling which SQLite3
49
+ database to use and then mastering the parameter.
50
+
51
+ require 'corto'
52
+
53
+ ...
54
+ corto = Corto.new # we're now saying the gem we want to use it's internal database stored in db/corto.db
55
+ s = corto.shrink('http://www.armoredcode.com')
56
+
57
+ # s now stores the shrinked url that is already added to database if not present.
58
+ # If you'll pass an invalid url to shrink(), nil will be returned instead
59
+
60
+ Deflating a URL is super easy as well
61
+
62
+ # The deflate process is quite straightforward as well
63
+
64
+ d = corto.deflate(s)
65
+ # d has now the deflated url or nil if that url was not found
66
+
67
+ You can also count how many urls contained into db
68
+
69
+ # If you want to know how many urls you have in your database, just call the count() method.
70
+ puts 'Hey, I have stored ' + corto.count() + ' urls'
71
+
72
+ And finally you can purge your db
73
+
74
+ # Tired of your database and time for a massive clean has come? Let's purge the db.
75
+ corto.purge
76
+
77
+ # corto.count == 0 now
78
+
79
+
80
+ - Note on Patches/Pull Requests
81
+
82
+ * Fork the project.
83
+ * Make your feature addition or bug fix.
84
+ * Add tests for it. This is important so I don’t break it in a future version unintentionally.
85
+ * Commit, do not mess with rakefile, version, or history. (if you want to have your own version,
86
+ that is fine but bump version in a commit by itself I can ignore when I pull)
87
+ * Send me a pull request. Bonus points for topic branches.
88
+
89
+ - Copyright
90
+
91
+ Copyright © 2011 Paolo Perego. See LICENSE for details.}
92
+ s.email = %q{thesp0nge@gmail.com}
93
+ s.executables = ["corto"]
94
+ s.extra_rdoc_files = [
95
+ "LICENSE",
96
+ "README"
97
+ ]
98
+ s.files = [
99
+ ".document",
100
+ "LICENSE",
101
+ "README",
102
+ "Rakefile",
103
+ "VERSION",
104
+ "bin/corto",
105
+ "corto.gemspec",
106
+ "db/corto.db",
107
+ "lib/corto.rb",
108
+ "spec/corto_spec.rb",
109
+ "spec/data/test_db.db",
110
+ "spec/spec.opts",
111
+ "spec/spec_helper.rb"
112
+ ]
113
+ s.homepage = %q{http://github.com/thesp0nge/corto}
114
+ s.require_paths = ["lib"]
115
+ s.rubygems_version = %q{1.3.7}
116
+ s.summary = %q{corto is an url shortenizer gem}
117
+ s.test_files = [
118
+ "spec/corto_spec.rb",
119
+ "spec/spec_helper.rb"
120
+ ]
121
+
122
+ if s.respond_to? :specification_version then
123
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
124
+ s.specification_version = 3
125
+
126
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
127
+ s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
128
+ s.add_development_dependency(%q<yard>, [">= 0"])
129
+ s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
130
+ s.add_runtime_dependency(%q<awesome_print>, [">= 0"])
131
+ else
132
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
133
+ s.add_dependency(%q<yard>, [">= 0"])
134
+ s.add_dependency(%q<sqlite3>, [">= 0"])
135
+ s.add_dependency(%q<awesome_print>, [">= 0"])
136
+ end
137
+ else
138
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
139
+ s.add_dependency(%q<yard>, [">= 0"])
140
+ s.add_dependency(%q<sqlite3>, [">= 0"])
141
+ s.add_dependency(%q<awesome_print>, [">= 0"])
142
+ end
143
+ end
144
+
Binary file
@@ -9,11 +9,20 @@ class Corto
9
9
  def initialize (options={})
10
10
  @db_name= options["db_name"]
11
11
  @db_name= './db/corto.db' unless options.has_key? "db_name"
12
- init_db
12
+ @use_db= options["use_db"]
13
+ @use_db= true unless options.has_key? "use_db"
14
+
15
+ if @use_db
16
+ init_db
17
+ end
13
18
  end
14
19
 
15
20
 
16
21
  def purge
22
+ if ! @use_db
23
+ return nil
24
+ end
25
+
17
26
  if File.exists?(@db_name)
18
27
  File.delete(@db_name)
19
28
  end
@@ -23,6 +32,9 @@ class Corto
23
32
  end
24
33
 
25
34
  def count
35
+ if ! @use_db
36
+ return -1
37
+ end
26
38
  @db = SQLite3::Database.new(@db_name)
27
39
  count = @db.execute("SELECT COUNT(*) FROM urls;")
28
40
  @db.close
@@ -35,20 +47,26 @@ class Corto
35
47
  uri = URI::parse(url)
36
48
  return nil unless uri.kind_of? URI::HTTP or uri.kind_of? URI::HTTPS
37
49
 
38
- @db = SQLite3::Database.new(@db_name)
39
- count = @db.execute("SELECT COUNT(*) FROM urls WHERE url='" +url.hash.abs.to_s(36)+"'")
40
- if count.first.first == 0
41
- @db.execute("INSERT INTO urls (url, original) VALUES ('"+url.hash.abs.to_s(36)+ "', '"+url+"')")
50
+ if @use_db
51
+ @db = SQLite3::Database.new(@db_name)
52
+ count = @db.execute("SELECT COUNT(*) FROM urls WHERE url='" +url.hash.abs.to_s(36)+"'")
53
+ if count.first.first == 0
54
+ @db.execute("INSERT INTO urls (url, original) VALUES ('"+url.hash.abs.to_s(36)+ "', '"+url+"')")
55
+ end
56
+ @db.close
42
57
  end
43
- @db.close
44
58
 
45
59
  url.hash.abs.to_s(36)
46
60
  end
47
61
 
48
62
  def deflate(shrunk_url)
49
- @db = SQLite3::Database.new(@db_name)
50
- result = @db.execute("SELECT original FROM urls WHERE url='" +shrunk_url+"'")
51
- (! result.first.nil?) ? result.first.first : nil
63
+ if @use_db
64
+ @db = SQLite3::Database.new(@db_name)
65
+ result = @db.execute("SELECT original FROM urls WHERE url='" +shrunk_url+"'")
66
+ (! result.first.nil?) ? result.first.first : nil
67
+ else
68
+ nil
69
+ end
52
70
  end
53
71
 
54
72
  private
@@ -59,4 +77,4 @@ class Corto
59
77
  @db.close
60
78
  end
61
79
  end
62
- end
80
+ end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: corto
3
3
  version: !ruby/object:Gem::Version
4
- hash: 375
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
- - 90
7
+ - 99
9
8
  - 0
10
- version: 0.90.0
9
+ version: 0.99.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - Paolo Perego
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-03-01 00:00:00 +01:00
17
+ date: 2011-03-25 00:00:00 +01:00
19
18
  default_executable: corto
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -26,7 +25,6 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 13
30
28
  segments:
31
29
  - 1
32
30
  - 2
@@ -42,7 +40,6 @@ dependencies:
42
40
  requirements:
43
41
  - - ">="
44
42
  - !ruby/object:Gem::Version
45
- hash: 3
46
43
  segments:
47
44
  - 0
48
45
  version: "0"
@@ -56,7 +53,6 @@ dependencies:
56
53
  requirements:
57
54
  - - ">="
58
55
  - !ruby/object:Gem::Version
59
- hash: 3
60
56
  segments:
61
57
  - 0
62
58
  version: "0"
@@ -70,7 +66,6 @@ dependencies:
70
66
  requirements:
71
67
  - - ">="
72
68
  - !ruby/object:Gem::Version
73
- hash: 3
74
69
  segments:
75
70
  - 0
76
71
  version: "0"
@@ -158,12 +153,12 @@ extra_rdoc_files:
158
153
  - README
159
154
  files:
160
155
  - .document
161
- - .gitignore
162
156
  - LICENSE
163
157
  - README
164
158
  - Rakefile
165
159
  - VERSION
166
160
  - bin/corto
161
+ - corto.gemspec
167
162
  - db/corto.db
168
163
  - lib/corto.rb
169
164
  - spec/corto_spec.rb
@@ -175,8 +170,8 @@ homepage: http://github.com/thesp0nge/corto
175
170
  licenses: []
176
171
 
177
172
  post_install_message:
178
- rdoc_options:
179
- - --charset=UTF-8
173
+ rdoc_options: []
174
+
180
175
  require_paths:
181
176
  - lib
182
177
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -184,7 +179,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
179
  requirements:
185
180
  - - ">="
186
181
  - !ruby/object:Gem::Version
187
- hash: 3
188
182
  segments:
189
183
  - 0
190
184
  version: "0"
@@ -193,7 +187,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
187
  requirements:
194
188
  - - ">="
195
189
  - !ruby/object:Gem::Version
196
- hash: 3
197
190
  segments:
198
191
  - 0
199
192
  version: "0"
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