looks 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YmM3OWZlZjA5YTg2NTRkY2I5ZmExMTJhZjI4YTM0MDlhYzg4MDFkOQ==
5
+ data.tar.gz: !binary |-
6
+ ZTE3MDRmYjBkNDlkYWRiNDAwODVkNmY5Mzc3YTQ1Yzk5MTcwY2ZmYw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NTg5NWI2N2MzYmJlN2RiYjZiNmJkM2YzYWFlNGRiNGU3ZDZmMDEwZGFmZjdk
10
+ NDcwNGU0Mzk2MDQzMmNkZDg2ZDM0NzEyNjJjMDY1M2JjZDc5MzMzZGU2MzJl
11
+ NjRmMDQ3MDMzMWE4YjQwYzljZWFhMGUyNTZjZmIwMmFlNDIyZmQ=
12
+ data.tar.gz: !binary |-
13
+ YTAzNmM1MDAwOTAyM2E0NDE2YTY4NzM0OGZjZmI4YzY1ZTZiMmVlOTY4ZDNk
14
+ YTg5MmRlZjcxY2MzZTg3NmNmNTA0ODE4YWM1NDZhMTc2Y2U4NDQ1NWNhOWY5
15
+ MWU3ZjU1OGIxNTQ1YWM4YWE2NDkyOTIzZWMxZDgxOGIyOGFiNWU=
data/README.md CHANGED
@@ -9,7 +9,7 @@ Looks is a command line interface to [Gravatar][].
9
9
  Installation
10
10
  ------------
11
11
 
12
- Installing Looks requires [Ruby 1.9.3 or newer][Ruby].
12
+ Installing Looks requires [Ruby][].
13
13
 
14
14
  [Ruby]: http://ruby-lang.org/
15
15
 
data/lib/looks/cli.rb CHANGED
@@ -2,29 +2,33 @@ require 'looks/command'
2
2
  require 'looks/config'
3
3
  require 'looks/error'
4
4
 
5
- module Looks
5
+ module Looks
6
6
  module CLI
7
7
 
8
8
  USAGE = <<-EOF
9
9
  Usage: looks <command> [arguments]
10
10
 
11
11
  Commands:
12
- add Upload an image
13
12
  addresses List email addresses
14
13
  config Configure the default account
15
14
  images List uploaded images
15
+ pull Download an image
16
+ push Upload an image
16
17
  rm Remove an uploaded image
17
18
  set Set the image for an email address
19
+ unset Unset the image for an email address
18
20
 
19
21
  EOF
20
22
 
21
23
  COMMANDS = {
22
- 'add' => Command::Add,
23
24
  'addresses' => Command::Addresses,
24
25
  'config' => Command::Config,
25
26
  'images' => Command::Images,
27
+ 'pull' => Command::Pull,
28
+ 'push' => Command::Push,
26
29
  'rm' => Command::Rm,
27
- 'set' => Command::Set
30
+ 'set' => Command::Set,
31
+ 'unset' => Command::Unset
28
32
  }
29
33
 
30
34
  def self.start(args)
data/lib/looks/command.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  require 'looks/command/account_management'
2
- require 'looks/command/add'
3
2
  require 'looks/command/addresses'
4
3
  require 'looks/command/base'
5
4
  require 'looks/command/config'
6
5
  require 'looks/command/images'
6
+ require 'looks/command/pull'
7
+ require 'looks/command/push'
7
8
  require 'looks/command/rm'
8
9
  require 'looks/command/set'
10
+ require 'looks/command/unset'
@@ -1,4 +1,4 @@
1
- require 'looks/cli'
1
+ require 'looks/error'
2
2
  require 'looks/version'
3
3
 
4
4
  require 'optparse'
@@ -22,7 +22,7 @@ module Looks
22
22
  begin
23
23
  @opts.parse! args
24
24
  rescue OptionParser::ParseError => e
25
- CLI.error(e)
25
+ raise Error, e
26
26
  end
27
27
 
28
28
  usage unless args.length == arguments.length
@@ -0,0 +1,29 @@
1
+ require 'looks/command/base'
2
+ require 'looks/error'
3
+ require 'looks/gravatar'
4
+
5
+ module Looks
6
+ module Command
7
+ class Pull < Base
8
+
9
+ def arguments
10
+ [ '<address>', '<filename>' ]
11
+ end
12
+
13
+ def execute(args)
14
+ super
15
+
16
+ address, filename = args
17
+
18
+ begin
19
+ File.open(filename, 'wb') do |file|
20
+ file.write(Gravatar.get(address))
21
+ end
22
+ rescue IOError, SystemCallError
23
+ raise Error, "#{filename}: Cannot write file"
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -4,7 +4,7 @@ require 'looks/gravatar'
4
4
 
5
5
  module Looks
6
6
  module Command
7
- class Add < AccountManagement
7
+ class Push < AccountManagement
8
8
 
9
9
  def arguments
10
10
  [ '<filename>' ]
@@ -19,7 +19,7 @@ module Looks
19
19
 
20
20
  begin
21
21
  File.open(filename) do |file|
22
- puts Gravatar::Account.new(config).add(file.read)
22
+ puts Gravatar::Account.new(config).save_data(file.read)
23
23
  end
24
24
  rescue IOError, SystemCallError
25
25
  raise Error, "#{filename}: Cannot read file"
@@ -15,7 +15,7 @@ module Looks
15
15
  id = args.first
16
16
 
17
17
  begin
18
- Gravatar::Account.new(config).remove(id)
18
+ Gravatar::Account.new(config).delete_image(id)
19
19
  rescue Gravatar::IncorrectMethodParameterError
20
20
  raise Error, "#{id}: Unknown identifier"
21
21
  end
@@ -18,7 +18,7 @@ module Looks
18
18
  account = Gravatar::Account.new(config)
19
19
 
20
20
  begin
21
- account.set(address, id)
21
+ account.use_image(address, id)
22
22
  rescue Gravatar::IncorrectMethodParameterError
23
23
  addresses = account.addresses.map { |address| address.email }
24
24
 
@@ -0,0 +1,29 @@
1
+ require 'looks/command/account_management'
2
+ require 'looks/error'
3
+ require 'looks/gravatar'
4
+
5
+ module Looks
6
+ module Command
7
+ class Unset < AccountManagement
8
+
9
+ def arguments
10
+ [ '<address>' ]
11
+ end
12
+
13
+ def execute(args)
14
+ super
15
+
16
+ address = args.first
17
+
18
+ account = Gravatar::Account.new(config)
19
+
20
+ begin
21
+ account.remove_image(address)
22
+ rescue Gravatar::IncorrectMethodParameterError
23
+ raise Error, "#{address}: Unknown email address"
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
data/lib/looks/error.rb CHANGED
@@ -1,6 +1,4 @@
1
1
  module Looks
2
-
3
2
  class Error < StandardError
4
3
  end
5
-
6
4
  end
@@ -4,18 +4,28 @@ require 'looks/gravatar/errors'
4
4
  require 'looks/gravatar/image'
5
5
 
6
6
  require 'digest/md5'
7
+ require 'net/http'
8
+ require 'uri'
7
9
 
8
10
  module Looks
9
11
  module Gravatar
10
12
 
11
- URL = ENV['LOOKS_GRAVATAR_URL'] || 'https://secure.gravatar.com/xmlrpc'
13
+ DEFAULT_API_URL = 'https://secure.gravatar.com/xmlrpc'
14
+ DEFAULT_DOWNLOAD_URL = 'http://gravatar.com/avatar'
15
+
16
+ API_URL = ENV['LOOKS_GRAVATAR_API_URL'] || DEFAULT_API_URL
17
+ DOWNLOAD_URL = ENV['LOOKS_GRAVATAR_DOWNLOAD_URL'] || DEFAULT_DOWNLOAD_URL
18
+
19
+ def self.get(email)
20
+ Net::HTTP.get(URI("#{DOWNLOAD_URL}/#{hash(email)}.jpg"))
21
+ end
12
22
 
13
23
  def self.hash(email)
14
24
  Digest::MD5.hexdigest(email.strip.downcase)
15
25
  end
16
26
 
17
27
  def self.url(email)
18
- "#{URL}?user=#{hash(email)}"
28
+ "#{API_URL}?user=#{hash(email)}"
19
29
  end
20
30
 
21
31
  end
@@ -1,3 +1,4 @@
1
+ require 'looks/error'
1
2
  require 'looks/gravatar/address'
2
3
  require 'looks/gravatar/errors'
3
4
  require 'looks/gravatar/image'
@@ -34,23 +35,29 @@ module Looks
34
35
  images.sort
35
36
  end
36
37
 
37
- def add(image)
38
+ def save_data(image)
38
39
  data = Base64.encode64(image)
39
40
 
40
41
  call('grav.saveData', { 'data' => data, 'rating' => 0 })
41
42
  end
42
43
 
43
- def remove(image)
44
+ def delete_image(image)
44
45
  call('grav.deleteUserimage', { 'userimage' => image })
45
46
  end
46
47
 
47
- def set(address, id)
48
+ def use_image(address, id)
48
49
  call('grav.useUserimage', {
49
50
  'userimage' => id,
50
51
  'addresses' => [ address ]
51
52
  })
52
53
  end
53
54
 
55
+ def remove_image(address)
56
+ call('grav.removeImage', {
57
+ 'addresses' => [ address ]
58
+ })
59
+ end
60
+
54
61
  private
55
62
 
56
63
  def call(method, args = {})
@@ -58,6 +65,8 @@ module Looks
58
65
 
59
66
  begin
60
67
  @server.call(method, args)
68
+ rescue SocketError, SystemCallError
69
+ raise Error, "Unable to connect to Gravatar server"
61
70
  rescue XMLRPC::FaultException => fault
62
71
  handle fault
63
72
  end
data/lib/looks/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Looks
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: looks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jussi Virtanen
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-21 00:00:00.000000000 Z
11
+ date: 2013-12-11 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: highline
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: inifile
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: aruba
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: cucumber
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
@@ -78,23 +69,20 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: dimensions
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ~>
84
74
  - !ruby/object:Gem::Version
85
- version: '1.2'
75
+ version: 1.2.0
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ~>
92
81
  - !ruby/object:Gem::Version
93
- version: '1.2'
82
+ version: 1.2.0
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rake
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ~>
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ~>
108
95
  - !ruby/object:Gem::Version
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: rspec-expectations
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ~>
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ~>
124
109
  - !ruby/object:Gem::Version
@@ -135,13 +120,15 @@ files:
135
120
  - bin/looks
136
121
  - lib/looks/cli.rb
137
122
  - lib/looks/command/account_management.rb
138
- - lib/looks/command/add.rb
139
123
  - lib/looks/command/addresses.rb
140
124
  - lib/looks/command/base.rb
141
125
  - lib/looks/command/config.rb
142
126
  - lib/looks/command/images.rb
127
+ - lib/looks/command/pull.rb
128
+ - lib/looks/command/push.rb
143
129
  - lib/looks/command/rm.rb
144
130
  - lib/looks/command/set.rb
131
+ - lib/looks/command/unset.rb
145
132
  - lib/looks/command.rb
146
133
  - lib/looks/config.rb
147
134
  - lib/looks/error.rb
@@ -155,26 +142,25 @@ files:
155
142
  homepage: http://github.com/jvirtanen/looks
156
143
  licenses:
157
144
  - MIT
145
+ metadata: {}
158
146
  post_install_message:
159
147
  rdoc_options: []
160
148
  require_paths:
161
149
  - lib
162
150
  required_ruby_version: !ruby/object:Gem::Requirement
163
- none: false
164
151
  requirements:
165
152
  - - ! '>='
166
153
  - !ruby/object:Gem::Version
167
- version: '0'
154
+ version: 1.9.3
168
155
  required_rubygems_version: !ruby/object:Gem::Requirement
169
- none: false
170
156
  requirements:
171
157
  - - ! '>='
172
158
  - !ruby/object:Gem::Version
173
159
  version: '0'
174
160
  requirements: []
175
161
  rubyforge_project:
176
- rubygems_version: 1.8.23
162
+ rubygems_version: 2.0.7
177
163
  signing_key:
178
- specification_version: 3
164
+ specification_version: 4
179
165
  summary: Command line interface to Gravatar
180
166
  test_files: []