trav3 0.1.1 → 0.2.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/.gitignore +1 -0
- data/.rspec +1 -0
- data/.travis.yml +17 -4
- data/Gemfile +5 -8
- data/LICENSE +1 -1
- data/README.md +3 -0
- data/Rakefile +7 -7
- data/lib/trav3/get.rb +7 -5
- data/lib/trav3/headers.rb +4 -0
- data/lib/trav3/options.rb +6 -1
- data/lib/trav3/pagination.rb +6 -2
- data/lib/trav3/post.rb +7 -7
- data/lib/trav3/result.rb +14 -3
- data/lib/trav3/version.rb +1 -1
- data/lib/trav3.rb +29 -9
- data/trav3.gemspec +2 -1
- metadata +21 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83ffd60222c59e6dec4482f0dc8cf8f77084b6818522466ffc6459aa5609962a
|
4
|
+
data.tar.gz: 27bc3cd5c536d6b01214c722405f2fe443611041899cdcccb14cf1e555c04d29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99c350cc9fac49deacbfc369e04e3a671bf35e2ec4c2e015440091d929774701636131a71a78c13f783efe72ae613a0af57d0a06aa0b4c70467a681830464710
|
7
|
+
data.tar.gz: 6f765eff36c2ba82d592ee21e88bdf7609736f82b245893575a9f349b43db69f48962a6e21e0a0bb3f8b438e64f179b2c3ff9831899b86e90411d0d2480558d8
|
data/.gitignore
CHANGED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper --tty --color
|
data/.travis.yml
CHANGED
@@ -1,7 +1,20 @@
|
|
1
1
|
language: ruby
|
2
|
+
|
2
3
|
rvm:
|
3
|
-
- 2.
|
4
|
-
- 2.
|
5
|
-
- 2.
|
4
|
+
- 2.4.5
|
5
|
+
- 2.5.3
|
6
|
+
- 2.6.0
|
7
|
+
|
6
8
|
env:
|
7
|
-
|
9
|
+
global:
|
10
|
+
- CC_TEST_REPORTER_ID=bbc65a7f5858b221fbbb49617e4118dcce44703366ea64a49687214aed252cf3
|
11
|
+
|
12
|
+
before_script:
|
13
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
14
|
+
- chmod +x ./cc-test-reporter
|
15
|
+
- ./cc-test-reporter before-build
|
16
|
+
|
17
|
+
script: bundle exec rake
|
18
|
+
|
19
|
+
after_script:
|
20
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/Gemfile
CHANGED
@@ -4,14 +4,11 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in trav3.gemspec
|
6
6
|
gemspec
|
7
|
-
group :test do
|
8
|
-
gem 'simplecov'
|
9
|
-
gem 'codeclimate-test-reporter', '~> 1.0.0'
|
10
|
-
end
|
11
7
|
|
12
8
|
group :test do
|
13
|
-
gem '
|
14
|
-
gem '
|
15
|
-
gem '
|
9
|
+
gem 'simplecov', require: false, group: :test
|
10
|
+
gem 'codeclimate-test-reporter', '~> 1.0.0'
|
11
|
+
gem 'webmock', '~> 3.5'
|
12
|
+
gem 'vcr', '~> 4.0'
|
13
|
+
gem 'byebug'
|
16
14
|
end
|
17
|
-
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
[](http://badge.fury.io/rb/trav3)
|
2
2
|
[](https://travis-ci.org/danielpclark/trav3)
|
3
|
+
[](https://codeclimate.com/github/danielpclark/trav3/maintainability)
|
4
|
+
[](https://codeclimate.com/github/danielpclark/trav3/test_coverage)
|
5
|
+
[](http://www.rubydoc.info/github/danielpclark/trav3/master/Trav3/Travis)
|
3
6
|
[](https://saythanks.io/to/danielpclark)
|
4
7
|
|
5
8
|
# Trav3
|
data/Rakefile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
-
require "rake/testtask"
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
3
|
+
begin
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
9
7
|
|
10
|
-
task :default => :
|
8
|
+
task :default => :spec
|
9
|
+
rescue LoadError # no rspec available
|
10
|
+
end
|
data/lib/trav3/get.rb
CHANGED
@@ -5,20 +5,22 @@ require 'json'
|
|
5
5
|
|
6
6
|
module Trav3
|
7
7
|
module GET
|
8
|
-
def self.call(url,
|
8
|
+
def self.call(travis, url, raw_reply = false)
|
9
9
|
uri = URI(url)
|
10
10
|
req = Net::HTTP::Get.new(uri.request_uri)
|
11
|
-
headers.each_pair { |header, value|
|
11
|
+
travis.headers.each_pair { |header, value|
|
12
12
|
req[header] = value
|
13
13
|
}
|
14
14
|
http = Net::HTTP.new(uri.host, uri.port)
|
15
15
|
http.use_ssl = (uri.scheme == "https")
|
16
16
|
response = http.request(req)
|
17
17
|
|
18
|
-
if
|
19
|
-
|
18
|
+
if raw_reply
|
19
|
+
response.body
|
20
|
+
elsif Net::HTTPOK == response.code_type
|
21
|
+
Success.new(travis, response)
|
20
22
|
else
|
21
|
-
RequestError.new(response)
|
23
|
+
RequestError.new(travis, response)
|
22
24
|
end
|
23
25
|
end
|
24
26
|
end
|
data/lib/trav3/headers.rb
CHANGED
@@ -15,6 +15,8 @@ module Trav3
|
|
15
15
|
for (key, value) in args
|
16
16
|
@heads[key] = value
|
17
17
|
end
|
18
|
+
|
19
|
+
self
|
18
20
|
end
|
19
21
|
|
20
22
|
def remove(key)
|
@@ -24,6 +26,8 @@ module Trav3
|
|
24
26
|
def +(other)
|
25
27
|
raise ArgumentError, "Invalid type provided." unless other.is_a?(Headers)
|
26
28
|
@heads.merge(other.instance_variable_get(:@heads))
|
29
|
+
|
30
|
+
self
|
27
31
|
end
|
28
32
|
|
29
33
|
def to_h
|
data/lib/trav3/options.rb
CHANGED
@@ -6,7 +6,7 @@ module Trav3
|
|
6
6
|
|
7
7
|
def opts
|
8
8
|
if @opts.empty?
|
9
|
-
|
9
|
+
''
|
10
10
|
else
|
11
11
|
"?#{@opts.join('&')}"
|
12
12
|
end
|
@@ -19,6 +19,8 @@ module Trav3
|
|
19
19
|
remove(key)
|
20
20
|
@opts.push("#{key}=#{value}")
|
21
21
|
end
|
22
|
+
|
23
|
+
self
|
22
24
|
end
|
23
25
|
|
24
26
|
def remove(key)
|
@@ -29,7 +31,10 @@ module Trav3
|
|
29
31
|
|
30
32
|
def +(other)
|
31
33
|
raise ArgumentError, "Invalid type provided." unless other.is_a?(Options)
|
34
|
+
|
32
35
|
@opts += other.instance_variable_get(:@opts)
|
36
|
+
|
37
|
+
self
|
33
38
|
end
|
34
39
|
|
35
40
|
def to_s
|
data/lib/trav3/pagination.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module Trav3
|
3
3
|
class Pagination
|
4
|
-
def initialize(result)
|
4
|
+
def initialize(travis, result)
|
5
|
+
@travis = travis
|
5
6
|
@result = result
|
6
7
|
end
|
7
8
|
|
@@ -22,8 +23,11 @@ module Trav3
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def get(x)
|
25
|
-
Trav3::GET.(x)
|
26
|
+
Trav3::GET.(travis, x)
|
26
27
|
end
|
27
28
|
private :get
|
29
|
+
|
30
|
+
attr_reader :travis
|
31
|
+
private :travis
|
28
32
|
end
|
29
33
|
end
|
data/lib/trav3/post.rb
CHANGED
@@ -5,21 +5,21 @@ require 'json'
|
|
5
5
|
|
6
6
|
module Trav3
|
7
7
|
module POST
|
8
|
-
def self.call(
|
8
|
+
def self.call(travis, url, fields={})
|
9
9
|
uri = URI( url.sub(/\?.*$/, '') )
|
10
10
|
req = Net::HTTP::Post.new(uri.request_uri)
|
11
|
-
headers.each_pair { |header, value|
|
11
|
+
travis.headers.each_pair { |header, value|
|
12
12
|
req[header] = value
|
13
13
|
}
|
14
|
-
req.set_form_data(**fields)
|
14
|
+
req.set_form_data(**fields) unless fields.empty?
|
15
15
|
http = Net::HTTP.new(uri.host, uri.port)
|
16
16
|
http.use_ssl = (uri.scheme == "https")
|
17
17
|
response = http.request(req)
|
18
|
-
|
19
|
-
if Net::HTTPOK
|
20
|
-
Success.new(response)
|
18
|
+
|
19
|
+
if [Net::HTTPAccepted, Net::HTTPOK].include? response.code_type
|
20
|
+
Success.new(travis, response)
|
21
21
|
else
|
22
|
-
RequestError.new(response)
|
22
|
+
RequestError.new(travis, response)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
data/lib/trav3/result.rb
CHANGED
@@ -10,21 +10,31 @@ module Trav3
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
+
class InvalidAPIEndpoint < StandardError
|
14
|
+
def message
|
15
|
+
"The API endpoint must be either
|
16
|
+
'https://api.travis-ci.com' or
|
17
|
+
'https://api.travis-ci.org'"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
13
21
|
class Unimplemented < StandardError
|
14
22
|
def message
|
15
|
-
"
|
23
|
+
"This feature is not implemented."
|
16
24
|
end
|
17
25
|
end
|
18
26
|
|
19
27
|
class Response
|
20
28
|
extend Forwardable
|
29
|
+
attr_reader :travis
|
21
30
|
def_delegators :@json, :[], :dig, :keys, :values, :has_key?
|
22
31
|
def_delegators :@response, :code, :code_type, :uri, :message, :read_header,
|
23
32
|
:header, :value, :entity, :response, :body,
|
24
33
|
:decode_content, :msg, :reading_body, :read_body,
|
25
34
|
:http_version, :connection_close?, :connection_keep_alive?,
|
26
35
|
:initialize_http_header, :get_fields, :each_header
|
27
|
-
def initialize(response)
|
36
|
+
def initialize(travis, response)
|
37
|
+
@travis = travis
|
28
38
|
@response = response
|
29
39
|
@json = JSON.parse(response.body)
|
30
40
|
end
|
@@ -35,11 +45,12 @@ module Trav3
|
|
35
45
|
|
36
46
|
def success?; raise Unimplemented end
|
37
47
|
def failure?; raise Unimplemented end
|
48
|
+
private :travis
|
38
49
|
end
|
39
50
|
|
40
51
|
class Success < Response
|
41
52
|
def page
|
42
|
-
Trav3::Pagination.new(self)
|
53
|
+
Trav3::Pagination.new(travis, self)
|
43
54
|
end
|
44
55
|
|
45
56
|
def success?; true end
|
data/lib/trav3/version.rb
CHANGED
data/lib/trav3.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'trav3/version'
|
3
|
+
require 'trav3/pagination'
|
3
4
|
require 'trav3/options'
|
4
5
|
require 'trav3/headers'
|
5
6
|
require 'trav3/result'
|
@@ -13,12 +14,15 @@ module Trav3
|
|
13
14
|
# An abstraction for the Travis CI v3 API
|
14
15
|
#
|
15
16
|
# @author Daniel P. Clark https://6ftdan.com
|
17
|
+
# @!attribute [r] api_endpoint
|
18
|
+
# @return [String] API endpoint
|
16
19
|
# @!attribute [r] options
|
17
20
|
# @return [Options] Request options object
|
18
21
|
# @!attribute [r] headers
|
19
22
|
# @return [Headers] Request headers object
|
20
23
|
class Travis
|
21
24
|
API_ENDPOINT = API_ROOT
|
25
|
+
attr_reader :api_endpoint
|
22
26
|
attr_reader :options
|
23
27
|
attr_reader :headers
|
24
28
|
|
@@ -30,9 +34,25 @@ module Trav3
|
|
30
34
|
raise InvalidRepository unless repo.is_a?(String) and
|
31
35
|
Regexp.new(/(^\d+$)|(^\w+(?:\/|%2F){1}\w+$)/) === repo
|
32
36
|
|
37
|
+
@api_endpoint = API_ENDPOINT
|
33
38
|
@repo = repo.gsub(/\//, '%2F')
|
34
39
|
defaults(limit: 25)
|
35
|
-
h(
|
40
|
+
h('Content-Type': 'application/json')
|
41
|
+
h('Accept': 'application/json')
|
42
|
+
h('Travis-API-Version': 3)
|
43
|
+
end
|
44
|
+
|
45
|
+
# @overload api_endpoint=(endpoint)
|
46
|
+
# Set as the API endpoint
|
47
|
+
# @param endpoint [String] name for value to set
|
48
|
+
# @return [self]
|
49
|
+
def api_endpoint= endpoint
|
50
|
+
if /^https:\/\/api\.travis-ci\.(?:org|com)$/ === endpoint
|
51
|
+
@api_endpoint = endpoint
|
52
|
+
else
|
53
|
+
raise InvalidAPIEndpoint
|
54
|
+
end
|
55
|
+
self
|
36
56
|
end
|
37
57
|
|
38
58
|
# @overload defaults(key: value, ...)
|
@@ -135,7 +155,7 @@ module Trav3
|
|
135
155
|
# @param owner [String] username or github ID
|
136
156
|
# @return [Success, RequestError]
|
137
157
|
def owner(owner = username)
|
138
|
-
if /^\d+$/ === owner
|
158
|
+
if /^\d+$/ === "#{owner}"
|
139
159
|
get("#{self[]}/owner/github_id/#{owner}")
|
140
160
|
else
|
141
161
|
get("#{self[]}/owner/#{owner}")
|
@@ -281,7 +301,7 @@ module Trav3
|
|
281
301
|
# @param owner [String] username or github ID
|
282
302
|
# @return [Success, RequestError]
|
283
303
|
def repositories(owner = username)
|
284
|
-
if /^\d+$/ === owner
|
304
|
+
if /^\d+$/ === "#{owner}"
|
285
305
|
get("#{self[]}/owner/github_id/#{owner}/repos#{opts}")
|
286
306
|
else
|
287
307
|
get("#{self[]}/owner/#{owner}/repos#{opts}")
|
@@ -885,11 +905,11 @@ module Trav3
|
|
885
905
|
#
|
886
906
|
# @param id [String, Integer] the job id number
|
887
907
|
# @param option [Symbol] options for :text or :delete
|
888
|
-
# @return [Success, RequestError]
|
908
|
+
# @return [Success, String, RequestError]
|
889
909
|
def log(id, option = nil)
|
890
910
|
case option
|
891
911
|
when :text
|
892
|
-
get("#{self[]}/job/#{id}/log.txt")
|
912
|
+
get("#{self[]}/job/#{id}/log.txt", true)
|
893
913
|
when :delete
|
894
914
|
raise Unimplemented
|
895
915
|
else
|
@@ -899,7 +919,7 @@ module Trav3
|
|
899
919
|
|
900
920
|
private # @private
|
901
921
|
def [](repository = false)
|
902
|
-
[
|
922
|
+
[api_endpoint()].tap {|a| a.push("repo/#{@repo}") if repository }.join('/')
|
903
923
|
end
|
904
924
|
|
905
925
|
def repository_name
|
@@ -910,12 +930,12 @@ module Trav3
|
|
910
930
|
@options
|
911
931
|
end
|
912
932
|
|
913
|
-
def get(x)
|
914
|
-
Trav3::GET.(x,
|
933
|
+
def get(x, raw_reply = false)
|
934
|
+
Trav3::GET.(self, x, raw_reply)
|
915
935
|
end
|
916
936
|
|
917
937
|
def post(x, fields = {})
|
918
|
-
Trav3::POST.(
|
938
|
+
Trav3::POST.(self, x, fields)
|
919
939
|
end
|
920
940
|
|
921
941
|
def username
|
data/trav3.gemspec
CHANGED
@@ -26,5 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_development_dependency "bundler", "~> 1.16"
|
28
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
29
|
-
spec.add_development_dependency "
|
29
|
+
spec.add_development_dependency "rspec", "~> 3.8"
|
30
|
+
spec.add_development_dependency "factory_bot", "~> 4.11"
|
30
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trav3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel P. Clark
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -39,19 +39,33 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.8'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.8'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: factory_bot
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.11'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.11'
|
55
69
|
description: A Simple client abstraction for the Travis V3 API
|
56
70
|
email:
|
57
71
|
- 6ftdan@gmail.com
|
@@ -60,6 +74,7 @@ extensions: []
|
|
60
74
|
extra_rdoc_files: []
|
61
75
|
files:
|
62
76
|
- ".gitignore"
|
77
|
+
- ".rspec"
|
63
78
|
- ".travis.yml"
|
64
79
|
- ".yardopts"
|
65
80
|
- Gemfile
|
@@ -97,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
112
|
- !ruby/object:Gem::Version
|
98
113
|
version: '0'
|
99
114
|
requirements: []
|
100
|
-
rubygems_version: 3.0.
|
115
|
+
rubygems_version: 3.0.1
|
101
116
|
signing_key:
|
102
117
|
specification_version: 4
|
103
118
|
summary: Simple Travis V3 API Client
|