delicious-console 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source :rubygems
2
+
3
+ gem 'thor'
4
+
5
+ group :test do
6
+ gem 'rspec'
7
+ end
data/README.MD ADDED
File without changes
data/README.md ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+
3
+ begin
4
+ require 'jeweler'
5
+ Jeweler::Tasks.new do |gem|
6
+ gem.name = "delicious-console"
7
+ gem.summary = "%Q{A console application to Delicious Web Site}"
8
+ gem.description = "%Q{Store yours URL's on Delicious using your terminal console}"
9
+ gem.email = "mateus@mateusprado.com"
10
+ gem.homepage = "http://github.com/mateusprado/delicious-console"
11
+ gem.authors = ["Mateus Prado"]
12
+ gem.add_dependency %q<thor>, ">= 0.16.0"
13
+ gem.add_development_dependency "rspec", ">= 2.11.0"
14
+ end
15
+ Jeweler::GemcutterTasks.new
16
+ rescue
17
+ puts "Jeweler not available. Run: gem install jeweler"
18
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
data/bin/delicious ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
4
+
5
+ require 'delicious-console'
6
+
7
+ Delicious::Console.start
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'net/https'
3
+ require 'thor'
4
+ require 'rexml/document'
5
+ require 'yaml'
6
+
7
+ require 'delicious-console/authentication'
8
+ require 'delicious-console/parser'
9
+ require 'delicious-console/client'
10
+ require 'delicious-console/console'
@@ -0,0 +1,28 @@
1
+ module Delicious
2
+ module API
3
+ module Authentication
4
+ class << self
5
+ def authenticate(request, connection)
6
+ if !request.nil?
7
+ make_setup!
8
+ request.basic_auth @username, @password
9
+ response = connection.request(request)
10
+ else
11
+ puts "Invalid request"
12
+ end
13
+ end
14
+
15
+ def make_setup!
16
+ config = YAML.load_file(filename)
17
+ @username = config['username']
18
+ @password = config['password']
19
+ end
20
+
21
+ def filename
22
+ File.expand_path("~/.delicious_config")
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+
@@ -0,0 +1,28 @@
1
+ module Delicious
2
+ module API
3
+ module Client
4
+ class << self
5
+ def posts_all
6
+ request = nil
7
+ connection = Net::HTTP.new('api.del.icio.us', 443)
8
+ connection.use_ssl = true
9
+ connection.start do |connection|
10
+ request = Net::HTTP::Get.new('/v1/posts/all')
11
+ end
12
+ return request, connection
13
+ end
14
+
15
+
16
+ def post_add(url, description)
17
+ request = nil
18
+ connection = Net::HTTP.new('api.del.icio.us', 443)
19
+ connection.use_ssl = true
20
+ connection.start do |connection|
21
+ request = Net::HTTP::Get.new("/v1/posts/add?url=#{url}&description=#{description}")
22
+ end
23
+ return request, connection
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,26 @@
1
+ module Delicious
2
+ class Console < Thor
3
+ include Thor::Actions
4
+ include API::Authentication
5
+ include API::Parser
6
+ include API::Client
7
+
8
+ # task: posts
9
+ desc "posts", "Fetch all bookmarks"
10
+
11
+ def posts
12
+ request, connection = Delicious::API::Client.posts_all
13
+ response = Delicious::API::Authentication.authenticate(request, connection)
14
+ puts Delicious::API::Parser.response(response.body)
15
+ end
16
+
17
+ #task: add
18
+ desc "add [url, description]", "Add a url with description"
19
+
20
+ def add(url, description)
21
+ request, connection = Delicious::API::Client.post_add(url, description)
22
+ response = Delicious::API::Authentication.authenticate(request, connection)
23
+ puts response
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,15 @@
1
+ module Delicious
2
+ module API
3
+ module Parser
4
+ class << self
5
+ def response(body)
6
+ dom = REXML::Document.new(body)
7
+ posts = {}
8
+ dom.root.elements.collect('post') do |result|
9
+ all_posts = result.attributes['href']
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "The Delicious Console" do
4
+ context "when used by someone" do
5
+ it "should be work fine" do
6
+ Delicious::Console.get_all_posts
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) do |file|
3
+ require file
4
+ end
5
+
6
+ require 'rspec'
7
+ require 'rspec/autorun'
8
+
9
+ RSpec.configure do |config|
10
+ config.color_enabled = true
11
+ config.formatter = 'documentation'
12
+ end
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: delicious-console
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mateus Prado
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-09-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: thor
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 0.16.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.16.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 2.11.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.11.0
62
+ description: ! '%Q{Store yours URL''s on Delicious using your terminal console}'
63
+ email: mateus@mateusprado.com
64
+ executables:
65
+ - delicious
66
+ extensions: []
67
+ extra_rdoc_files:
68
+ - README.md
69
+ files:
70
+ - Gemfile
71
+ - Rakefile
72
+ - README.MD
73
+ - VERSION
74
+ - bin/delicious
75
+ - lib/delicious-console.rb
76
+ - lib/delicious-console/authentication.rb
77
+ - lib/delicious-console/client.rb
78
+ - lib/delicious-console/console.rb
79
+ - lib/delicious-console/parser.rb
80
+ - spec/delicious-console_spec.rb
81
+ - spec/spec_helper.rb
82
+ - README.md
83
+ homepage: http://github.com/mateusprado/delicious-console
84
+ licenses: []
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubyforge_project:
103
+ rubygems_version: 1.8.24
104
+ signing_key:
105
+ specification_version: 3
106
+ summary: ! '%Q{A console application to Delicious Web Site}'
107
+ test_files:
108
+ - spec/delicious-console_spec.rb
109
+ - spec/spec_helper.rb