gyazo 2.1.2 → 3.1.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 +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:
|