imgurapi 2.0.2 → 3.0.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.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/Rakefile +3 -4
- data/lib/{imgur → imgurapi}/api/account.rb +3 -3
- data/lib/{imgur → imgurapi}/api/base.rb +1 -1
- data/lib/{imgur → imgurapi}/api/image.rb +4 -4
- data/lib/{imgur → imgurapi}/communication.rb +1 -1
- data/lib/{imgur → imgurapi}/extensions/array.rb +0 -0
- data/lib/{imgur → imgurapi}/extensions/hash.rb +0 -0
- data/lib/{imgur → imgurapi}/extensions/string.rb +0 -0
- data/lib/{imgur → imgurapi}/models/account.rb +1 -1
- data/lib/{imgur → imgurapi}/models/base.rb +1 -1
- data/lib/{imgur → imgurapi}/models/image.rb +2 -2
- data/lib/{imgur → imgurapi}/session.rb +2 -2
- data/lib/{imgur → imgurapi}/tasks/railtie.rb +2 -2
- data/lib/imgurapi/tasks/rake.rb +37 -0
- data/lib/{imgur → imgurapi}/tasks/tasks.rake +2 -3
- data/lib/imgurapi/version.rb +5 -0
- data/lib/imgurapi.rb +23 -0
- data/spec/imgur/session_spec.rb +7 -7
- data/spec/imgur_spec.rb +16 -16
- metadata +18 -18
- data/lib/imgur/tasks/rake.rb +0 -36
- data/lib/imgur/version.rb +0 -5
- data/lib/imgur.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d77b29707bea1234b6841d315a016b0b16f955d
|
4
|
+
data.tar.gz: d6b760ffe9a4619495f1856ded2260c14a6309ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b234a644136409006effbc608543020632d2a9065f208f284fd2d5199f98829b47186470ed920c80b0ef95e59063e538e7c6f5083bd67916dff509befb1ebb7
|
7
|
+
data.tar.gz: c6b19d8891c344136ad0de716e39efb4310933dfd94cde38265b7e557227bb8227d64d7fcab81fac0cf49c5fa3ef3f21c4fe1109c87391b6a566e7d9e8403a7b
|
data/README.md
CHANGED
@@ -47,13 +47,13 @@ refresh_token: REFRESH_TOKEN
|
|
47
47
|
|
48
48
|
Create a session object to communicate to Imgur.
|
49
49
|
```ruby
|
50
|
-
imgur_session =
|
50
|
+
imgur_session = Imgurapi::Session.new(client_id: 'CLIENT_ID', client_secret: 'CLIENT_SECRET', refresh_token: 'REFRESH_TOKEN')
|
51
51
|
```
|
52
52
|
|
53
53
|
Your account:
|
54
54
|
```ruby
|
55
55
|
account = imgur_session.account.account
|
56
|
-
=> #<
|
56
|
+
=> #<Imgurapi::Account:0x007fd399b6b678 @id=123, @url="my_account", @bio=nil, @reputation=7, @created=1352279501, @pro_expiration=false>
|
57
57
|
```
|
58
58
|
|
59
59
|
How many images you have:
|
@@ -66,7 +66,7 @@ Upload your first image. Argument can be either a String or a File:
|
|
66
66
|
image = imgur_session.image.image.upload('portrait.jpg')
|
67
67
|
```
|
68
68
|
|
69
|
-
image is now an instance of
|
69
|
+
image is now an instance of Imgurapi::Image, a convenient way to manage all the attributes of your image (at least more convenient than a multilevel dictionary):
|
70
70
|
```ruby
|
71
71
|
name = nil
|
72
72
|
title = nil
|
data/Rakefile
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
module
|
1
|
+
module Imgurapi
|
2
2
|
module Api
|
3
3
|
class Account < Base
|
4
4
|
|
5
5
|
# https://api.imgur.com/endpoints/account#account
|
6
6
|
def account
|
7
|
-
|
7
|
+
Imgurapi::Account.new communication.call(:get, 'account/me')
|
8
8
|
end
|
9
9
|
|
10
10
|
# https://api.imgur.com/endpoints/account#images
|
11
11
|
def images(page = 0)
|
12
12
|
communication.call(:get, "account/me/images/#{page}").map do |image|
|
13
|
-
|
13
|
+
Imgurapi::Image.new image
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module Imgurapi
|
2
2
|
module Api
|
3
3
|
class Image < Base
|
4
4
|
|
@@ -6,7 +6,7 @@ module Imgur
|
|
6
6
|
def image(id)
|
7
7
|
raise 'Please provide a valid image identificator' if id.nil? or !id.kind_of? String or id == '' or !!(id =~ /[^\w]/)
|
8
8
|
|
9
|
-
|
9
|
+
Imgurapi::Image.new communication.call(:get, "image/#{id}")
|
10
10
|
end
|
11
11
|
|
12
12
|
# https://api.imgur.com/endpoints/image#image-upload
|
@@ -19,12 +19,12 @@ module Imgur
|
|
19
19
|
raise 'Must provide a File or file path'
|
20
20
|
end
|
21
21
|
|
22
|
-
|
22
|
+
Imgurapi::Image.new communication.call(:post, 'image', image: Base64.encode64(file.read))
|
23
23
|
end
|
24
24
|
|
25
25
|
# https://api.imgur.com/endpoints/image#image-delete
|
26
26
|
def image_delete(id)
|
27
|
-
if id.kind_of?
|
27
|
+
if id.kind_of? Imgurapi::Image
|
28
28
|
id = id.id
|
29
29
|
end
|
30
30
|
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module Imgurapi
|
2
2
|
class Image < Base
|
3
3
|
|
4
4
|
IMAGE_URL = 'http://i.imgur.com/'
|
@@ -9,7 +9,7 @@ module Imgur
|
|
9
9
|
end
|
10
10
|
|
11
11
|
# Provides the download URL in case you know a valid imgur hash and don't want to make a network trip with .find
|
12
|
-
# Just in case you don't need the full
|
12
|
+
# Just in case you don't need the full Imgurapi::Image object
|
13
13
|
def url(size)
|
14
14
|
size = case size
|
15
15
|
when :small_square, :small, :s
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module Imgurapi
|
2
2
|
class Session
|
3
3
|
HOST = 'https://api.imgur.com'
|
4
4
|
|
@@ -21,7 +21,7 @@ module Imgur
|
|
21
21
|
|
22
22
|
%w(Account Image).each do |clazz|
|
23
23
|
define_method clazz.downcase do
|
24
|
-
|
24
|
+
Imgurapi::Api.const_get(clazz).new(self)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'imgurapi/session'
|
2
|
+
|
3
|
+
module Imgurapi
|
4
|
+
|
5
|
+
module Rake
|
6
|
+
extend self
|
7
|
+
|
8
|
+
AUTHORIZE_ENDPOINT = '/oauth2/authorize'
|
9
|
+
TOKEN_ENDPOINT = '/oauth2/token'
|
10
|
+
|
11
|
+
def authorize(client_id, client_secret)
|
12
|
+
puts "\nVisit this URL: #{Imgurapi::Session::HOST}#{AUTHORIZE_ENDPOINT}?client_id=#{client_id}&response_type=pin"
|
13
|
+
print 'And after you approved the authorization please enter your verification code: '
|
14
|
+
|
15
|
+
pin = STDIN.gets.strip
|
16
|
+
|
17
|
+
begin
|
18
|
+
response = Faraday.new(Imgurapi::Session::HOST).post(TOKEN_ENDPOINT, pin: pin, client_id: client_id, client_secret: client_secret, grant_type: 'pin')
|
19
|
+
|
20
|
+
raise "HTTP #{response.status}" if response.status != 200
|
21
|
+
credentials = JSON.parse response.body
|
22
|
+
rescue => e
|
23
|
+
puts "Authorization failed: #{e.message}\nPlease try again."
|
24
|
+
exit
|
25
|
+
end
|
26
|
+
|
27
|
+
puts <<-MESSAGE
|
28
|
+
|
29
|
+
Authorization was successful. Use these credentials to initialize the library:
|
30
|
+
|
31
|
+
access_token: #{credentials['access_token']}
|
32
|
+
refresh_secret: #{credentials['refresh_token']}
|
33
|
+
|
34
|
+
MESSAGE
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
require 'imgur/tasks/rake'
|
1
|
+
require 'imgurapi/tasks/rake'
|
3
2
|
|
4
3
|
namespace :imgur do
|
5
4
|
desc 'Obtain your Imgur tokens'
|
@@ -9,6 +8,6 @@ namespace :imgur do
|
|
9
8
|
exit
|
10
9
|
end
|
11
10
|
|
12
|
-
|
11
|
+
Imgurapi::Rake.authorize(ENV['CLIENT_ID'], ENV['CLIENT_SECRET'])
|
13
12
|
end
|
14
13
|
end
|
data/lib/imgurapi.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Gem dependencies
|
2
|
+
require 'faraday'
|
3
|
+
require 'json'
|
4
|
+
require 'base64'
|
5
|
+
|
6
|
+
# Some nice extensions to base classes
|
7
|
+
require 'imgurapi/extensions/array'
|
8
|
+
require 'imgurapi/extensions/hash'
|
9
|
+
require 'imgurapi/extensions/string'
|
10
|
+
|
11
|
+
# This gem real code
|
12
|
+
require 'imgurapi/version'
|
13
|
+
require 'imgurapi/api/base'
|
14
|
+
require 'imgurapi/api/account'
|
15
|
+
require 'imgurapi/api/image'
|
16
|
+
require 'imgurapi/communication'
|
17
|
+
require 'imgurapi/session'
|
18
|
+
require 'imgurapi/models/base'
|
19
|
+
require 'imgurapi/models/account'
|
20
|
+
require 'imgurapi/models/image'
|
21
|
+
|
22
|
+
# Rails integration
|
23
|
+
require 'imgurapi/tasks/railtie' if defined? Rails
|
data/spec/imgur/session_spec.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
require_relative '../spec_helper'
|
2
2
|
require 'imgur'
|
3
3
|
|
4
|
-
describe
|
4
|
+
describe Imgurapiapi::Session do
|
5
5
|
|
6
6
|
context 'incorrect credentials' do
|
7
|
-
it { expect {
|
8
|
-
it { expect {
|
9
|
-
it { expect {
|
10
|
-
it { expect {
|
7
|
+
it { expect { Imgurapi::Session.new }.to raise_error }
|
8
|
+
it { expect { Imgurapi::Session.new(random_key: nil) }.to raise_error }
|
9
|
+
it { expect { Imgurapi::Session.new(client_id: nil, random_key: nil) }.to raise_error }
|
10
|
+
it { expect { Imgurapi::Session.new({}) }.to raise_error }
|
11
11
|
end
|
12
12
|
|
13
13
|
context 'correct credentials' do
|
14
14
|
it do
|
15
15
|
expect(
|
16
|
-
|
17
|
-
).to be_an_instance_of
|
16
|
+
Imgurapi::Session.new(client_id: 'ID', client_secret: 'SECRET', refresh_token: 'TOKEN')
|
17
|
+
).to be_an_instance_of Imgurapi::Session
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/spec/imgur_spec.rb
CHANGED
@@ -1,28 +1,28 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
require 'imgur'
|
3
3
|
|
4
|
-
describe
|
4
|
+
describe Imgurapi do
|
5
5
|
|
6
6
|
describe 'placeholder classes' do
|
7
7
|
|
8
8
|
it 'should create an Image with the fields provided' do
|
9
|
-
image =
|
10
|
-
image.should be_an_instance_of
|
9
|
+
image = Imgurapi::Image.new
|
10
|
+
image.should be_an_instance_of Imgurapi::Image
|
11
11
|
|
12
12
|
fields = {:a => 1, :b => 2}
|
13
|
-
image =
|
14
|
-
image.should be_an_instance_of
|
13
|
+
image = Imgurapi::Image.new(fields)
|
14
|
+
image.should be_an_instance_of Imgurapi::Image
|
15
15
|
image.a.should eq(1)
|
16
16
|
image.b.should eq(2)
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should create a Link with the fields provided' do
|
20
|
-
links =
|
21
|
-
links.should be_an_instance_of
|
20
|
+
links = Imgurapi::Links.new
|
21
|
+
links.should be_an_instance_of Imgurapi::Links
|
22
22
|
|
23
23
|
fields = {:a => 1, :b => 2}
|
24
|
-
links =
|
25
|
-
links.should be_an_instance_of
|
24
|
+
links = Imgurapi::Links.new(fields)
|
25
|
+
links.should be_an_instance_of Imgurapi::Links
|
26
26
|
links.a.should eq(1)
|
27
27
|
links.b.should eq(2)
|
28
28
|
end
|
@@ -48,7 +48,7 @@ describe Imgur do
|
|
48
48
|
|
49
49
|
before(:all) do
|
50
50
|
credentials = read_credentials_file
|
51
|
-
@session =
|
51
|
+
@session = Imgurapi::Session.new(credentials)
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'should parse_message' do
|
@@ -84,8 +84,8 @@ describe Imgur do
|
|
84
84
|
@session.send(:compose_image, {:images => {}}).should eq(nil)
|
85
85
|
|
86
86
|
from_hash = {:images => {:image => {}, :links => {}}}
|
87
|
-
@session.send(:compose_image, from_hash).should be_an_instance_of
|
88
|
-
@session.send(:compose_image, from_hash).links.should be_an_instance_of
|
87
|
+
@session.send(:compose_image, from_hash).should be_an_instance_of Imgurapi::Image
|
88
|
+
@session.send(:compose_image, from_hash).links.should be_an_instance_of Imgurapi::Links
|
89
89
|
end
|
90
90
|
|
91
91
|
end
|
@@ -94,7 +94,7 @@ describe Imgur do
|
|
94
94
|
|
95
95
|
before(:all) do
|
96
96
|
credentials = read_credentials_file
|
97
|
-
@session =
|
97
|
+
@session = Imgurapi::Session.new(credentials)
|
98
98
|
@upload_path, @upload_file = my_sample_image
|
99
99
|
end
|
100
100
|
|
@@ -111,10 +111,10 @@ describe Imgur do
|
|
111
111
|
expect { @session.upload(:not_the_expected_object) }.to raise_error
|
112
112
|
|
113
113
|
@@image_by_path = @session.upload(@upload_path) #FIXME I know this is horrible, but I need to share the same image between tests http://brentlavelle.wordpress.com/2011/04/04/rspec-and-instance-variables/
|
114
|
-
@@image_by_path.should be_an_instance_of
|
114
|
+
@@image_by_path.should be_an_instance_of Imgurapi::Image
|
115
115
|
|
116
116
|
@@image_by_file = @session.upload(@upload_file)
|
117
|
-
@@image_by_file.should be_an_instance_of
|
117
|
+
@@image_by_file.should be_an_instance_of Imgurapi::Image
|
118
118
|
end
|
119
119
|
|
120
120
|
it 'should retrieve the image' do
|
@@ -125,7 +125,7 @@ describe Imgur do
|
|
125
125
|
image.should be_nil
|
126
126
|
|
127
127
|
image = @session.find(@@image_by_path.hash)
|
128
|
-
image.should be_an_instance_of
|
128
|
+
image.should be_an_instance_of Imgurapi::Image
|
129
129
|
|
130
130
|
image.hash.should eq(@@image_by_path.hash)
|
131
131
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imgurapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Cruz Horts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -61,22 +61,22 @@ files:
|
|
61
61
|
- LICENSE.txt
|
62
62
|
- README.md
|
63
63
|
- Rakefile
|
64
|
-
- lib/
|
65
|
-
- lib/
|
66
|
-
- lib/
|
67
|
-
- lib/
|
68
|
-
- lib/
|
69
|
-
- lib/
|
70
|
-
- lib/
|
71
|
-
- lib/
|
72
|
-
- lib/
|
73
|
-
- lib/
|
74
|
-
- lib/
|
75
|
-
- lib/
|
76
|
-
- lib/
|
77
|
-
- lib/
|
78
|
-
- lib/
|
79
|
-
- lib/
|
64
|
+
- lib/imgurapi.rb
|
65
|
+
- lib/imgurapi/api/account.rb
|
66
|
+
- lib/imgurapi/api/base.rb
|
67
|
+
- lib/imgurapi/api/image.rb
|
68
|
+
- lib/imgurapi/communication.rb
|
69
|
+
- lib/imgurapi/extensions/array.rb
|
70
|
+
- lib/imgurapi/extensions/hash.rb
|
71
|
+
- lib/imgurapi/extensions/string.rb
|
72
|
+
- lib/imgurapi/models/account.rb
|
73
|
+
- lib/imgurapi/models/base.rb
|
74
|
+
- lib/imgurapi/models/image.rb
|
75
|
+
- lib/imgurapi/session.rb
|
76
|
+
- lib/imgurapi/tasks/railtie.rb
|
77
|
+
- lib/imgurapi/tasks/rake.rb
|
78
|
+
- lib/imgurapi/tasks/tasks.rake
|
79
|
+
- lib/imgurapi/version.rb
|
80
80
|
- spec/imgur/session_spec.rb
|
81
81
|
- spec/imgur_spec.rb
|
82
82
|
- spec/spec_helper.rb
|
data/lib/imgur/tasks/rake.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
module Imgur
|
2
|
-
|
3
|
-
module Rake
|
4
|
-
extend self
|
5
|
-
|
6
|
-
AUTHORIZE_ENDPOINT = '/oauth2/authorize'
|
7
|
-
TOKEN_ENDPOINT = '/oauth2/token'
|
8
|
-
|
9
|
-
def authorize(client_id, client_secret)
|
10
|
-
connection = Faraday.new(HOST)
|
11
|
-
|
12
|
-
puts "\nVisit this URL: #{HOST}#{AUTHORIZE_ENDPOINT}?client_id=#{client_id}&response_type=pin"
|
13
|
-
print 'And after you approved the authorization please enter your verification code: '
|
14
|
-
|
15
|
-
pin = STDIN.gets.strip
|
16
|
-
|
17
|
-
begin
|
18
|
-
response = JSON.parse connection.post(TOKEN_ENDPOINT, pin: pin, client_id: client_id, client_secret: client_secret, grant_type: 'pin').body
|
19
|
-
rescue
|
20
|
-
puts "Authorization failed.\nPlease try again."
|
21
|
-
exit
|
22
|
-
end
|
23
|
-
|
24
|
-
puts <<-MESSAGE
|
25
|
-
|
26
|
-
Authorization was successful. Use these credentials to initialize the library:
|
27
|
-
|
28
|
-
access_token: #{response['access_token']}
|
29
|
-
refresh_secret: #{response['refresh_token']}
|
30
|
-
|
31
|
-
MESSAGE
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
data/lib/imgur/version.rb
DELETED
data/lib/imgur.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# Gem dependencies
|
2
|
-
require 'faraday'
|
3
|
-
require 'json'
|
4
|
-
require 'base64'
|
5
|
-
|
6
|
-
# Some nice extensions to base classes
|
7
|
-
require 'imgur/extensions/array'
|
8
|
-
require 'imgur/extensions/hash'
|
9
|
-
require 'imgur/extensions/string'
|
10
|
-
|
11
|
-
# This gem real code
|
12
|
-
require 'imgur/version'
|
13
|
-
require 'imgur/api/base'
|
14
|
-
require 'imgur/api/account'
|
15
|
-
require 'imgur/api/image'
|
16
|
-
require 'imgur/communication'
|
17
|
-
require 'imgur/session'
|
18
|
-
require 'imgur/models/base'
|
19
|
-
require 'imgur/models/account'
|
20
|
-
require 'imgur/models/image'
|