Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
b43ecca9
Commit
b43ecca9
authored
Apr 11, 2017
by
Douglas Barbosa Alexandre
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add basic representations for the Github API results
parent
fc42f3df
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
270 additions
and
0 deletions
+270
-0
lib/github/representation/base.rb
lib/github/representation/base.rb
+13
-0
lib/github/representation/branch.rb
lib/github/representation/branch.rb
+52
-0
lib/github/representation/label.rb
lib/github/representation/label.rb
+17
-0
lib/github/representation/milestone.rb
lib/github/representation/milestone.rb
+37
-0
lib/github/representation/pull_request.rb
lib/github/representation/pull_request.rb
+123
-0
lib/github/representation/repo.rb
lib/github/representation/repo.rb
+9
-0
lib/github/representation/user.rb
lib/github/representation/user.rb
+19
-0
No files found.
lib/github/representation/base.rb
0 → 100644
View file @
b43ecca9
module
Github
module
Representation
class
Base
def
initialize
(
raw
)
@raw
=
raw
end
private
attr_reader
:raw
end
end
end
lib/github/representation/branch.rb
0 → 100644
View file @
b43ecca9
module
Github
module
Representation
class
Branch
<
Representation
::
Base
attr_reader
:repository
def
initialize
(
repository
,
raw
)
@repository
=
repository
@raw
=
raw
end
def
user
raw
.
dig
(
'user'
,
'login'
)
||
'unknown'
end
def
repo
return
@repo
if
defined?
(
@repo
)
@repo
=
Github
::
Representation
::
Repo
.
new
(
raw
[
'repo'
])
if
raw
[
'repo'
].
present?
end
def
ref
raw
[
'ref'
]
end
def
sha
raw
[
'sha'
]
end
def
short_sha
Commit
.
truncate_sha
(
sha
)
end
def
exists?
branch_exists?
&&
commit_exists?
end
def
valid?
sha
.
present?
&&
ref
.
present?
end
private
def
branch_exists?
repository
.
branch_exists?
(
ref
)
end
def
commit_exists?
repository
.
branch_names_contains
(
sha
).
include?
(
ref
)
end
end
end
end
lib/github/representation/label.rb
0 → 100644
View file @
b43ecca9
module
Github
module
Representation
class
Label
<
Representation
::
Base
def
color
"#
#{
raw
[
'color'
]
}
"
end
def
title
raw
[
'name'
]
end
def
url
raw
[
'url'
]
end
end
end
end
lib/github/representation/milestone.rb
0 → 100644
View file @
b43ecca9
module
Github
module
Representation
class
Milestone
<
Representation
::
Base
def
iid
raw
[
'number'
]
end
def
title
raw
[
'title'
]
end
def
description
raw
[
'description'
]
end
def
due_date
raw
[
'due_on'
]
end
def
state
raw
[
'state'
]
==
'closed'
?
'closed'
:
'active'
end
def
url
raw
[
'url'
]
end
def
created_at
raw
[
'created_at'
]
end
def
updated_at
raw
[
'updated_at'
]
end
end
end
end
lib/github/representation/pull_request.rb
0 → 100644
View file @
b43ecca9
module
Github
module
Representation
class
PullRequest
<
Representation
::
Base
attr_reader
:project
delegate
:user
,
:repo
,
:ref
,
:sha
,
to: :source_branch
,
prefix:
true
delegate
:user
,
:exists?
,
:repo
,
:ref
,
:sha
,
:short_sha
,
to: :target_branch
,
prefix:
true
def
initialize
(
project
,
raw
)
@project
=
project
@raw
=
raw
end
def
iid
raw
[
'number'
]
end
def
title
raw
[
'title'
]
end
def
description
raw
[
'body'
]
||
''
end
def
source_project
project
end
def
source_branch_exists?
!
cross_project?
&&
source_branch
.
exists?
end
def
source_branch_name
@source_branch_name
||=
if
cross_project?
||
!
source_branch_exists?
source_branch_name_prefixed
else
source_branch_ref
end
end
def
target_project
project
end
def
target_branch_name
@target_branch_name
||=
target_branch_exists?
?
target_branch_ref
:
target_branch_name_prefixed
end
def
milestone
return
unless
raw
[
'milestone'
].
present?
@milestone
||=
Github
::
Representation
::
Milestone
.
new
(
raw
[
'milestone'
])
end
def
author
@author
||=
Github
::
Representation
::
User
.
new
(
raw
[
'user'
])
end
def
assignee
return
unless
assigned?
@assignee
||=
Github
::
Representation
::
User
.
new
(
raw
[
'assignee'
])
end
def
state
return
'merged'
if
raw
[
'state'
]
==
'closed'
&&
raw
[
'merged_at'
].
present?
return
'closed'
if
raw
[
'state'
]
==
'closed'
'opened'
end
def
url
raw
[
'url'
]
end
def
created_at
raw
[
'created_at'
]
end
def
updated_at
raw
[
'updated_at'
]
end
def
assigned?
raw
[
'assignee'
].
present?
end
def
opened?
state
==
'opened'
end
def
valid?
source_branch
.
valid?
&&
target_branch
.
valid?
end
private
def
source_branch
@source_branch
||=
Representation
::
Branch
.
new
(
project
.
repository
,
raw
[
'head'
])
end
def
source_branch_name_prefixed
"gh-
#{
target_branch_short_sha
}
/
#{
iid
}
/
#{
source_branch_user
}
/
#{
source_branch_ref
}
"
end
def
target_branch
@target_branch
||=
Representation
::
Branch
.
new
(
project
.
repository
,
raw
[
'base'
])
end
def
target_branch_name_prefixed
"gl-
#{
target_branch_short_sha
}
/
#{
iid
}
/
#{
target_branch_user
}
/
#{
target_branch_ref
}
"
end
def
cross_project?
return
true
if
source_branch_repo
.
nil?
source_branch_repo
.
id
!=
target_branch_repo
.
id
end
end
end
end
lib/github/representation/repo.rb
0 → 100644
View file @
b43ecca9
module
Github
module
Representation
class
Repo
<
Representation
::
Base
def
id
raw
[
'id'
]
end
end
end
end
lib/github/representation/user.rb
0 → 100644
View file @
b43ecca9
module
Github
module
Representation
class
User
<
Representation
::
Base
def
id
raw
[
'id'
]
end
def
email
return
@email
if
defined?
(
@email
)
@email
=
Github
::
User
.
new
(
username
).
get
.
fetch
(
'email'
,
nil
)
end
def
username
raw
[
'login'
]
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment