imgurr 0.0.1 → 0.0.3
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -1
- data/README.md +13 -0
- data/imgurr.gemspec +2 -2
- data/lib/imgurr/command.rb +45 -20
- data/lib/imgurr/imgurAPI.rb +44 -6
- data/lib/imgurr/imgurErrors.rb +2 -10
- data/lib/imgurr/numbers.rb +14 -0
- data/lib/imgurr.rb +5 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc5e24675f0306b5d0f9c1068599acc4ffd6de29
|
4
|
+
data.tar.gz: 62ffec32123b2d2d9e306f98bcc5d0c2440e5780
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5af7a7c4f701d72132e6aed3e8577420de2e7508d4efe3eec9b83573da91b07d325c843e9fad8f0023c3516626fb492ac64cae2dd0e4fbc2afa8c99b97b946b1
|
7
|
+
data.tar.gz: ef8c4dd81a8bb18f6d259b966963235d4298a7b1377202bba889b59d44db9a8a06588d754476da6a261fac476e6559cc85e57eeb65e75618750bb029d38fa3c3
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -5,9 +5,22 @@ Command line utility for Imgur in ruby
|
|
5
5
|
|
6
6
|
|
7
7
|
## Install
|
8
|
+
**Warning:** This gem is still in early development and might not work on your system. Please report any bugs.
|
9
|
+
|
8
10
|
gem install imgurr
|
9
11
|
|
10
12
|
## Usage
|
11
13
|
imgurr upload image.jpg
|
12
14
|
Copied http://i.imgur.com/PLWGJlc.gif to clipboard
|
15
|
+
|
16
|
+
imgurr info 2KxrTAK
|
17
|
+
Image ID : 2KxrTAK
|
18
|
+
Views : 14717
|
19
|
+
Bandwidth : 2.296 GiB
|
20
|
+
Title :
|
21
|
+
Desc :
|
22
|
+
Animated : false
|
23
|
+
Width : 960 px
|
24
|
+
Height : 540 px
|
25
|
+
Link : http://i.imgur.com/2KxrTAK.jpg
|
13
26
|
|
data/imgurr.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'imgurr'
|
3
|
-
s.version = '0.0.
|
4
|
-
s.date = '2013-04-
|
3
|
+
s.version = '0.0.3'
|
4
|
+
s.date = '2013-04-07'
|
5
5
|
s.summary = "Imgurr lets you upload images to imgur from the command line"
|
6
6
|
s.description = "Imgurr is a ruby gem that lets you upload images to Imgur and manage your account"
|
7
7
|
s.authors = ["Christophe Naud-Dulude"]
|
data/lib/imgurr/command.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
module Imgurr
|
11
11
|
class Command
|
12
12
|
class << self
|
13
|
-
#include
|
13
|
+
#include Imgurr::Color
|
14
14
|
|
15
15
|
# Public: executes a command.
|
16
16
|
#
|
@@ -25,16 +25,6 @@ module Imgurr
|
|
25
25
|
delegate(command, major, minor)
|
26
26
|
end
|
27
27
|
|
28
|
-
# Public: prints any given string.
|
29
|
-
#
|
30
|
-
# s = String output
|
31
|
-
#
|
32
|
-
# Prints to STDOUT and returns. This method exists to standardize output
|
33
|
-
# and for easy mocking or overriding.
|
34
|
-
def output(s)
|
35
|
-
puts(s)
|
36
|
-
end
|
37
|
-
|
38
28
|
# Public: gets $stdin.
|
39
29
|
#
|
40
30
|
# Returns the $stdin object. This method exists to help with easy mocking
|
@@ -47,12 +37,14 @@ module Imgurr
|
|
47
37
|
#
|
48
38
|
# Returns output based on method calls.
|
49
39
|
def delegate(command, major, minor)
|
50
|
-
return
|
40
|
+
return help unless command
|
41
|
+
return no_internet unless self.internet_connection?
|
42
|
+
|
51
43
|
return version if command == '--version'
|
52
44
|
return help if command == 'help'
|
53
45
|
return help if command[0] == 45 || command[0] == '-' # any - dash options are pleas for help
|
54
|
-
return echo(major,minor) if command == 'echo' || command == 'e'
|
55
46
|
return upload(major) if command == 'upload' || command == 'up' || command == 'u'
|
47
|
+
return info(major) if command == 'info' || command == 'i'
|
56
48
|
|
57
49
|
end
|
58
50
|
|
@@ -60,23 +52,53 @@ module Imgurr
|
|
60
52
|
#
|
61
53
|
# Returns nothing
|
62
54
|
def upload(major)
|
55
|
+
unless File.exist?(major)
|
56
|
+
puts "File #{major} not found."
|
57
|
+
return
|
58
|
+
end
|
63
59
|
response = ImgurAPI.upload(major)
|
64
|
-
puts response if response.start_with?('Error')
|
60
|
+
puts response if response.start_with?('Imgur Error')
|
65
61
|
puts "Copied #{Platform.copy(response)} to clipboard" if response.start_with?('http')
|
66
62
|
end
|
67
63
|
|
64
|
+
# Public: Get image info
|
65
|
+
#
|
66
|
+
# Returns nothing
|
67
|
+
def info(major)
|
68
|
+
response = ImgurAPI.get_info(major)
|
69
|
+
puts response
|
70
|
+
end
|
71
|
+
|
68
72
|
# Public: the version of boom that you're currently running.
|
69
73
|
#
|
70
74
|
# Returns a String identifying the version number.
|
71
75
|
def version
|
72
|
-
|
76
|
+
puts "You're running imgurr #{Imgurr::VERSION}."
|
73
77
|
end
|
74
78
|
|
75
79
|
# Public: launches preferences JSON file in an editor for you to edit manually.
|
76
80
|
#
|
77
81
|
# Returns nothing.
|
78
82
|
def edit
|
79
|
-
Platform.edit(account.json_file)
|
83
|
+
#Platform.edit(account.json_file)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Public: Checks is there's an active internet connection
|
87
|
+
#
|
88
|
+
# Returns true or false
|
89
|
+
def internet_connection?
|
90
|
+
begin
|
91
|
+
true if open("http://www.google.com/")
|
92
|
+
rescue
|
93
|
+
false
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# Public: No internet error
|
98
|
+
#
|
99
|
+
# Returns nothing
|
100
|
+
def no_internet
|
101
|
+
puts "An Internet connection is required to use this command."
|
80
102
|
end
|
81
103
|
|
82
104
|
# Public: prints all the commands of boom.
|
@@ -84,16 +106,19 @@ module Imgurr
|
|
84
106
|
# Returns nothing.
|
85
107
|
def help
|
86
108
|
text = '
|
87
|
-
-
|
109
|
+
- imgurr: help ---------------------------------------------------
|
88
110
|
|
89
|
-
|
111
|
+
imgurr help This help text
|
112
|
+
imgurr version Print current version
|
90
113
|
|
114
|
+
imgurr upload <image> Upload image and copy link to clipboard
|
115
|
+
imgurr info <id> Print image information
|
91
116
|
|
92
117
|
all other documentation is located at:
|
93
|
-
https://github.com/Chris911/
|
118
|
+
https://github.com/Chris911/imgurr
|
94
119
|
'.gsub(/^ {8}/, '') # strip the first eight spaces of every line
|
95
120
|
|
96
|
-
|
121
|
+
puts text
|
97
122
|
end
|
98
123
|
|
99
124
|
end
|
data/lib/imgurr/imgurAPI.rb
CHANGED
@@ -11,8 +11,8 @@ module Imgurr
|
|
11
11
|
API_PUBLIC_KEY = 'Client-ID 70ff50b8dfc3a53'
|
12
12
|
|
13
13
|
ENDPOINTS = {
|
14
|
-
:image => '/3/image',
|
15
|
-
:gallery => '/3/gallery'
|
14
|
+
:image => '/3/image/',
|
15
|
+
:gallery => '/3/gallery/'
|
16
16
|
}
|
17
17
|
|
18
18
|
# HTTP Client used for API requests
|
@@ -35,17 +35,55 @@ module Imgurr
|
|
35
35
|
request.add_field('Authorization', API_PUBLIC_KEY)
|
36
36
|
|
37
37
|
response = web_client.request(request)
|
38
|
-
|
38
|
+
handle_upload_response(response.body)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Public: Get info about an image
|
42
|
+
#
|
43
|
+
# args - The image imgur id
|
44
|
+
#
|
45
|
+
def get_info(image_id)
|
46
|
+
request = Net::HTTP::Get.new(API_URI.request_uri + ENDPOINTS[:image] + image_id)
|
47
|
+
request.add_field('Authorization', API_PUBLIC_KEY)
|
48
|
+
|
49
|
+
response = web_client.request(request)
|
50
|
+
handle_info_response(response.body)
|
39
51
|
end
|
40
52
|
|
41
53
|
# Public: Handle API Response
|
42
54
|
#
|
43
55
|
# args - Response data
|
44
56
|
#
|
45
|
-
def
|
57
|
+
def handle_upload_response(response)
|
58
|
+
data = JSON.parse(response)
|
59
|
+
puts JSON.pretty_unparse(data) if Imgurr::DEBUG
|
60
|
+
if data['success']
|
61
|
+
return data['data']['link']
|
62
|
+
end
|
63
|
+
ImgurErrors.handle_error(response)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Public: Handle API Response
|
67
|
+
#
|
68
|
+
# args - Response data
|
69
|
+
#
|
70
|
+
def handle_info_response(response)
|
46
71
|
data = JSON.parse(response)
|
47
|
-
|
48
|
-
|
72
|
+
puts JSON.pretty_unparse(data) if Imgurr::DEBUG
|
73
|
+
if data['success']
|
74
|
+
return "
|
75
|
+
Image ID : #{data['data']['id']}
|
76
|
+
Views : #{data['data']['views']}
|
77
|
+
Bandwidth : #{Numbers.to_human(data['data']['bandwidth'])}
|
78
|
+
Title : #{data['data']['title']}
|
79
|
+
Desc : #{data['data']['description']}
|
80
|
+
Animated : #{data['data']['animated']}
|
81
|
+
Width : #{data['data']['width']} px
|
82
|
+
Height : #{data['data']['height']} px
|
83
|
+
Link : #{data['data']['link']}
|
84
|
+
".gsub(/^ {8}/, '')
|
85
|
+
end
|
86
|
+
ImgurErrors.handle_error(response)
|
49
87
|
end
|
50
88
|
|
51
89
|
end
|
data/lib/imgurr/imgurErrors.rb
CHANGED
@@ -8,17 +8,9 @@ module Imgurr
|
|
8
8
|
class ImgurErrors
|
9
9
|
class << self
|
10
10
|
|
11
|
-
ERROR_CODES = {
|
12
|
-
400 => 'Missing Parameters',
|
13
|
-
401 => 'Auth Required',
|
14
|
-
403 => 'Forbidden',
|
15
|
-
404 => 'Resource does not exist',
|
16
|
-
429 => 'Rate Limiting',
|
17
|
-
500 => 'Internal Error'
|
18
|
-
}
|
19
|
-
|
20
11
|
def handle_error(response)
|
21
|
-
|
12
|
+
data = JSON.parse(response)
|
13
|
+
"Imgur Error: #{data['data']['error']} (#{data['status']})"
|
22
14
|
end
|
23
15
|
|
24
16
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Imgurr
|
2
|
+
class Numbers
|
3
|
+
class << self
|
4
|
+
def to_human(number)
|
5
|
+
units = %W(B KiB MiB GiB TiB)
|
6
|
+
|
7
|
+
size, unit = units.reduce(number.to_f) do |(fsize, _), utype|
|
8
|
+
fsize > 512 ? [fsize / 1024, utype] : (break [fsize, utype])
|
9
|
+
end
|
10
|
+
return "#{"%.3f" % size} #{unit}"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/imgurr.rb
CHANGED
@@ -8,18 +8,20 @@ end
|
|
8
8
|
# External require
|
9
9
|
require 'net/http'
|
10
10
|
require 'net/https'
|
11
|
+
require 'open-uri'
|
11
12
|
require 'json'
|
12
|
-
require 'openssl'
|
13
13
|
|
14
14
|
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
15
15
|
|
16
16
|
# Internal require
|
17
|
-
require 'imgurr/command'
|
18
17
|
require 'imgurr/color'
|
18
|
+
require 'imgurr/numbers'
|
19
19
|
require 'imgurr/imgurAPI'
|
20
20
|
require 'imgurr/platform'
|
21
21
|
require 'imgurr/imgurErrors'
|
22
|
+
require 'imgurr/command'
|
22
23
|
|
23
24
|
module Imgurr
|
24
|
-
VERSION = '0.0.
|
25
|
+
VERSION = '0.0.2'
|
26
|
+
DEBUG = false
|
25
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imgurr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christophe Naud-Dulude
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- lib/imgurr/command.rb
|
59
59
|
- lib/imgurr/imgurAPI.rb
|
60
60
|
- lib/imgurr/imgurErrors.rb
|
61
|
+
- lib/imgurr/numbers.rb
|
61
62
|
- lib/imgurr/platform.rb
|
62
63
|
- lib/imgurr.rb
|
63
64
|
- test/run
|