esa 1.0.0 → 1.1.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/CHANGELOG.md +3 -0
- data/README.md +6 -0
- data/esa.gemspec +1 -0
- data/lib/esa/api_methods.rb +58 -0
- data/lib/esa/client.rb +31 -8
- data/lib/esa/errors.rb +1 -0
- data/lib/esa/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 329f57a926a65830b8354c22344a8157c1b3de43
|
4
|
+
data.tar.gz: 17a14d17d1e788b3741eb8bd3c69aea848abff7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a61640a6684988e31e0a88d9024533204243fd3777a559a64ef2540315064e98a6a47112203d59ed8ba3e84b9554462ddbfa526eb144087e0ae563007380e1ed
|
7
|
+
data.tar.gz: a8a8587f8dab6de832b47e3c1dada4f8e8a27800224adee3da4b876b6a7511b5b1fdac62ca5d7f5f686d44a29d4bc42bddf014075a36c1e025c036f6dc7cb633
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 1.1.0 (2015-10-01)
|
2
|
+
- [Enable to Upload Attachment by fukayatsu · Pull Request #13 · esaio/esa-ruby](https://github.com/esaio/esa-ruby/pull/13)
|
3
|
+
|
1
4
|
## 1.0.0 (2015-09-25)
|
2
5
|
- Production Ready (\\( ⁰⊖⁰)/)
|
3
6
|
- [Add Stats API by fukayatsu · Pull Request #12 · esaio/esa-ruby](https://github.com/esaio/esa-ruby/pull/12)
|
data/README.md
CHANGED
@@ -74,6 +74,12 @@ client.update_comment(comment_id, body_md: 'bazbaz')
|
|
74
74
|
client.delete_comment(comment_id)
|
75
75
|
#=> DELETE /v1/teams/foobar/comments/123
|
76
76
|
|
77
|
+
|
78
|
+
# Upload Attachment(beta)
|
79
|
+
client.upload_attachment('/Users/foo/Desktop/foo.png') # Path
|
80
|
+
client.upload_attachment(File.open('/Users/foo/Desktop/foo.png')) # File
|
81
|
+
client.upload_attachment('http://example.com/foo.png') # URL
|
82
|
+
|
77
83
|
```
|
78
84
|
|
79
85
|
|
data/esa.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_runtime_dependency "faraday", "~> 0.9"
|
22
22
|
spec.add_runtime_dependency "faraday_middleware"
|
23
|
+
spec.add_runtime_dependency "mime-types", '~> 2.6'
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
24
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
26
|
spec.add_development_dependency "pry"
|
data/lib/esa/api_methods.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module Esa
|
2
2
|
module ApiMethods
|
3
|
+
HTTP_REGEX = %r{^https?://}
|
4
|
+
|
3
5
|
def teams(params = nil, headers = nil)
|
4
6
|
send_get("/v1/teams", params, headers)
|
5
7
|
end
|
@@ -52,6 +54,33 @@ module Esa
|
|
52
54
|
send_delete("/v1/teams/#{current_team!}/comments/#{comment_id}", params, headers)
|
53
55
|
end
|
54
56
|
|
57
|
+
class PathStringIO < StringIO
|
58
|
+
attr_accessor :path
|
59
|
+
|
60
|
+
def initialize(*args)
|
61
|
+
super(*args[1..-1])
|
62
|
+
@path = args[0]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# beta
|
67
|
+
def upload_attachment(path_or_file_or_url, params = {}, headers = nil)
|
68
|
+
file = file_from(path_or_file_or_url)
|
69
|
+
setup_params_for_upload(params, file)
|
70
|
+
|
71
|
+
response = send_post("/v1/teams/#{current_team!}/attachments/policies", params, headers)
|
72
|
+
return response unless response.status == 200
|
73
|
+
|
74
|
+
attachment = response.body['attachment']
|
75
|
+
form_data = response.body['form'].merge(file: Faraday::UploadIO.new(file, params[:type]))
|
76
|
+
|
77
|
+
s3_response = send_s3_request(:post, attachment['endpoint'], form_data)
|
78
|
+
return s3_response unless s3_response.status == 204
|
79
|
+
|
80
|
+
response.body.delete('form')
|
81
|
+
response
|
82
|
+
end
|
83
|
+
|
55
84
|
private
|
56
85
|
|
57
86
|
def wrap(params, envelope)
|
@@ -60,5 +89,34 @@ module Esa
|
|
60
89
|
return params if params.has_key?(envelope.to_sym) || params.has_key?(envelope.to_s)
|
61
90
|
{ envelope => params }
|
62
91
|
end
|
92
|
+
|
93
|
+
def content_type_from_file(file)
|
94
|
+
require 'mime/types'
|
95
|
+
if mime_type = MIME::Types.type_for(file.path).first
|
96
|
+
mime_type.content_type
|
97
|
+
end
|
98
|
+
rescue LoadError
|
99
|
+
msg = 'Please pass content_type or install mime-types gem to guess content type from file'
|
100
|
+
raise MissingContentTypeErrork, msg
|
101
|
+
end
|
102
|
+
|
103
|
+
def file_from(path_or_file_or_url)
|
104
|
+
if path_or_file_or_url.respond_to?(:read)
|
105
|
+
path_or_file_or_url
|
106
|
+
elsif path_or_file_or_url.is_a?(String) && HTTP_REGEX.match(path_or_file_or_url)
|
107
|
+
remote_url = path_or_file_or_url
|
108
|
+
response = send_simple_request(:get, remote_url)
|
109
|
+
PathStringIO.new(File.basename(remote_url), response.body)
|
110
|
+
else
|
111
|
+
path = path_or_file_or_url
|
112
|
+
File.new(path, "r+b")
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def setup_params_for_upload(params, file)
|
117
|
+
params[:type] = params.delete(:content_type) || content_type_from_file(file)
|
118
|
+
params[:size] = file.size
|
119
|
+
params[:name] = File.basename(file.path)
|
120
|
+
end
|
63
121
|
end
|
64
122
|
end
|
data/lib/esa/client.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
+
require 'esa/errors'
|
1
2
|
require 'esa/api_methods'
|
2
3
|
require "esa/response"
|
3
|
-
require 'esa/errors'
|
4
4
|
|
5
5
|
module Esa
|
6
6
|
class Client
|
@@ -38,15 +38,38 @@ module Esa
|
|
38
38
|
send_request(:delete, path, params, headers)
|
39
39
|
end
|
40
40
|
|
41
|
-
def send_request(method, path, params, headers)
|
42
|
-
Esa::Response.new(
|
41
|
+
def send_request(method, path, params = nil, headers = nil)
|
42
|
+
Esa::Response.new(esa_connection.send(method, path, params, headers))
|
43
|
+
end
|
44
|
+
|
45
|
+
def send_s3_request(method, path, params = nil, headers = nil)
|
46
|
+
Esa::Response.new(s3_connection.send(method, path, params, headers))
|
47
|
+
end
|
48
|
+
|
49
|
+
def send_simple_request(method, path, params = nil, headers = nil)
|
50
|
+
Esa::Response.new(simple_connection.send(method, path, params, headers))
|
43
51
|
end
|
44
52
|
|
45
|
-
def
|
46
|
-
@
|
47
|
-
c.request
|
53
|
+
def esa_connection
|
54
|
+
@esa_connection ||= Faraday.new(faraday_options) do |c|
|
55
|
+
c.request :json
|
48
56
|
c.response :json
|
49
|
-
c.adapter
|
57
|
+
c.adapter Faraday.default_adapter
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def s3_connection
|
62
|
+
@s3_connection ||= Faraday.new do |c|
|
63
|
+
c.request :multipart
|
64
|
+
c.request :url_encoded
|
65
|
+
c.response :xml
|
66
|
+
c.adapter Faraday.default_adapter
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def simple_connection
|
71
|
+
@simple_connection ||= Faraday.new do |c|
|
72
|
+
c.adapter Faraday.default_adapter
|
50
73
|
end
|
51
74
|
end
|
52
75
|
|
@@ -55,7 +78,7 @@ module Esa
|
|
55
78
|
def faraday_options
|
56
79
|
{
|
57
80
|
url: faraday_url,
|
58
|
-
headers: faraday_headers
|
81
|
+
headers: faraday_headers
|
59
82
|
}
|
60
83
|
end
|
61
84
|
|
data/lib/esa/errors.rb
CHANGED
data/lib/esa/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: esa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fukayatsu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mime-types
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.6'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.6'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|