copilot 0.0.3 → 0.0.4
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/facade.rb
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
-
require 'watir'
|
2
|
-
require_relative 'requests'
|
3
|
-
|
4
|
-
module CoPilot
|
5
|
-
class Facade
|
6
|
-
|
7
|
-
def initialize(email_address, password)
|
8
|
-
@email_address = email_address
|
9
|
-
@password = password
|
10
|
-
end
|
11
|
-
|
12
|
-
def
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def browser
|
19
|
-
b = Watir::Browser.new
|
20
|
-
b.goto 'https://www.testflightapp.com/login'
|
21
|
-
b.text_field(name: 'username').set @email_address
|
22
|
-
b.text_field(name: 'password').set @password
|
23
|
-
b.button(value: /Go/).click
|
24
|
-
b
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
1
|
+
require 'watir-webdriver'
|
2
|
+
require_relative 'requests'
|
3
|
+
|
4
|
+
module CoPilot
|
5
|
+
class Facade
|
6
|
+
|
7
|
+
def initialize(email_address, password)
|
8
|
+
@email_address = email_address
|
9
|
+
@password = password
|
10
|
+
end
|
11
|
+
|
12
|
+
def builds_for_bundle_id(bundle_id, options={})
|
13
|
+
BuildsForBundleIdRequest.new(browser).send bundle_id, options
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def browser
|
19
|
+
b = Watir::Browser.new
|
20
|
+
b.goto 'https://www.testflightapp.com/login'
|
21
|
+
b.text_field(name: 'username').set @email_address
|
22
|
+
b.text_field(name: 'password').set @password
|
23
|
+
b.button(value: /Go/).click
|
24
|
+
b
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
28
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require_relative 'internal/build_table_row'
|
2
|
+
require_relative 'internal/builds_dashboard'
|
3
|
+
|
4
|
+
module CoPilot
|
5
|
+
class BuildsForBundleIdRequest
|
6
|
+
|
7
|
+
def initialize(browser)
|
8
|
+
@browser = browser
|
9
|
+
end
|
10
|
+
|
11
|
+
def send(bundle_id, options={})
|
12
|
+
@limit = options[:limit]
|
13
|
+
@builds_dashboard = BuildsDashboard.new @browser, bundle_id
|
14
|
+
@builds_dashboard.goto
|
15
|
+
@builds_dashboard.more_builds
|
16
|
+
@builds = []
|
17
|
+
add_builds
|
18
|
+
strip_excess_builds
|
19
|
+
@builds
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def add_builds
|
25
|
+
rows = @builds_dashboard.builds_table_rows
|
26
|
+
@builds += rows.map { |row| BuildTableRow.new(row).to_hash }
|
27
|
+
return if limit_reached
|
28
|
+
|
29
|
+
next_link = @builds_dashboard.next_page_link
|
30
|
+
return unless next_link
|
31
|
+
next_link.click
|
32
|
+
sleep 2
|
33
|
+
add_builds
|
34
|
+
end
|
35
|
+
|
36
|
+
def strip_excess_builds
|
37
|
+
@builds = @builds.first @limit if @limit
|
38
|
+
end
|
39
|
+
|
40
|
+
def limit_reached
|
41
|
+
@limit && @builds.length >= @limit
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module CoPilot
|
2
|
+
class BuildsDashboard
|
3
|
+
|
4
|
+
def initialize(browser, bundle_id)
|
5
|
+
@browser = browser
|
6
|
+
@bundle_id = bundle_id
|
7
|
+
end
|
8
|
+
|
9
|
+
def goto
|
10
|
+
b.goto 'https://www.testflightapp.com/dashboard/builds'
|
11
|
+
end
|
12
|
+
|
13
|
+
def header_div
|
14
|
+
@header_div ||= header_divs[bundle_index]
|
15
|
+
end
|
16
|
+
|
17
|
+
def builds_table
|
18
|
+
@builds_table ||= header_div.parent.tables[bundle_index]
|
19
|
+
end
|
20
|
+
|
21
|
+
def builds_table_rows
|
22
|
+
builds_table.trs(id: /\/dashboard\/builds\/report\/\d+\//)
|
23
|
+
end
|
24
|
+
|
25
|
+
def next_page_link
|
26
|
+
builds_table.as(title: 'Next Page')[0]
|
27
|
+
end
|
28
|
+
|
29
|
+
def next_page
|
30
|
+
link = next_page_link
|
31
|
+
link.click if link
|
32
|
+
end
|
33
|
+
|
34
|
+
def more_builds_link
|
35
|
+
builds_table.as(text: 'more')[0]
|
36
|
+
end
|
37
|
+
|
38
|
+
def more_builds
|
39
|
+
link = more_builds_link
|
40
|
+
link.click if link
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def header_divs
|
46
|
+
@header_divs ||= b.divs(class: 'section-header-build')
|
47
|
+
end
|
48
|
+
|
49
|
+
def bundle_index
|
50
|
+
@bundle_index ||= header_divs.to_a.index { |div| div.li.text == @bundle_id }
|
51
|
+
end
|
52
|
+
|
53
|
+
def b
|
54
|
+
@browser
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
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.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,8 +12,8 @@ cert_chain: []
|
|
12
12
|
date: 2013-03-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name: watir
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
15
|
+
name: watir-webdriver
|
16
|
+
requirement: &70218836405640 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,12 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
24
|
+
version_requirements: *70218836405640
|
30
25
|
description:
|
31
26
|
email: matthew-github@matthewriley.name
|
32
27
|
executables: []
|
@@ -34,9 +29,9 @@ extensions: []
|
|
34
29
|
extra_rdoc_files: []
|
35
30
|
files:
|
36
31
|
- lib/copilot/facade.rb
|
37
|
-
- lib/copilot/requests/
|
38
|
-
- lib/copilot/requests/internal/build_table.rb
|
32
|
+
- lib/copilot/requests/builds_for_bundle_id_request.rb
|
39
33
|
- lib/copilot/requests/internal/build_table_row.rb
|
34
|
+
- lib/copilot/requests/internal/builds_dashboard.rb
|
40
35
|
- lib/copilot/requests.rb
|
41
36
|
- lib/copilot.rb
|
42
37
|
homepage: http://rubygems.org/gems/copilot
|
@@ -59,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
54
|
version: '0'
|
60
55
|
requirements: []
|
61
56
|
rubyforge_project:
|
62
|
-
rubygems_version: 1.8.
|
57
|
+
rubygems_version: 1.8.15
|
63
58
|
signing_key:
|
64
59
|
specification_version: 3
|
65
60
|
summary: CoPilot is a Ruby Gem that provides a rudimentary API for TestFlight using
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require_relative 'internal/build_table'
|
2
|
-
|
3
|
-
module CoPilot
|
4
|
-
class AppWithBundleIdRequest
|
5
|
-
|
6
|
-
def initialize(browser)
|
7
|
-
@browser = browser
|
8
|
-
end
|
9
|
-
|
10
|
-
def send(bundle_id)
|
11
|
-
b.goto 'https://www.testflightapp.com/dashboard/builds'
|
12
|
-
header_divs = b.divs(class: 'section-header-build')
|
13
|
-
header_div_index = header_divs.to_a.index { |div| bundle_id(div) == bundle_id }
|
14
|
-
header_div = header_divs[header_div_index]
|
15
|
-
build_table = header_div.parent.tables[header_div_index]
|
16
|
-
build_table.a(text: 'more').click
|
17
|
-
build_app header_div, build_table
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def build_app(header_div, build_table)
|
23
|
-
app = {
|
24
|
-
bundle_id: bundle_id(header_div),
|
25
|
-
builds: []
|
26
|
-
}
|
27
|
-
bt = BuildTable.new build_table
|
28
|
-
app[:builds] = bt.builds
|
29
|
-
app
|
30
|
-
end
|
31
|
-
|
32
|
-
def bundle_id(section_build_header_div)
|
33
|
-
section_build_header_div.li.text
|
34
|
-
end
|
35
|
-
|
36
|
-
def b
|
37
|
-
@browser
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require_relative 'build_table_row'
|
2
|
-
|
3
|
-
module CoPilot
|
4
|
-
class BuildTable
|
5
|
-
|
6
|
-
def initialize(table)
|
7
|
-
@table = table
|
8
|
-
@builds = []
|
9
|
-
end
|
10
|
-
|
11
|
-
def builds
|
12
|
-
trs = @table.trs(id: /\/dashboard\/builds\/report\/\d+\//)
|
13
|
-
@builds += trs.map { |tr| BuildTableRow.new(tr).to_hash }
|
14
|
-
|
15
|
-
next_links = @table.as(title: 'Next Page')
|
16
|
-
next_link = next_links.length == 1 ? next_links[0] : nil
|
17
|
-
|
18
|
-
return @builds unless next_link
|
19
|
-
|
20
|
-
next_link.click
|
21
|
-
sleep 2
|
22
|
-
builds
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|