copilot 0.0.5 → 0.0.6
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.
- data/lib/copilot.rb +8 -8
- data/lib/copilot/facade.rb +0 -0
- data/lib/copilot/requests.rb +0 -0
- data/lib/copilot/requests/builds_for_bundle_id_request.rb +21 -12
- data/lib/copilot/requests/feedback_for_build_id_request.rb +20 -24
- data/lib/copilot/requests/internal/build_table_row.rb +60 -60
- data/lib/copilot/requests/internal/{builds_dashboard.rb → builds_page.rb} +12 -7
- data/lib/copilot/requests/internal/feedback_page.rb +15 -9
- metadata +5 -5
data/lib/copilot.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require_relative 'copilot/facade'
|
2
|
-
|
3
|
-
module CoPilot
|
4
|
-
class << self
|
5
|
-
def new(email_address, password)
|
6
|
-
Facade.new email_address, password
|
7
|
-
end
|
8
|
-
end
|
1
|
+
require_relative 'copilot/facade'
|
2
|
+
|
3
|
+
module CoPilot
|
4
|
+
class << self
|
5
|
+
def new(email_address, password)
|
6
|
+
Facade.new email_address, password
|
7
|
+
end
|
8
|
+
end
|
9
9
|
end
|
data/lib/copilot/facade.rb
CHANGED
File without changes
|
data/lib/copilot/requests.rb
CHANGED
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require_relative 'internal/build_table_row'
|
2
|
-
require_relative 'internal/
|
2
|
+
require_relative 'internal/builds_page'
|
3
3
|
|
4
4
|
module CoPilot
|
5
5
|
class BuildsForBundleIdRequest
|
@@ -10,36 +10,45 @@ module CoPilot
|
|
10
10
|
|
11
11
|
def send(bundle_id, options={})
|
12
12
|
@limit = options[:limit]
|
13
|
-
@
|
14
|
-
@
|
15
|
-
@
|
13
|
+
@since = options[:since]
|
14
|
+
@builds_page = BuildsPage.new @browser, bundle_id
|
15
|
+
@builds_page.goto
|
16
|
+
@builds_page.more_builds
|
16
17
|
@builds = []
|
17
|
-
|
18
|
+
add_builds_for_each_page
|
19
|
+
remove_duplicate_builds
|
18
20
|
strip_excess_builds
|
19
21
|
@builds
|
20
22
|
end
|
21
23
|
|
22
24
|
private
|
23
25
|
|
26
|
+
def add_builds_for_each_page
|
27
|
+
add_builds
|
28
|
+
add_builds while @builds_page.next_page && !limit_reached && !age_reached
|
29
|
+
end
|
30
|
+
|
24
31
|
def add_builds
|
25
|
-
rows = @
|
32
|
+
rows = @builds_page.builds_table_rows
|
26
33
|
@builds += rows.map { |row| BuildTableRow.new(row).to_hash }
|
27
|
-
|
34
|
+
end
|
28
35
|
|
29
|
-
|
30
|
-
|
31
|
-
next_link.click
|
32
|
-
sleep 2
|
33
|
-
add_builds
|
36
|
+
def remove_duplicate_builds
|
37
|
+
@builds.uniq! { |b| b[:id] }
|
34
38
|
end
|
35
39
|
|
36
40
|
def strip_excess_builds
|
37
41
|
@builds = @builds.first @limit if @limit
|
42
|
+
@builds.select! { |b| b[:added_date] > @since } if @since
|
38
43
|
end
|
39
44
|
|
40
45
|
def limit_reached
|
41
46
|
@limit && @builds.length >= @limit
|
42
47
|
end
|
43
48
|
|
49
|
+
def age_reached
|
50
|
+
@since && @builds.last[:added_date] > @since
|
51
|
+
end
|
52
|
+
|
44
53
|
end
|
45
54
|
end
|
@@ -9,6 +9,7 @@ module CoPilot
|
|
9
9
|
|
10
10
|
def send(build_id, options={})
|
11
11
|
@limit = options[:limit]
|
12
|
+
@since = options[:since]
|
12
13
|
@feedback = []
|
13
14
|
@feedback_page = FeedbackPage.new @browser, build_id
|
14
15
|
@feedback_page.goto
|
@@ -21,41 +22,36 @@ module CoPilot
|
|
21
22
|
|
22
23
|
def add_feedback_for_each_page
|
23
24
|
add_feedback
|
24
|
-
while @feedback_page.
|
25
|
-
@feedback_page.next_page
|
26
|
-
add_feedback
|
27
|
-
end
|
25
|
+
add_feedback while @feedback_page.next_page && !limit_reached && !age_reached
|
28
26
|
end
|
29
27
|
|
30
28
|
def add_feedback
|
31
29
|
@feedback_page.expand_details
|
32
|
-
|
33
|
-
|
34
|
-
summary_tr = pair[0]
|
35
|
-
detail_tr = pair[1]
|
36
|
-
|
37
|
-
main_feedback_table = detail_tr.table(class: 'mainfeedback')
|
38
|
-
td = main_feedback_table.tbody.tr.td
|
39
|
-
|
30
|
+
@feedback_page.each_summary_detail_pair do |summary, detail|
|
31
|
+
main_feedback_table = detail.table(class: 'mainfeedback')
|
40
32
|
@feedback << {
|
41
|
-
user:
|
42
|
-
date: Time.parse(
|
43
|
-
subject:
|
44
|
-
replies:
|
45
|
-
via:
|
46
|
-
message:
|
33
|
+
user: summary.tds[0].text,
|
34
|
+
date: Time.parse(summary.tds[1].text),
|
35
|
+
subject: summary.tds[2].text,
|
36
|
+
replies: summary.tds[3].text.to_i,
|
37
|
+
via: main_feedback_table.ps[0].text,
|
38
|
+
message: main_feedback_table.ps[1].text
|
47
39
|
}
|
48
|
-
|
49
40
|
end
|
50
41
|
end
|
51
42
|
|
52
43
|
def strip_excess_feedback
|
53
|
-
|
54
|
-
|
44
|
+
@feedback = @feedback.first @limit if @limit
|
45
|
+
@feedback.select! { |f| f[:date] > @since } if @since
|
46
|
+
end
|
47
|
+
|
48
|
+
def limit_reached
|
49
|
+
@limit && @feedback.length >= @limit
|
50
|
+
end
|
55
51
|
|
56
|
-
|
57
|
-
|
58
|
-
|
52
|
+
def age_reached
|
53
|
+
@since && @feedback.last[:date] > @since
|
54
|
+
end
|
59
55
|
|
60
56
|
def b
|
61
57
|
@browser
|
@@ -1,61 +1,61 @@
|
|
1
|
-
require 'time'
|
2
|
-
|
3
|
-
module CoPilot
|
4
|
-
class BuildTableRow
|
5
|
-
|
6
|
-
def initialize(tr)
|
7
|
-
@tr = tr
|
8
|
-
end
|
9
|
-
|
10
|
-
def build_id
|
11
|
-
@tr.id.split('/').last
|
12
|
-
end
|
13
|
-
|
14
|
-
def version
|
15
|
-
@tr[1].text
|
16
|
-
end
|
17
|
-
|
18
|
-
def added_date
|
19
|
-
Time.parse @tr[2].text
|
20
|
-
end
|
21
|
-
|
22
|
-
def built_for
|
23
|
-
@tr[3].text
|
24
|
-
end
|
25
|
-
|
26
|
-
def size
|
27
|
-
@tr[4].text
|
28
|
-
end
|
29
|
-
|
30
|
-
def sdk
|
31
|
-
@tr[5].text
|
32
|
-
end
|
33
|
-
|
34
|
-
def crashes
|
35
|
-
@tr[6].text.to_i
|
36
|
-
end
|
37
|
-
|
38
|
-
def feedback
|
39
|
-
@tr[7].text.to_i
|
40
|
-
end
|
41
|
-
|
42
|
-
def installs
|
43
|
-
@tr[8].text.to_i
|
44
|
-
end
|
45
|
-
|
46
|
-
def to_hash
|
47
|
-
{
|
48
|
-
id: build_id,
|
49
|
-
version: version,
|
50
|
-
added_date: added_date,
|
51
|
-
built_for: built_for,
|
52
|
-
size: size,
|
53
|
-
sdk: sdk,
|
54
|
-
crashes: crashes,
|
55
|
-
feedback: feedback,
|
56
|
-
installs: installs
|
57
|
-
}
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
1
|
+
require 'time'
|
2
|
+
|
3
|
+
module CoPilot
|
4
|
+
class BuildTableRow
|
5
|
+
|
6
|
+
def initialize(tr)
|
7
|
+
@tr = tr
|
8
|
+
end
|
9
|
+
|
10
|
+
def build_id
|
11
|
+
@tr.id.split('/').last
|
12
|
+
end
|
13
|
+
|
14
|
+
def version
|
15
|
+
@tr[1].text
|
16
|
+
end
|
17
|
+
|
18
|
+
def added_date
|
19
|
+
Time.parse @tr[2].text
|
20
|
+
end
|
21
|
+
|
22
|
+
def built_for
|
23
|
+
@tr[3].text
|
24
|
+
end
|
25
|
+
|
26
|
+
def size
|
27
|
+
@tr[4].text
|
28
|
+
end
|
29
|
+
|
30
|
+
def sdk
|
31
|
+
@tr[5].text
|
32
|
+
end
|
33
|
+
|
34
|
+
def crashes
|
35
|
+
@tr[6].text.to_i
|
36
|
+
end
|
37
|
+
|
38
|
+
def feedback
|
39
|
+
@tr[7].text.to_i
|
40
|
+
end
|
41
|
+
|
42
|
+
def installs
|
43
|
+
@tr[8].text.to_i
|
44
|
+
end
|
45
|
+
|
46
|
+
def to_hash
|
47
|
+
{
|
48
|
+
id: build_id,
|
49
|
+
version: version,
|
50
|
+
added_date: added_date,
|
51
|
+
built_for: built_for,
|
52
|
+
size: size,
|
53
|
+
sdk: sdk,
|
54
|
+
crashes: crashes,
|
55
|
+
feedback: feedback,
|
56
|
+
installs: installs
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
61
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module CoPilot
|
2
|
-
class
|
2
|
+
class BuildsPage
|
3
3
|
|
4
4
|
def initialize(browser, bundle_id)
|
5
5
|
@browser = browser
|
@@ -22,13 +22,11 @@ module CoPilot
|
|
22
22
|
builds_table.trs(id: /\/dashboard\/builds\/report\/\d+\//)
|
23
23
|
end
|
24
24
|
|
25
|
-
def next_page_link
|
26
|
-
builds_table.as(title: 'Next Page')[0]
|
27
|
-
end
|
28
|
-
|
29
25
|
def next_page
|
30
26
|
link = next_page_link
|
31
|
-
|
27
|
+
return false unless link
|
28
|
+
link.click
|
29
|
+
true
|
32
30
|
end
|
33
31
|
|
34
32
|
def more_builds_link
|
@@ -37,11 +35,18 @@ module CoPilot
|
|
37
35
|
|
38
36
|
def more_builds
|
39
37
|
link = more_builds_link
|
40
|
-
|
38
|
+
return unless link
|
39
|
+
link.click
|
40
|
+
sleep 2
|
41
41
|
end
|
42
42
|
|
43
43
|
private
|
44
44
|
|
45
|
+
def next_page_link
|
46
|
+
links = builds_table.as(title: 'Next Page')
|
47
|
+
links.length == 1 ? links[0] : nil
|
48
|
+
end
|
49
|
+
|
45
50
|
def header_divs
|
46
51
|
@header_divs ||= b.divs(class: 'section-header-build')
|
47
52
|
end
|
@@ -15,24 +15,30 @@ module CoPilot
|
|
15
15
|
sleep 1
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
|
20
|
-
summary_rows.to_a.each_index { |i| pairs << [summary_rows[i], detail_rows[i]] }
|
21
|
-
pairs
|
18
|
+
def each_summary_detail_pair
|
19
|
+
summary_rows.to_a.each_index { |i| yield [summary_rows[i], detail_rows[i]] }
|
22
20
|
end
|
23
21
|
|
22
|
+
def next_page
|
23
|
+
link = next_page_link
|
24
|
+
return false unless link
|
25
|
+
link.click
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
24
31
|
def next_page_link
|
25
32
|
links = b.as(title: 'Next Page')
|
26
33
|
links.length == 1 ? links[0] : nil
|
27
34
|
end
|
28
35
|
|
29
|
-
def
|
30
|
-
|
31
|
-
|
36
|
+
def summary_detail_row_pairs
|
37
|
+
pairs = []
|
38
|
+
summary_rows.to_a.each_index { |i| pairs << [summary_rows[i], detail_rows[i]] }
|
39
|
+
pairs
|
32
40
|
end
|
33
41
|
|
34
|
-
private
|
35
|
-
|
36
42
|
def summary_rows
|
37
43
|
feedback_table.trs(class: 'rowexpand')
|
38
44
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: copilot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: watir-webdriver
|
16
|
-
requirement: &
|
16
|
+
requirement: &70099948187940 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70099948187940
|
25
25
|
description:
|
26
26
|
email: matthew-github@matthewriley.name
|
27
27
|
executables: []
|
@@ -32,7 +32,7 @@ files:
|
|
32
32
|
- lib/copilot/requests/builds_for_bundle_id_request.rb
|
33
33
|
- lib/copilot/requests/feedback_for_build_id_request.rb
|
34
34
|
- lib/copilot/requests/internal/build_table_row.rb
|
35
|
-
- lib/copilot/requests/internal/
|
35
|
+
- lib/copilot/requests/internal/builds_page.rb
|
36
36
|
- lib/copilot/requests/internal/feedback_page.rb
|
37
37
|
- lib/copilot/requests.rb
|
38
38
|
- lib/copilot.rb
|