gyazo 2.1.2 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +4 -1
- data/README.md +33 -23
- data/gyazo.gemspec +5 -5
- data/lib/gyazo/client.rb +83 -42
- data/lib/gyazo/version.rb +1 -1
- data/lib/gyazo.rb +0 -5
- data/test/test_gyazo.rb +22 -9
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 26d22e358a2f7ad15e819b689f39ceb3399a2b1b1071b61dff3975943cc5b94b
|
4
|
+
data.tar.gz: 4f43bafa5994680a5ce030e48d041d2b8bbaa1abd8e15ca3fc2c21f680173d9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b461bc154522c72909a14addfc49ac5ab9c6accb5c8d0836a55141895eae3985ebb97cdf5c0e2762555e326335b0b6d4832c52f3e83cf2821675b40515e540a
|
7
|
+
data.tar.gz: d93f554481d7744d054d452fab529c2d5d7bfe0977d5cfc89b65ffb913ffba849272c63dae58ca182b14e273cd716885fe635c4734b61bf12a3b0ab513cbd372
|
data/.travis.yml
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
sudo: false
|
1
2
|
language: ruby
|
2
3
|
rvm:
|
3
|
-
- 2.
|
4
|
+
- 2.2.3
|
4
5
|
env:
|
5
6
|
secure: SKTPKUXfgOehDNdgdMxKykef1m7XswYKA72qANyqHQ3/P/9c7RcRfTSVD86wj4riT8BX5YTbNhKKQFa79HozioezF7tT5A6xF5qiJOt1sjjtMfhc0d3zqN3RVJNRpx+1+hgNpv9OQ6RrTdw3At1TjzvgdMAiJI4X8lqZ904Gu60=
|
7
|
+
install: bundle install
|
8
|
+
script: bundle exec rake test
|
data/README.md
CHANGED
@@ -2,59 +2,69 @@ Gyazo
|
|
2
2
|
=====
|
3
3
|
[Gyazo API](https://gyazo.com/api/docs) wrapper for Ruby
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
- http://github.com/masui/gyazo-ruby
|
5
|
+
- http://github.com/gyazo/gyazo-ruby
|
8
6
|
- https://rubygems.org/gems/gyazo
|
9
7
|
|
10
8
|
|
11
9
|
# Install
|
12
10
|
|
13
|
-
|
14
11
|
% gem install gyazo
|
15
12
|
|
16
|
-
|
17
13
|
# Usage
|
18
14
|
|
19
15
|
Register new application and get [ACCESS TOKEN](https://gyazo.com/oauth/applications), then
|
20
16
|
|
21
|
-
|
17
|
+
## Upload
|
22
18
|
|
23
19
|
```ruby
|
24
20
|
require 'gyazo'
|
25
|
-
|
26
|
-
|
27
|
-
res
|
28
|
-
puts res['permalink_url'] # => "http://gyazo.com/a1b2cdef345"
|
21
|
+
gyazo = Gyazo::Client.new access_token: 'your-access-token'
|
22
|
+
res = gyazo.upload imagefile: 'my_image.png'
|
23
|
+
puts res #=> {:type=>"png", :thumb_url=>"https://thumb.gyazo.com/thumb/...", :created_at=>"2019-05-03T11:57:35+0000", :image_id=>"...", :permalink_url=>"https://gyazo.com/...", :url=>"https://i.gyazo.com/....png"}
|
29
24
|
```
|
30
|
-
|
25
|
+
|
26
|
+
### passing filename
|
27
|
+
if you give io for `imagefile:`, you need `filename:`.
|
31
28
|
|
32
29
|
```ruby
|
33
|
-
|
30
|
+
gyazo.upload imagefile: File.open(image), filename: 'image.png'
|
31
|
+
```
|
34
32
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
33
|
+
### Upload with metadata
|
34
|
+
Following attributes can be set
|
35
|
+
|
36
|
+
* created_at(default: `Time.now`)
|
37
|
+
* referer_url(default: '')
|
38
|
+
* title(default: '')
|
39
|
+
* desc(default: '')
|
40
|
+
* collection_id(default: '')
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
res = gyazo.upload imagefile: 'my_image.png', created_at: Time.now, referer_url: 'https://example.com/'
|
39
44
|
```
|
40
45
|
|
41
|
-
|
46
|
+
## List
|
42
47
|
|
43
48
|
```ruby
|
44
|
-
gyazo.list.each do |image|
|
45
|
-
puts image[
|
49
|
+
gyazo.list[:images].each do |image|
|
50
|
+
puts image[:url]
|
46
51
|
end
|
47
52
|
```
|
48
53
|
|
49
|
-
|
54
|
+
## image detail
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
gyazo.image image_id: image_id
|
58
|
+
```
|
59
|
+
|
60
|
+
## Delete
|
50
61
|
|
51
62
|
```ruby
|
52
|
-
gyazo.delete image_id
|
63
|
+
gyazo.delete image_id: image_id
|
53
64
|
```
|
54
65
|
|
55
66
|
|
56
|
-
Test
|
57
|
-
----
|
67
|
+
# Test
|
58
68
|
|
59
69
|
setup
|
60
70
|
|
data/gyazo.gemspec
CHANGED
@@ -6,11 +6,11 @@ require 'gyazo/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "gyazo"
|
8
8
|
spec.version = Gyazo::VERSION
|
9
|
-
spec.authors = ["Toshiyuki Masui", "Sho Hashimoto"]
|
9
|
+
spec.authors = ["Toshiyuki Masui", "Sho Hashimoto", "Nana Kugayama"]
|
10
10
|
spec.email = ["masui@pitecan.com"]
|
11
11
|
spec.description = %q{Gyazo.com API Wrapper}
|
12
12
|
spec.summary = spec.description
|
13
|
-
spec.homepage = "http://github.com/
|
13
|
+
spec.homepage = "http://github.com/gyazo/gyazo-ruby"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/).reject{|i| i=="Gemfile.lock" }
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "minitest"
|
24
24
|
|
25
|
-
spec.add_dependency "
|
26
|
-
spec.add_dependency "
|
27
|
-
spec.add_dependency "
|
25
|
+
spec.add_dependency "faraday", '< 2.0.0'
|
26
|
+
spec.add_dependency "multipart-post"
|
27
|
+
spec.add_dependency "mime-types"
|
28
28
|
end
|
data/lib/gyazo/client.rb
CHANGED
@@ -1,57 +1,98 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
require 'json'
|
3
|
+
require 'faraday'
|
4
|
+
require 'mime/types'
|
3
5
|
|
6
|
+
module Gyazo
|
4
7
|
class Client
|
8
|
+
UploadURI = 'https://upload.gyazo.com/api/upload'
|
9
|
+
APIHost = 'https://api.gyazo.com'
|
10
|
+
attr_accessor :access_token, :user_agent
|
5
11
|
|
6
|
-
|
7
|
-
|
8
|
-
def initialize(access_token = nil)
|
12
|
+
def initialize(access_token:, user_agent: nil)
|
9
13
|
@access_token = access_token
|
10
|
-
@user_agent = "GyazoRubyGem/#{Gyazo::VERSION}"
|
14
|
+
@user_agent = user_agent || "GyazoRubyGem/#{Gyazo::VERSION}"
|
15
|
+
@conn = ::Faraday.new(url: APIHost) do |f|
|
16
|
+
f.request :url_encoded
|
17
|
+
f.adapter ::Faraday.default_adapter
|
18
|
+
end
|
11
19
|
end
|
12
|
-
|
13
|
-
def upload(imagefile,
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
:
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
|
21
|
+
def upload(imagefile:, filename: nil, created_at: ::Time.now, referer_url: '', title: '', desc: '', collection_id: '')
|
22
|
+
ensure_io_or_file_exists imagefile, filename
|
23
|
+
|
24
|
+
conn = ::Faraday.new do |f|
|
25
|
+
f.request :multipart
|
26
|
+
f.request :url_encoded
|
27
|
+
f.adapter ::Faraday.default_adapter
|
28
|
+
end
|
29
|
+
type = ::MIME::Types.type_for(filename || imagefile)[0].to_s
|
30
|
+
res = conn.post UploadURI do |req|
|
31
|
+
req.body = {
|
32
|
+
access_token: @access_token,
|
33
|
+
imagedata: ::Faraday::UploadIO.new(imagefile, type, filename),
|
34
|
+
created_at: created_at.to_i,
|
35
|
+
referer_url: referer_url.to_s,
|
36
|
+
title: title.to_s,
|
37
|
+
desc: desc.to_s,
|
38
|
+
collection_id: collection_id.to_s,
|
27
39
|
}
|
28
|
-
|
29
|
-
|
30
|
-
|
40
|
+
req.headers['User-Agent'] = @user_agent
|
41
|
+
end
|
42
|
+
raise Gyazo::Error, res.body unless res.status == 200
|
43
|
+
return ::JSON.parse res.body, symbolize_names: true
|
31
44
|
end
|
32
45
|
|
33
|
-
def list(
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
:
|
38
|
-
:
|
39
|
-
|
40
|
-
|
46
|
+
def list(page: 1, per_page: 20)
|
47
|
+
path = '/api/images'
|
48
|
+
res = @conn.get path do |req|
|
49
|
+
req.params[:access_token] = @access_token
|
50
|
+
req.params[:page] = page
|
51
|
+
req.params[:per_page] = per_page
|
52
|
+
req.headers['User-Agent'] = @user_agent
|
53
|
+
end
|
54
|
+
raise Gyazo::Error, res.body unless res.status == 200
|
55
|
+
json = ::JSON.parse res.body, symbolize_names: true
|
56
|
+
{
|
57
|
+
total_count: res.headers['X-Total-Count'],
|
58
|
+
current_page: res.headers['X-Current-Page'],
|
59
|
+
per_page: res.headers['X-Per-Page'],
|
60
|
+
user_type: res.headers['X-User-Type'],
|
61
|
+
images: json
|
41
62
|
}
|
42
|
-
raise Gyazo::Error, res.body unless res.code == 200
|
43
|
-
return JSON.parse res.body
|
44
63
|
end
|
45
64
|
|
46
|
-
def
|
47
|
-
|
48
|
-
res =
|
49
|
-
:
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
65
|
+
def image(image_id:)
|
66
|
+
path = "/api/images/#{image_id}"
|
67
|
+
res = @conn.get path do |req|
|
68
|
+
req.params[:access_token] = @access_token
|
69
|
+
req.headers['User-Agent'] = @user_agent
|
70
|
+
end
|
71
|
+
raise Gyazo::Error, res.body unless res.status == 200
|
72
|
+
return ::JSON.parse res.body, symbolize_names: true
|
73
|
+
end
|
74
|
+
|
75
|
+
def delete(image_id:)
|
76
|
+
path = "/api/images/#{image_id}"
|
77
|
+
res = @conn.delete path do |req|
|
78
|
+
req.params[:access_token] = @access_token
|
79
|
+
req.headers['User-Agent'] = @user_agent
|
80
|
+
end
|
81
|
+
raise Gyazo::Error, res.body unless res.status == 200
|
82
|
+
return ::JSON.parse res.body, symbolize_names: true
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def ensure_io_or_file_exists(file, name)
|
88
|
+
if file.respond_to?(:read) && file.respond_to?(:rewind)
|
89
|
+
if name.nil?
|
90
|
+
raise ArgumentError, "need filename: when file is io"
|
91
|
+
end
|
92
|
+
return
|
93
|
+
end
|
94
|
+
return if ::File.file? file
|
95
|
+
raise ArgumentError, "cannot find file #{file}"
|
55
96
|
end
|
56
97
|
end
|
57
98
|
end
|
data/lib/gyazo/version.rb
CHANGED
data/lib/gyazo.rb
CHANGED
data/test/test_gyazo.rb
CHANGED
@@ -1,30 +1,43 @@
|
|
1
1
|
require File.expand_path 'test_helper', File.dirname(__FILE__)
|
2
2
|
|
3
3
|
class TestGyazo < MiniTest::Test
|
4
|
+
GYAZO_REGEXP = %r{^https://gyazo\.com/[a-z\d]{32}$}
|
4
5
|
|
5
6
|
def setup
|
6
|
-
@gyazo = Gyazo::Client.new ENV['GYAZO_TOKEN']
|
7
|
+
@gyazo = Gyazo::Client.new access_token: ENV['GYAZO_TOKEN']
|
7
8
|
@imagefile = File.expand_path 'test.png', File.dirname(__FILE__)
|
8
9
|
end
|
9
10
|
|
10
11
|
def test_upload_filepath
|
11
|
-
res = @gyazo.upload @imagefile
|
12
|
-
assert res[
|
12
|
+
res = @gyazo.upload imagefile: @imagefile
|
13
|
+
assert res[:permalink_url].match GYAZO_REGEXP
|
13
14
|
end
|
14
15
|
|
15
16
|
def test_upload_file
|
16
|
-
res = @gyazo.upload File.open(@imagefile)
|
17
|
-
assert res[
|
17
|
+
res = @gyazo.upload imagefile: File.open(@imagefile), filename: 'test.png'
|
18
|
+
assert res[:permalink_url].match GYAZO_REGEXP
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_upload_with_collection_id
|
22
|
+
res = @gyazo.upload imagefile: @imagefile, collection_id: ENV['GYAZO_COLLECTION_ID']
|
23
|
+
assert res[:permalink_url].match GYAZO_REGEXP
|
18
24
|
end
|
19
25
|
|
20
26
|
def test_list
|
21
|
-
|
27
|
+
list = @gyazo.list
|
28
|
+
assert_instance_of Hash, list
|
29
|
+
assert_instance_of Array, list[:images]
|
22
30
|
end
|
23
31
|
|
24
32
|
def test_delete
|
25
|
-
res_up = @gyazo.upload @imagefile
|
26
|
-
res_del = @gyazo.delete res_up[
|
27
|
-
assert_equal res_del[
|
33
|
+
res_up = @gyazo.upload imagefile: @imagefile
|
34
|
+
res_del = @gyazo.delete image_id: res_up[:image_id]
|
35
|
+
assert_equal res_del[:image_id], res_up[:image_id]
|
28
36
|
end
|
29
37
|
|
38
|
+
def test_image
|
39
|
+
res_up = @gyazo.upload imagefile: @imagefile
|
40
|
+
res = @gyazo.image image_id: res_up[:image_id]
|
41
|
+
assert_equal res[:image_id], res_up[:image_id]
|
42
|
+
end
|
30
43
|
end
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gyazo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toshiyuki Masui
|
8
8
|
- Sho Hashimoto
|
9
|
-
|
9
|
+
- Nana Kugayama
|
10
|
+
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2022-01-04 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: bundler
|
@@ -54,21 +55,21 @@ dependencies:
|
|
54
55
|
- !ruby/object:Gem::Version
|
55
56
|
version: '0'
|
56
57
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
58
|
+
name: faraday
|
58
59
|
requirement: !ruby/object:Gem::Requirement
|
59
60
|
requirements:
|
60
|
-
- - "
|
61
|
+
- - "<"
|
61
62
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
63
|
+
version: 2.0.0
|
63
64
|
type: :runtime
|
64
65
|
prerelease: false
|
65
66
|
version_requirements: !ruby/object:Gem::Requirement
|
66
67
|
requirements:
|
67
|
-
- - "
|
68
|
+
- - "<"
|
68
69
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
70
|
+
version: 2.0.0
|
70
71
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
72
|
+
name: multipart-post
|
72
73
|
requirement: !ruby/object:Gem::Requirement
|
73
74
|
requirements:
|
74
75
|
- - ">="
|
@@ -82,7 +83,7 @@ dependencies:
|
|
82
83
|
- !ruby/object:Gem::Version
|
83
84
|
version: '0'
|
84
85
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
86
|
+
name: mime-types
|
86
87
|
requirement: !ruby/object:Gem::Requirement
|
87
88
|
requirements:
|
88
89
|
- - ">="
|
@@ -119,11 +120,11 @@ files:
|
|
119
120
|
- test/test.png
|
120
121
|
- test/test_gyazo.rb
|
121
122
|
- test/test_helper.rb
|
122
|
-
homepage: http://github.com/
|
123
|
+
homepage: http://github.com/gyazo/gyazo-ruby
|
123
124
|
licenses:
|
124
125
|
- MIT
|
125
126
|
metadata: {}
|
126
|
-
post_install_message:
|
127
|
+
post_install_message:
|
127
128
|
rdoc_options: []
|
128
129
|
require_paths:
|
129
130
|
- lib
|
@@ -138,9 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
139
|
- !ruby/object:Gem::Version
|
139
140
|
version: '0'
|
140
141
|
requirements: []
|
141
|
-
|
142
|
-
|
143
|
-
signing_key:
|
142
|
+
rubygems_version: 3.2.32
|
143
|
+
signing_key:
|
144
144
|
specification_version: 4
|
145
145
|
summary: Gyazo.com API Wrapper
|
146
146
|
test_files:
|