discourse_imgur 0.0.1
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 +7 -0
- data/Gemfile +13 -0
- data/LICENSE.txt +22 -0
- data/README.md +3 -0
- data/Rakefile +7 -0
- data/discourse_imgur.gemspec +23 -0
- data/lib/discourse_imgur.rb +2 -0
- data/lib/discourse_imgur/engine.rb +19 -0
- data/lib/discourse_imgur/imgur.rb +31 -0
- data/lib/discourse_imgur/locale/server.cs.yml +5 -0
- data/lib/discourse_imgur/locale/server.de.yml +5 -0
- data/lib/discourse_imgur/locale/server.en.yml +5 -0
- data/lib/discourse_imgur/locale/server.es.yml +5 -0
- data/lib/discourse_imgur/locale/server.fr.yml +5 -0
- data/lib/discourse_imgur/locale/server.it.yml +5 -0
- data/lib/discourse_imgur/locale/server.nl.yml +5 -0
- data/lib/discourse_imgur/locale/server.pt.yml +5 -0
- data/lib/discourse_imgur/locale/server.sv.yml +5 -0
- data/lib/discourse_imgur/locale/server.zh_CN.yml +5 -0
- data/lib/discourse_imgur/locale/server.zh_TW.yml +5 -0
- data/lib/discourse_imgur/plugin.rb +23 -0
- data/lib/discourse_imgur/version.rb +3 -0
- data/spec/imgur_spec.rb +55 -0
- data/spec/spec_helper.rb +11 -0
- metadata +98 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 717530e929774ab425c96253db8d68b1512ff905
|
4
|
+
data.tar.gz: ea69ac8967546d9a8e6ba4fc3097bf661b7a2d82
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 117d9a099780d4ea55ced96c794adeba7d2a641c544e4d46cec91f826bfb36ea99354d20dd495922eb60426781e4ad1b8c3aebdfbd2b1382705dfe59c2964758
|
7
|
+
data.tar.gz: 9aaa1cd0005ed2e9b1363aadf4566981c18e953696b572cb8c52a83af363ccd39e5cbd50090a3e4f510395704d72714a04b03aae4e89a348155934018b09da0e
|
data/Gemfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
group :test do
|
4
|
+
gem 'rails'
|
5
|
+
gem 'rspec'
|
6
|
+
gem 'mocha'
|
7
|
+
end
|
8
|
+
|
9
|
+
# TODO: We need our own gem server
|
10
|
+
gem 'discourse_plugin', path: '../discourse_plugin'
|
11
|
+
|
12
|
+
# Specify your gem's dependencies in rails_multisite.gemspec
|
13
|
+
gemspec
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Régis Hanol
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'discourse_imgur/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "discourse_imgur"
|
8
|
+
spec.version = DiscourseImgur::VERSION
|
9
|
+
spec.authors = ["Régis Hanol"]
|
10
|
+
spec.email = ["regis@hanol.fr"]
|
11
|
+
spec.description = %q{Add support for Imgur}
|
12
|
+
spec.summary = %q{Add support for Imgur}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'discourse_imgur/plugin'
|
2
|
+
|
3
|
+
module DiscourseImgur
|
4
|
+
|
5
|
+
class Engine < Rails::Engine
|
6
|
+
|
7
|
+
engine_name 'discourse_imgur'
|
8
|
+
|
9
|
+
initializer "discourse_imgur.configure_rails_initialization" do |app|
|
10
|
+
|
11
|
+
app.config.after_initialize do
|
12
|
+
DiscoursePluginRegistry.setup(DiscourseImgur::Plugin)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
|
3
|
+
# /!\ WARNING /!\
|
4
|
+
# This plugin has been extracted from the Discourse source code and has not been tested.
|
5
|
+
# It really needs some love <3
|
6
|
+
# /!\ WARNING /!\
|
7
|
+
|
8
|
+
|
9
|
+
module Imgur
|
10
|
+
|
11
|
+
def self.store_file(file, image_info, upload_id)
|
12
|
+
raise Discourse::SiteSettingMissing.new("imgur_endpoint") if SiteSetting.imgur_endpoint.blank?
|
13
|
+
raise Discourse::SiteSettingMissing.new("imgur_client_id") if SiteSetting.imgur_client_id.blank?
|
14
|
+
|
15
|
+
@imgur_loaded = require 'imgur' unless @imgur_loaded
|
16
|
+
|
17
|
+
blob = file.read
|
18
|
+
|
19
|
+
response = RestClient.post(
|
20
|
+
SiteSetting.imgur_endpoint,
|
21
|
+
{ image: Base64.encode64(blob) },
|
22
|
+
{ 'Authorization' => "ClientID #{SiteSetting.imgur_client_id}" }
|
23
|
+
)
|
24
|
+
|
25
|
+
json = JSON.parse(response.body)['data'] rescue nil
|
26
|
+
|
27
|
+
return nil if json.blank?
|
28
|
+
return json['link']
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
cs:
|
2
|
+
site_settings:
|
3
|
+
enable_imgur: "Používat imgur pro ukládání obrázků, nehostovat obrázky lokálně"
|
4
|
+
imgur_client_id: "Přístupový klíč 'client ID' pro imgur.com - vyžadováno pro upload obrázků"
|
5
|
+
imgur_client_secret: "Přístupový klíč 'client secret' pro imgur.com - vyžadováno pro upload obrázků"
|
@@ -0,0 +1,5 @@
|
|
1
|
+
de:
|
2
|
+
site_settings:
|
3
|
+
enable_imgur: "Aktiviere die Imgur API zum Hochladen, so dass Dateien nicht lokal gehostet werden."
|
4
|
+
imgur_client_id: "Deine imgur.com Client-ID. Wird benötigt, um Bilder hochzuladen."
|
5
|
+
imgur_client_secret: "Dein imgur.com Geheimniss. Wird zur Zeit für das Hochladen der Bilder nicht benötigt, könnte aber in Zukunft benötigt werden."
|
@@ -0,0 +1,5 @@
|
|
1
|
+
en:
|
2
|
+
site_settings:
|
3
|
+
enable_imgur: "Enable imgur api for uploading, don't host files locally"
|
4
|
+
imgur_client_id: "Your imgur.com client ID, required for image upload to function"
|
5
|
+
imgur_client_secret: "Your imgur.com client secret. Not currently required for image upload to function, but may be at some point."
|
@@ -0,0 +1,5 @@
|
|
1
|
+
fr:
|
2
|
+
site_settings:
|
3
|
+
enable_imgur: "utiliser l'envoi des images avec l'API imgur, ne pas stocker les fichiers localement"
|
4
|
+
imgur_client_id: "Votre ID client imgur.com. Requis pour que l'envoi d'images fonctionne."
|
5
|
+
imgur_client_secret: "Votre secret imgur.com. Pas nécessaire pour que l'envoi d'image fonctionne, mais pourrais le devenir."
|
@@ -0,0 +1,5 @@
|
|
1
|
+
it:
|
2
|
+
site_settings:
|
3
|
+
enable_imgur: "Utilizza le api imgur per l'upload, non salvare file in locale"
|
4
|
+
imgur_client_id: "Your imgur.com client ID, required for image upload to function"
|
5
|
+
imgur_client_secret: "Your imgur.com client secret. Not currently required for image upload to function, but may be at some point."
|
@@ -0,0 +1,5 @@
|
|
1
|
+
nl:
|
2
|
+
site_settings:
|
3
|
+
enable_imgur: "Gebruik de imgur API voor uploads en sla afbeeldingen niet lokaal op"
|
4
|
+
imgur_client_id: "Je imgur.com client ID, nodig om afbeeldingen te kunnen uploaden naar imgur"
|
5
|
+
imgur_client_secret: "Je imgur.com client secret. Is nog niet nodig voor het uploaden van afbeeldingen, maar dat zou in de toekomst kunnen veranderen."
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'discourse_plugin'
|
2
|
+
|
3
|
+
# /!\ WARNING /!\
|
4
|
+
# This plugin has been extracted from the Discourse source code and has not been tested.
|
5
|
+
# It really needs some love <3
|
6
|
+
# /!\ WARNING /!\
|
7
|
+
|
8
|
+
module DiscourseImgur
|
9
|
+
|
10
|
+
class Plugin < DiscoursePlugin
|
11
|
+
|
12
|
+
def setup
|
13
|
+
# add_setting(:enable_imgur, false)
|
14
|
+
# add_setting(:imgur_client_id, '')
|
15
|
+
# add_setting(:imgur_endpoint, "https://api.imgur.com/3/image.json")
|
16
|
+
|
17
|
+
# TODO: Mix the following logic in Upload#store_file
|
18
|
+
# return Imgur.store_file(file, image_info, upload_id) if SiteSetting.enable_imgur?
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/spec/imgur_spec.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'discourse_imgur/imgur'
|
3
|
+
|
4
|
+
# /!\ WARNING /!\
|
5
|
+
# This plugin has been extracted from the Discourse source code and has not been tested.
|
6
|
+
# It really needs some love <3
|
7
|
+
# /!\ WARNING /!\
|
8
|
+
|
9
|
+
describe Imgur do
|
10
|
+
|
11
|
+
describe "store_file" do
|
12
|
+
|
13
|
+
let(:file) { Rails.root.join('app', 'assets', 'images', 'logo.png') }
|
14
|
+
let(:image_info) { FastImage.new(file) }
|
15
|
+
let(:params) { [SiteSetting.imgur_endpoint, { image: Base64.encode64(file.read) }, { 'Authorization' => "ClientID #{SiteSetting.imgur_client_id}" }] }
|
16
|
+
|
17
|
+
before(:each) do
|
18
|
+
SiteSetting.stubs(:imgur_endpoint).returns("imgur_endpoint")
|
19
|
+
SiteSetting.stubs(:imgur_client_id).returns("imgur_client_id")
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'returns the url of the Imgur upload if successful' do
|
23
|
+
json = {
|
24
|
+
data: {
|
25
|
+
id: 'fake',
|
26
|
+
link: 'http://imgur.com/fake.png',
|
27
|
+
deletehash: 'a3kaoad30'
|
28
|
+
},
|
29
|
+
success: true,
|
30
|
+
status: 200
|
31
|
+
}.to_json
|
32
|
+
|
33
|
+
response = mock
|
34
|
+
response.expects(:body).returns(json)
|
35
|
+
RestClient.expects(:post).with(*params).returns(response)
|
36
|
+
|
37
|
+
Imgur.store_file(file, image_info, 1).should == 'http://imgur.com/fake.png'
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'returns nil if the request fails' do
|
41
|
+
json = {
|
42
|
+
success: false,
|
43
|
+
status: 400
|
44
|
+
}.to_json
|
45
|
+
|
46
|
+
response = mock
|
47
|
+
response.expects(:body).returns(json)
|
48
|
+
RestClient.expects(:post).with(*params).returns(response)
|
49
|
+
|
50
|
+
Imgur.store_file(file, image_info, 1).should be_nil
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: discourse_imgur
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Régis Hanol
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Add support for Imgur
|
42
|
+
email:
|
43
|
+
- regis@hanol.fr
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- Gemfile
|
49
|
+
- LICENSE.txt
|
50
|
+
- README.md
|
51
|
+
- Rakefile
|
52
|
+
- discourse_imgur.gemspec
|
53
|
+
- lib/discourse_imgur.rb
|
54
|
+
- lib/discourse_imgur/engine.rb
|
55
|
+
- lib/discourse_imgur/imgur.rb
|
56
|
+
- lib/discourse_imgur/locale/server.cs.yml
|
57
|
+
- lib/discourse_imgur/locale/server.de.yml
|
58
|
+
- lib/discourse_imgur/locale/server.en.yml
|
59
|
+
- lib/discourse_imgur/locale/server.es.yml
|
60
|
+
- lib/discourse_imgur/locale/server.fr.yml
|
61
|
+
- lib/discourse_imgur/locale/server.it.yml
|
62
|
+
- lib/discourse_imgur/locale/server.nl.yml
|
63
|
+
- lib/discourse_imgur/locale/server.pt.yml
|
64
|
+
- lib/discourse_imgur/locale/server.sv.yml
|
65
|
+
- lib/discourse_imgur/locale/server.zh_CN.yml
|
66
|
+
- lib/discourse_imgur/locale/server.zh_TW.yml
|
67
|
+
- lib/discourse_imgur/plugin.rb
|
68
|
+
- lib/discourse_imgur/version.rb
|
69
|
+
- spec/imgur_spec.rb
|
70
|
+
- spec/spec_helper.rb
|
71
|
+
homepage: ''
|
72
|
+
licenses:
|
73
|
+
- MIT
|
74
|
+
metadata: {}
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options: []
|
77
|
+
require_paths:
|
78
|
+
- lib
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
requirements: []
|
90
|
+
rubyforge_project:
|
91
|
+
rubygems_version: 2.2.0
|
92
|
+
signing_key:
|
93
|
+
specification_version: 4
|
94
|
+
summary: Add support for Imgur
|
95
|
+
test_files:
|
96
|
+
- spec/imgur_spec.rb
|
97
|
+
- spec/spec_helper.rb
|
98
|
+
has_rdoc:
|