Skip to content

Commit 60643e3

Browse files
committed
upgrade GitHub to use newest HTTP
1 parent 1fb50bb commit 60643e3

File tree

16 files changed

+62
-224
lines changed

16 files changed

+62
-224
lines changed

.travis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ addons:
1111
- hdf5-tools
1212

1313
sudo: false
14-
#script:
15-
# - if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
16-
# - julia -e 'Pkg.clone(pwd()); Pkg.build("GitHub"); Pkg.test("GitHub"; coverage=true)';
14+
script:
15+
- if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
16+
- julia -e 'Pkg.clone(pwd()); Pkg.build("GitHub"); Pkg.checkout("HTTP"); Pkg.test("GitHub"; coverage=true)';
1717
after_success:
1818
- julia -e 'cd(Pkg.dir("GitHub")); Pkg.add("Coverage"); using Coverage; Coveralls.submit(Coveralls.process_folder())'

REQUIRE

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@ julia 0.6
33
JSON
44
MbedTLS
55
HTTP 0.5.4
6-
HttpCommon # for deprecations

src/GitHub.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ const ?{T} = Union{T, Nothing}
1616

1717
import HTTP,
1818
JSON,
19-
MbedTLS,
20-
HttpCommon # for deprecations
19+
MbedTLS
2120

2221
#############
2322
# Utilities #

src/activity/events.jl

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ end
3535
# Validation Functions #
3636
########################
3737

38-
has_event_header(request::HTTP.Request) = haskey(HTTP.headers(request), "X-Github-Event")
39-
event_header(request::HTTP.Request) = HTTP.headers(request)["X-Github-Event"]
38+
has_event_header(request::HTTP.Request) = HTTP.hasheader(request, "X-Github-Event")
39+
event_header(request::HTTP.Request) = HTTP.header(request, "X-Github-Event")
4040

41-
has_sig_header(request::HTTP.Request) = haskey(HTTP.headers(request), "X-Hub-Signature")
42-
sig_header(request::HTTP.Request) = HTTP.headers(request)["X-Hub-Signature"]
41+
has_sig_header(request::HTTP.Request) = HTTP.hasheader(request, "X-Hub-Signature")
42+
sig_header(request::HTTP.Request) = HTTP.header(request, "X-Hub-Signature")
4343

4444
function has_valid_secret(request::HTTP.Request, secret)
4545
if has_sig_header(request)
46-
secret_sha = "sha1="*bytes2hex(MbedTLS.digest(MbedTLS.MD_SHA1, String(request), secret))
46+
secret_sha = "sha1="*bytes2hex(MbedTLS.digest(MbedTLS.MD_SHA1, HTTP.load(request), secret))
4747
return sig_header(request) == secret_sha
4848
end
4949
return false
@@ -62,7 +62,7 @@ end
6262
#################
6363

6464
struct EventListener
65-
server::HTTP.Server
65+
server::HTTP.Servers.Server
6666
repos
6767
events
6868
function EventListener(handle; auth::Authorization = AnonymousAuth(),
@@ -76,7 +76,7 @@ struct EventListener
7676
repos = map(name, repos)
7777
end
7878

79-
server = HTTP.Server() do request, response
79+
server = HTTP.Servers.Server() do request, response
8080
try
8181
handle_event_request(request, handle; auth = auth,
8282
secret = secret, events = events,
@@ -98,17 +98,17 @@ function handle_event_request(request, handle;
9898
secret = nothing, events = nothing,
9999
repos = nothing, forwards = nothing)
100100
if !(isa(secret, Void)) && !(has_valid_secret(request, secret))
101-
return HTTP.Response(400, "invalid signature")
101+
return HTTP.Response(400)
102102
end
103103

104104
if !(isa(events, Void)) && !(is_valid_event(request, events))
105-
return HTTP.Response(204, "event ignored")
105+
return HTTP.Response(204)
106106
end
107107

108-
event = event_from_payload!(event_header(request), JSON.parse(String(request)))
108+
event = event_from_payload!(event_header(request), JSON.parse(HTTP.load(request)))
109109

110110
if !(isa(repos, Void)) && !(from_valid_repo(event, repos))
111-
return HTTP.Response(400, "invalid repo")
111+
return HTTP.Response(400)
112112
end
113113

114114
if !(isa(forwards, Void))
@@ -117,14 +117,7 @@ function handle_event_request(request, handle;
117117
end
118118
end
119119

120-
retval = handle(event)
121-
if retval isa HttpCommon.Response
122-
Base.depwarn("event handlers should return an `HTTP.Response` instead of an `HttpCommon.Response`,
123-
making a best effort to convert to an `HTTP.Response`", :handle_event_request)
124-
retval = HTTP.Response(; status = retval.status, headers = convert(Dict{String, String}, retval.headers),
125-
body = HTTP.FIFOBuffer(retval.data))
126-
end
127-
return retval
120+
return handle(event)
128121
end
129122

130123
function Base.run(listener, args...; host = nothing, port = nothing, kwargs...)
@@ -138,7 +131,7 @@ function Base.run(listener::EventListener, host::HTTP.IPAddr, port::Int, args...
138131
println("Listening for GitHub events sent to $port;")
139132
println("Whitelisted events: $(isa(listener.events, Void) ? "All" : listener.events)")
140133
println("Whitelisted repos: $(isa(listener.repos, Void) ? "All" : listener.repos)")
141-
return HTTP.serve(listener.server, host, port, args...; kwargs...)
134+
return HTTP.Servers.serve(listener.server, host, port, args...; kwargs...)
142135
end
143136

144137
###################

src/apps/installations.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ end
2424
headers["Accept"] = "application/vnd.github.machine-man-preview+json"
2525
results, page_data = github_paged_get(api, "/installation/repositories";
2626
headers=headers, options...)
27-
mapreduce(x->map(Repo, JSON.parse(String(x))["repositories"]), vcat, Repo[], results), page_data
27+
mapreduce(x->map(Repo, JSON.parse(HTTP.load(x))["repositories"]), vcat, Repo[], results), page_data
2828
end

src/git/blob.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ end
99
Blob(data::Dict) = json2github(Blob, data)
1010
Blob(sha::AbstractString) = Blob(Dict("sha" => sha))
1111

12-
namefield(blob::Blob) = blob.sha
12+
name(blob::Blob) = blob.sha
1313

1414
@api_default function blob(api::GitHubAPI, repo, blob_obj; options...)
1515
result = gh_get_json(api, "/repos/$(name(repo))/git/blobs/$(name(blob_obj))"; options...)

src/git/gitcommit.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ mutable struct GitCommit <: GitHubType
1010
end
1111

1212
GitCommit(data::Dict) = json2github(GitCommit, data)
13-
namefield(gitcommit::GitCommit) = gitcommit.sha
13+
name(gitcommit::GitCommit) = gitcommit.sha
1414

1515
@api_default function gitcommit(api::GitHubAPI, repo, commit_obj; options...)
1616
result = gh_get_json(api, "/repos/$(name(repo))/git/commits/$(name(commit_obj))"; options...)

src/git/reference.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ end
66

77
Reference(data::Dict) = json2github(Reference, data)
88

9-
name(ref::Reference) = String(split(get(ref.ref), "refs/")[2])
9+
name(ref::Reference) = String(split(ref.ref, "refs/")[2])
1010

1111
@api_default function reference(api::GitHubAPI, repo, ref_obj; options...)
1212
result = gh_get_json(api, "/repos/$(name(repo))/git/refs/$(name(ref_obj))"; options...)

src/git/tag.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ mutable struct Tag <: GitHubType
99
end
1010

1111
Tag(data::Dict) = json2github(Tag, data)
12-
namefield(tag::Tag) = tag.sha
12+
name(tag::Tag) = tag.sha
1313

1414
@api_default function tag(api::GitHubAPI, repo, tag_obj; options...)
1515
result = gh_get_json(api, "/repos/$(name(repo))/git/tags/$(name(tag_obj))"; options...)

src/git/tree.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ mutable struct Tree <: GitHubType
66
end
77

88
Tree(data::Dict) = json2github(Tree, data)
9-
namefield(tree::Tree) = tree.sha
9+
name(tree::Tree) = tree.sha
1010

1111
@api_default function tree(api::GitHubAPI, repo, tree_obj; options...)
1212
result = gh_get_json(api, "/repos/$(name(repo))/git/trees/$(name(tree_obj))"; options...)

0 commit comments

Comments
 (0)