pingo 0.0.1.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: afa4de1631b672bc9d7c464d8657f5ba61efb4ec
4
- data.tar.gz: dfc79d9bf173e7c1dd04677a5e248db43bf1153d
3
+ metadata.gz: 0653a74b327f0f0aeee5c9878fa13d5c1c287b21
4
+ data.tar.gz: 1320b2e17ebf9dcd25279a92f154460086216c73
5
5
  SHA512:
6
- metadata.gz: ede9c4ca309e4c58c217c14dad3622ff0a1bacbe0d08769ad99462cb73ab6a16c19f28fa2fb85c0294fe46f90dce0ac43802009b6ec53bee038eb99b6bb1c0db
7
- data.tar.gz: c102e515cfa93ce1560ae5553cfd3655716dd19861e4f72092c61a9edfc30d3e7e88efd10b0699aa4639eb285d966483d8e29d43c304f58bfadadc9b4afe7b14
6
+ metadata.gz: c1315e0f8705f8d4f44423634f4feacffea2bc1301bfd421cd9d2c25b82eef931e465c4fc1510f98339bab72ad6b9ea72d796b9c104fb19e69b5d642c3053d26
7
+ data.tar.gz: 66dfd3b479a7400f6bd60350541e535f12e3d0c8c21f11703210e4f8cfb63df28a2502f65d4bddd1b97fc62940c19bf706e0e3b82d43c43b42f1d95c622e1899
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .DS_Store
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Pingo
1
+ # Pingo [![Gem Version](https://badge.fury.io/rb/pingo.svg)](http://badge.fury.io/rb/pingo) [![Code Climate](https://codeclimate.com/github/Kyuden/pingo/badges/gpa.svg)](https://codeclimate.com/github/Kyuden/pingo) [![wercker status](https://app.wercker.com/status/8fc989959ae4630aef746364c6ead94f/m/master "wercker status")](https://app.wercker.com/project/bykey/8fc989959ae4630aef746364c6ead94f)
2
2
 
3
3
  Pingo provide a scatterbrain with a `pingo` command of sounding your iphone.
4
4
 
@@ -0,0 +1,15 @@
1
+ module Pingo
2
+ class CLI < Thor
3
+ desc "[MODEL_NAME]", "Sound apple device"
4
+ long_desc <<-LONGDESC
5
+ `pingo [MODEL_NAME]` will sound your apple device.
6
+
7
+ ex) when iphone 5s
8
+ \x5> $ pingo 5s
9
+ LONGDESC
10
+
11
+ def pingo(model_name)
12
+ Pingo.run(model_name)
13
+ end
14
+ end
15
+ end
data/lib/pingo/cli.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'thor'
2
+ require 'pingo/cli/pingo'
3
+
4
+ module Pingo
5
+ class CLI < Thor
6
+ map '--version' => :version, '-v' => :version
7
+ desc :version, 'Show version'
8
+ def version
9
+ puts VERSION
10
+ end
11
+
12
+ private
13
+ def method_missing(model_name)
14
+ pingo(model_name.to_s)
15
+ end
16
+ end
17
+ end
data/lib/pingo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pingo
2
- VERSION = "0.0.1.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/pingo.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require "pingo/version"
2
- require "pingo/cli/sound"
2
+ require "pingo/cli"
3
3
  require "json"
4
4
  require "typhoeus"
5
5
 
@@ -8,80 +8,89 @@ module Pingo
8
8
  INIT_CLIENT = 'initClient'
9
9
  PLAY_SOUND = 'playSound'
10
10
 
11
- def initialize(device_name)
12
- @device_name = device_name
13
- @username = ENV['APPLE_ID']
14
- @password = ENV['APPLE_PASSWORD']
11
+ class << self
12
+ def run(model_name)
13
+ new(model_name).instance_eval do
14
+ @partition = get_partition
15
+ @device_id = get_device_id
16
+ play_sound
17
+ end
18
+ end
15
19
  end
16
20
 
17
- def self.run(device_name)
18
- new(device_name).instance_eval do
19
- @partition = get_partition
20
- @device_id = get_device_id
21
- play_sound
22
- end
21
+ def initialize(model_name)
22
+ @model_name = model_name
23
+ @username = ENV['APPLE_ID']
24
+ @password = ENV['APPLE_PASSWORD']
23
25
  end
24
26
 
25
27
  private
28
+ def get_partition
29
+ post(INIT_CLIENT).headers['X-Apple-MMe-Host']
30
+ end
26
31
 
27
- def get_partition
28
- post(INIT_CLIENT).headers['X-Apple-MMe-Host']
29
- end
30
-
31
- def get_device_id
32
- parse_device_id(post(INIT_CLIENT))
33
- end
32
+ def get_device_id
33
+ parse_device_id(post(INIT_CLIENT))
34
+ end
34
35
 
35
- def parse_device_id(data)
36
- JSON.parse(data.body)['content'].each { |params| return params["id"] if match_device?(params) }
37
- end
36
+ def parse_device_id(data)
37
+ target_content(data) ? target_content(data)["id"] : nil
38
+ end
38
39
 
39
- def match_device?(params)
40
- params['location'] && params['deviceDisplayName'] =~ /#{@device_name}$/
41
- end
40
+ def target_content(data)
41
+ @target_content ||= contents(data).find { |content| match_device?(content) }
42
+ end
42
43
 
43
- def play_sound
44
- post(PLAY_SOUND, generate_body)
45
- end
44
+ def contents(data)
45
+ JSON.parse(data.body)['content']
46
+ end
46
47
 
47
- def generate_body
48
- JSON.generate(play_sound_body)
49
- end
48
+ def match_device?(params)
49
+ params['location'] && params['deviceDisplayName'] =~ /#{@model_name}$/i
50
+ end
50
51
 
51
- def play_sound_body
52
- {
53
- clientContext: {
54
- appName: 'FindMyiPhone',
55
- appVersion: '2.0.2',
56
- shouldLocate: false,
57
- },
58
- device: @device_id,
59
- subject: "Pingo"
60
- }
61
- end
52
+ def play_sound
53
+ post(PLAY_SOUND, generate_body)
54
+ end
62
55
 
63
- def post(mode, body=nil)
64
- Typhoeus::Request.post(uri(mode), userpwd: "#{@username}:#{@password}", headers: post_headers, followlocation: true, verbose: true, maxredirs: 1, body: body)
65
- end
56
+ def generate_body
57
+ JSON.generate(play_sound_body)
58
+ end
66
59
 
67
- def post_headers
60
+ def play_sound_body
68
61
  {
69
- 'Content-Type' => 'application/json; charset=utf-8',
70
- 'X-Apple-Find-Api-Ver' => '2.0',
71
- 'X-Apple-Authscheme' => 'UserIdGuest',
72
- 'X-Apple-Realm-Support' => '1.0',
73
- 'Accept-Language' => 'en-us',
74
- 'userAgent' => 'Pingo',
75
- 'Connection' => 'keep-alive'
62
+ clientContext: {
63
+ appName: 'FindMyiPhone',
64
+ appVersion: '2.0.2',
65
+ shouldLocate: false,
66
+ },
67
+ device: @device_id,
68
+ subject: "Pingo"
76
69
  }
77
- end
70
+ end
78
71
 
79
- def uri(mode)
80
- @partition ? "https://#{@partition}/#{base_uri}/#{mode}" : "https://fmipmobile.icloud.com/#{base_uri}/#{mode}"
81
- end
72
+ def post(mode, body=nil)
73
+ Typhoeus::Request.post(uri(mode), userpwd: "#{@username}:#{@password}", headers: post_headers, followlocation: true, verbose: true, maxredirs: 1, body: body)
74
+ end
82
75
 
83
- def base_uri
84
- "fmipservice/device/#{@username}"
85
- end
76
+ def post_headers
77
+ {
78
+ 'Content-Type' => 'application/json; charset=utf-8',
79
+ 'X-Apple-Find-Api-Ver' => '2.0',
80
+ 'X-Apple-Authscheme' => 'UserIdGuest',
81
+ 'X-Apple-Realm-Support' => '1.0',
82
+ 'Accept-Language' => 'en-us',
83
+ 'userAgent' => 'Pingo',
84
+ 'Connection' => 'keep-alive'
85
+ }
86
+ end
87
+
88
+ def uri(mode)
89
+ @partition ? "https://#{@partition}/#{base_uri}/#{mode}" : "https://fmipmobile.icloud.com/#{base_uri}/#{mode}"
90
+ end
91
+
92
+ def base_uri
93
+ "fmipservice/device/#{@username}"
94
+ end
86
95
  end
87
96
  end
data/pingo.gemspec CHANGED
@@ -8,14 +8,14 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Pingo::VERSION
9
9
  spec.authors = ["Kyuden"]
10
10
  spec.email = ["msmsms.um@gmail.com"]
11
- spec.summary = %q{Write a short summary. Required.}
12
- spec.description = %q{Write a longer description. Optional.}
13
- spec.homepage = ""
11
+ spec.summary = %q{Simple CLI tool for find iphone.}
12
+ spec.description = %q{Pingo provides a simple command for sounding your iphone.}
13
+ spec.homepage = "https://github.com/Kyuden/pingo"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features|support)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_runtime_dependency "typhoeus"
@@ -23,5 +23,8 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.6"
25
25
  spec.add_development_dependency "rake"
26
+
26
27
  spec.add_development_dependency "rspec"
28
+ spec.add_development_dependency "vcr"
29
+ spec.add_development_dependency "webmock"
27
30
  end
@@ -0,0 +1,253 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://valid%40sample.com:valid_pass@p08-fmipmobile.icloud.com/fmipservice/device/valid@sample.com/initClient
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Typhoeus - https://github.com/typhoeus/typhoeus
12
+ Content-Type:
13
+ - application/json; charset=utf-8
14
+ X-Apple-Find-Api-Ver:
15
+ - '2.0'
16
+ X-Apple-Authscheme:
17
+ - UserIdGuest
18
+ X-Apple-Realm-Support:
19
+ - '1.0'
20
+ Accept-Language:
21
+ - en-us
22
+ Useragent:
23
+ - Pingo
24
+ Connection:
25
+ - keep-alive
26
+ response:
27
+ status:
28
+ code: 200
29
+ message: OK
30
+ headers:
31
+ X-Responding-Instance:
32
+ - fmipservice-20801401-nk11p08me-fmipservice014-8001-14F41
33
+ X-Request-Uuid:
34
+ - 9cf1e284-f63e-4bac-a109-3d4831755da3-initClient
35
+ X-Responding-Server:
36
+ - nk11p08me-fmipservice014_001
37
+ X-Responding-Partition:
38
+ - p08
39
+ Content-Type:
40
+ - application/json;charset=UTF-8
41
+ Transfer-Encoding:
42
+ - chunked
43
+ Vary:
44
+ - Accept-Encoding
45
+ Date:
46
+ - Mon, 15 Sep 2014 04:04:40 GMT
47
+ Server:
48
+ - Apple-iCloud
49
+ Set-Cookie:
50
+ - NSC_q08-gnjqtfswjdf=ffffffff12962f7945525d5f4f58455e445a4a422971;path=/;secure;httponly
51
+ body:
52
+ encoding: ASCII-8BIT
53
+ string: !binary |-
54
+ eyJzdGF0dXNDb2RlIjoiMjAwIiwiY29udGVudCI6W3siY2FuV2lwZUFmdGVy
55
+ TG9jayI6dHJ1ZSwicmVtb3RlV2lwZSI6bnVsbCwibG9jRm91bmRFbmFibGVk
56
+ IjpmYWxzZSwibG9jYXRpb24iOm51bGwsImRldmljZU1vZGVsIjoiRmlmdGhH
57
+ ZW4td2hpdGUiLCJyZW1vdGVMb2NrIjpudWxsLCJhY3RpdmF0aW9uTG9ja2Vk
58
+ Ijp0cnVlLCJsb2NhdGlvbkVuYWJsZWQiOnRydWUsInJhd0RldmljZU1vZGVs
59
+ IjoiaVBob25lNCwxIiwibW9kZWxEaXNwbGF5TmFtZSI6ImlQaG9uZSIsImxv
60
+ c3RNb2RlQ2FwYWJsZSI6dHJ1ZSwiaWQiOiJrMHlUSnpwZDl3bkMyU0kzdExw
61
+ SGo3b2g4VTUyU0lWMXdGdmpRNVFzNTRHQlRsMHU4M0M4Rk9IWVZOU1V6bVdW
62
+ IiwiZGV2aWNlRGlzcGxheU5hbWUiOiJpUGhvbmUgNHMiLCJkYXJrV2FrZSI6
63
+ ZmFsc2UsImxvY2F0aW9uQ2FwYWJsZSI6dHJ1ZSwibWF4TXNnQ2hhciI6MTYw
64
+ LCJuYW1lIjoi5LmF55Sw55yf5a+bIiwiYmF0dGVyeUxldmVsIjowLjAsImZl
65
+ YXR1cmVzIjp7IkNMVCI6ZmFsc2UsIkNXUCI6ZmFsc2UsIldNRyI6dHJ1ZSwi
66
+ WFJNIjpmYWxzZSwiQ0xLIjpmYWxzZSwiU05EIjp0cnVlLCJMU1QiOnRydWUs
67
+ IktFWSI6dHJ1ZSwiV0lQIjp0cnVlLCJMT0MiOnRydWUsIkxMQyI6ZmFsc2Us
68
+ Ik1TRyI6dHJ1ZSwiTE1HIjpmYWxzZSwiTENLIjp0cnVlLCJSRU0iOmZhbHNl
69
+ LCJTVlAiOmZhbHNlLCJURVUiOnRydWUsIkxLTCI6dHJ1ZSwiTEtNIjpmYWxz
70
+ ZSwiUElOIjpmYWxzZSwiS1BEIjp0cnVlfSwiZGV2aWNlQ2xhc3MiOiJpUGhv
71
+ bmUiLCJ3aXBlSW5Qcm9ncmVzcyI6ZmFsc2UsImZtbHlTaGFyZSI6ZmFsc2Us
72
+ InBhc3Njb2RlTGVuZ3RoIjo0LCJtZXNnIjpudWxsLCJpc01hYyI6ZmFsc2Us
73
+ InNuZCI6eyJzdGF0dXNDb2RlIjoiMjAwIiwiY3JlYXRlVGltZXN0YW1wIjox
74
+ Mzk0MjYzNDQ4ODI2fSwiaXNMb2NhdGluZyI6dHJ1ZSwidHJhY2tpbmdJbmZv
75
+ IjpudWxsLCJkZXZpY2VDb2xvciI6IndoaXRlIiwiYmF0dGVyeVN0YXR1cyI6
76
+ IlVua25vd24iLCJkZXZpY2VTdGF0dXMiOiIyMDMiLCJ3aXBlZFRpbWVzdGFt
77
+ cCI6bnVsbCwibG9ja2VkVGltZXN0YW1wIjpudWxsLCJtc2ciOnsic3RhdHVz
78
+ Q29kZSI6IjIwMCIsImNyZWF0ZVRpbWVzdGFtcCI6MTM5NDI2MzQ0ODgyNiwi
79
+ dXNlclRleHQiOmZhbHNlLCJwbGF5U291bmQiOnRydWV9LCJsb3N0VGltZXN0
80
+ YW1wIjoiIiwibG9zdE1vZGVFbmFibGVkIjpmYWxzZSwidGhpc0RldmljZSI6
81
+ ZmFsc2UsImxvc3REZXZpY2UiOm51bGwsInByc0lkIjpudWxsfSx7ImNhbldp
82
+ cGVBZnRlckxvY2siOmZhbHNlLCJyZW1vdGVXaXBlIjpudWxsLCJsb2NGb3Vu
83
+ ZEVuYWJsZWQiOmZhbHNlLCJsb2NhdGlvbiI6eyJ0aW1lU3RhbXAiOjE0MTA3
84
+ NDg5Njg3NTAsImxvY2F0aW9uVHlwZSI6bnVsbCwicG9zaXRpb25UeXBlIjpu
85
+ dWxsLCJob3Jpem9udGFsQWNjdXJhY3kiOjE2NS4wLCJsb2NhdGlvbkZpbmlz
86
+ aGVkIjp0cnVlLCJpc0luYWNjdXJhdGUiOmZhbHNlLCJsb25naXR1ZGUiOjEz
87
+ OS44MjA2NDQwMzY3OTQ4LCJsYXRpdHVkZSI6MzUuNzIzNjM2NzY1MjI2OCwi
88
+ aXNPbGQiOnRydWV9LCJkZXZpY2VNb2RlbCI6Ik1hY0Jvb2tBaXI1XzIiLCJy
89
+ ZW1vdGVMb2NrIjpudWxsLCJhY3RpdmF0aW9uTG9ja2VkIjpmYWxzZSwibG9j
90
+ YXRpb25FbmFibGVkIjp0cnVlLCJyYXdEZXZpY2VNb2RlbCI6Ik1hY0Jvb2tB
91
+ aXI1LDIiLCJtb2RlbERpc3BsYXlOYW1lIjoiTWFjQm9vayBBaXIiLCJsb3N0
92
+ TW9kZUNhcGFibGUiOmZhbHNlLCJpZCI6InM2VS9kTndtTU9nbEd6TklqVVZj
93
+ UFJOdVRmQ09NbWRsQXQxbEhpeEl4UWxTMzA0MnUwdmhUUT09IiwiZGV2aWNl
94
+ RGlzcGxheU5hbWUiOiJNYWNCb29rIEFpciAxM1wiIiwiZGFya1dha2UiOmZh
95
+ bHNlLCJsb2NhdGlvbkNhcGFibGUiOnRydWUsIm1heE1zZ0NoYXIiOjUwMCwi
96
+ bmFtZSI6Imt5dWRlbiDjga4gTWFjQm9vayBBaXIiLCJiYXR0ZXJ5TGV2ZWwi
97
+ OjAuMCwiZmVhdHVyZXMiOnsiQ0xUIjpmYWxzZSwiQ1dQIjpmYWxzZSwiV01H
98
+ IjpmYWxzZSwiWFJNIjpmYWxzZSwiQ0xLIjpmYWxzZSwiU05EIjp0cnVlLCJM
99
+ U1QiOmZhbHNlLCJLRVkiOnRydWUsIldJUCI6dHJ1ZSwiTE9DIjp0cnVlLCJM
100
+ TEMiOmZhbHNlLCJNU0ciOnRydWUsIkxNRyI6dHJ1ZSwiTENLIjp0cnVlLCJS
101
+ RU0iOmZhbHNlLCJTVlAiOmZhbHNlLCJURVUiOmZhbHNlLCJMS0wiOmZhbHNl
102
+ LCJMS00iOnRydWUsIlBJTiI6dHJ1ZSwiS1BEIjp0cnVlfSwiZGV2aWNlQ2xh
103
+ c3MiOiJNYWNCb29rQWlyIiwid2lwZUluUHJvZ3Jlc3MiOmZhbHNlLCJmbWx5
104
+ U2hhcmUiOmZhbHNlLCJwYXNzY29kZUxlbmd0aCI6NCwibWVzZyI6bnVsbCwi
105
+ aXNNYWMiOnRydWUsInNuZCI6bnVsbCwiaXNMb2NhdGluZyI6dHJ1ZSwidHJh
106
+ Y2tpbmdJbmZvIjpudWxsLCJkZXZpY2VDb2xvciI6bnVsbCwiYmF0dGVyeVN0
107
+ YXR1cyI6IlVua25vd24iLCJkZXZpY2VTdGF0dXMiOiIyMDMiLCJ3aXBlZFRp
108
+ bWVzdGFtcCI6bnVsbCwibG9ja2VkVGltZXN0YW1wIjpudWxsLCJtc2ciOm51
109
+ bGwsImxvc3RUaW1lc3RhbXAiOiIiLCJsb3N0TW9kZUVuYWJsZWQiOmZhbHNl
110
+ LCJ0aGlzRGV2aWNlIjpmYWxzZSwibG9zdERldmljZSI6bnVsbCwicHJzSWQi
111
+ Om51bGx9LHsiY2FuV2lwZUFmdGVyTG9jayI6ZmFsc2UsInJlbW90ZVdpcGUi
112
+ Om51bGwsImxvY0ZvdW5kRW5hYmxlZCI6ZmFsc2UsImxvY2F0aW9uIjp7InRp
113
+ bWVTdGFtcCI6MTQxMDcxNTQ5Mzc2MCwibG9jYXRpb25UeXBlIjpudWxsLCJw
114
+ b3NpdGlvblR5cGUiOm51bGwsImhvcml6b250YWxBY2N1cmFjeSI6NjUuMCwi
115
+ bG9jYXRpb25GaW5pc2hlZCI6dHJ1ZSwiaXNJbmFjY3VyYXRlIjpmYWxzZSwi
116
+ bG9uZ2l0dWRlIjoxMzkuODIwNTgwOTM3ODk2MiwibGF0aXR1ZGUiOjM1Ljcy
117
+ MzUwMTQ1MDExNzA2LCJpc09sZCI6dHJ1ZX0sImRldmljZU1vZGVsIjoiTWFj
118
+ Qm9va1BybzExXzEiLCJyZW1vdGVMb2NrIjpudWxsLCJhY3RpdmF0aW9uTG9j
119
+ a2VkIjpmYWxzZSwibG9jYXRpb25FbmFibGVkIjp0cnVlLCJyYXdEZXZpY2VN
120
+ b2RlbCI6Ik1hY0Jvb2tQcm8xMSwxIiwibW9kZWxEaXNwbGF5TmFtZSI6Ik1h
121
+ Y0Jvb2sgUHJvIiwibG9zdE1vZGVDYXBhYmxlIjpmYWxzZSwiaWQiOiI0MmhD
122
+ bTAvckVacG5ScWpMVXY0TEFocWlDTFFsQzBVNGl4ZzV0VitlUURwNjJVbXZK
123
+ Vm45a0E9PSIsImRldmljZURpc3BsYXlOYW1lIjoiTWFjQm9vayBQcm8gMTNc
124
+ IiIsImRhcmtXYWtlIjpmYWxzZSwibG9jYXRpb25DYXBhYmxlIjp0cnVlLCJt
125
+ YXhNc2dDaGFyIjo1MDAsIm5hbWUiOiLkuYXnlLDnnJ/lr5sg44GuIE1hY0Jv
126
+ b2sgUHJvIiwiYmF0dGVyeUxldmVsIjowLjAsImZlYXR1cmVzIjp7IkNMVCI6
127
+ ZmFsc2UsIkNXUCI6ZmFsc2UsIldNRyI6ZmFsc2UsIlhSTSI6ZmFsc2UsIkNM
128
+ SyI6ZmFsc2UsIlNORCI6dHJ1ZSwiTFNUIjpmYWxzZSwiS0VZIjp0cnVlLCJX
129
+ SVAiOnRydWUsIkxPQyI6dHJ1ZSwiTExDIjpmYWxzZSwiTVNHIjp0cnVlLCJM
130
+ TUciOnRydWUsIkxDSyI6dHJ1ZSwiUkVNIjpmYWxzZSwiU1ZQIjpmYWxzZSwi
131
+ VEVVIjpmYWxzZSwiTEtMIjpmYWxzZSwiTEtNIjp0cnVlLCJQSU4iOnRydWUs
132
+ IktQRCI6dHJ1ZX0sImRldmljZUNsYXNzIjoiTWFjQm9va1BybyIsIndpcGVJ
133
+ blByb2dyZXNzIjpmYWxzZSwiZm1seVNoYXJlIjpmYWxzZSwicGFzc2NvZGVM
134
+ ZW5ndGgiOjQsIm1lc2ciOm51bGwsImlzTWFjIjp0cnVlLCJzbmQiOm51bGws
135
+ ImlzTG9jYXRpbmciOnRydWUsInRyYWNraW5nSW5mbyI6bnVsbCwiZGV2aWNl
136
+ Q29sb3IiOm51bGwsImJhdHRlcnlTdGF0dXMiOiJVbmtub3duIiwiZGV2aWNl
137
+ U3RhdHVzIjoiMjAzIiwid2lwZWRUaW1lc3RhbXAiOm51bGwsImxvY2tlZFRp
138
+ bWVzdGFtcCI6bnVsbCwibXNnIjpudWxsLCJsb3N0VGltZXN0YW1wIjoiIiwi
139
+ bG9zdE1vZGVFbmFibGVkIjpmYWxzZSwidGhpc0RldmljZSI6ZmFsc2UsImxv
140
+ c3REZXZpY2UiOm51bGwsInByc0lkIjpudWxsfSx7ImNhbldpcGVBZnRlckxv
141
+ Y2siOnRydWUsInJlbW90ZVdpcGUiOm51bGwsImxvY0ZvdW5kRW5hYmxlZCI6
142
+ ZmFsc2UsImxvY2F0aW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6IlRoaXJkR2Vu
143
+ LXdoaXRlIiwicmVtb3RlTG9jayI6bnVsbCwiYWN0aXZhdGlvbkxvY2tlZCI6
144
+ ZmFsc2UsImxvY2F0aW9uRW5hYmxlZCI6dHJ1ZSwicmF3RGV2aWNlTW9kZWwi
145
+ OiJpUGFkMywxIiwibW9kZWxEaXNwbGF5TmFtZSI6ImlQYWQiLCJsb3N0TW9k
146
+ ZUNhcGFibGUiOnRydWUsImlkIjoibFQ2YXlBaE5VemVZWmFEZUdYd3RnQTlG
147
+ UnpKckVUZ0RzaEovaEtaYUwyQWs3eTVyQ0NJM3hPSFlWTlNVem1XViIsImRl
148
+ dmljZURpc3BsYXlOYW1lIjoiaVBhZCIsImRhcmtXYWtlIjpmYWxzZSwibG9j
149
+ YXRpb25DYXBhYmxlIjp0cnVlLCJtYXhNc2dDaGFyIjoxNjAsIm5hbWUiOiJr
150
+ eXV1ZGVuIOOBriBpUGFkIiwiYmF0dGVyeUxldmVsIjowLjAsImZlYXR1cmVz
151
+ Ijp7IkNMVCI6ZmFsc2UsIkNXUCI6ZmFsc2UsIldNRyI6ZmFsc2UsIlhSTSI6
152
+ ZmFsc2UsIkNMSyI6ZmFsc2UsIlNORCI6dHJ1ZSwiTFNUIjp0cnVlLCJLRVki
153
+ OnRydWUsIldJUCI6dHJ1ZSwiTE9DIjp0cnVlLCJMTEMiOmZhbHNlLCJNU0ci
154
+ OnRydWUsIkxNRyI6ZmFsc2UsIkxDSyI6dHJ1ZSwiUkVNIjpmYWxzZSwiU1ZQ
155
+ IjpmYWxzZSwiVEVVIjp0cnVlLCJMS0wiOnRydWUsIkxLTSI6ZmFsc2UsIlBJ
156
+ TiI6ZmFsc2UsIktQRCI6dHJ1ZX0sImRldmljZUNsYXNzIjoiaVBhZCIsIndp
157
+ cGVJblByb2dyZXNzIjpmYWxzZSwiZm1seVNoYXJlIjpmYWxzZSwicGFzc2Nv
158
+ ZGVMZW5ndGgiOjQsIm1lc2ciOm51bGwsImlzTWFjIjpmYWxzZSwic25kIjpu
159
+ dWxsLCJpc0xvY2F0aW5nIjp0cnVlLCJ0cmFja2luZ0luZm8iOm51bGwsImRl
160
+ dmljZUNvbG9yIjoid2hpdGUiLCJiYXR0ZXJ5U3RhdHVzIjoiVW5rbm93biIs
161
+ ImRldmljZVN0YXR1cyI6IjIwMyIsIndpcGVkVGltZXN0YW1wIjpudWxsLCJs
162
+ b2NrZWRUaW1lc3RhbXAiOm51bGwsIm1zZyI6bnVsbCwibG9zdFRpbWVzdGFt
163
+ cCI6IiIsImxvc3RNb2RlRW5hYmxlZCI6ZmFsc2UsInRoaXNEZXZpY2UiOmZh
164
+ bHNlLCJsb3N0RGV2aWNlIjpudWxsLCJwcnNJZCI6bnVsbH0seyJjYW5XaXBl
165
+ QWZ0ZXJMb2NrIjp0cnVlLCJyZW1vdGVXaXBlIjpudWxsLCJsb2NGb3VuZEVu
166
+ YWJsZWQiOmZhbHNlLCJsb2NhdGlvbiI6eyJ0aW1lU3RhbXAiOjE0MTA3MTU0
167
+ NDMyNTUsImxvY2F0aW9uVHlwZSI6bnVsbCwicG9zaXRpb25UeXBlIjoiR1BT
168
+ IiwiaG9yaXpvbnRhbEFjY3VyYWN5IjoxMC4wLCJsb2NhdGlvbkZpbmlzaGVk
169
+ Ijp0cnVlLCJpc0luYWNjdXJhdGUiOmZhbHNlLCJsb25naXR1ZGUiOjEzOS44
170
+ MjA2MDgyODI1OTIsImxhdGl0dWRlIjozNS43MjM1NjQ4MjUwNTQsImlzT2xk
171
+ Ijp0cnVlfSwiZGV2aWNlTW9kZWwiOiI1cy1lMWU0ZTMtZDdkOWQ4IiwicmVt
172
+ b3RlTG9jayI6bnVsbCwiYWN0aXZhdGlvbkxvY2tlZCI6dHJ1ZSwibG9jYXRp
173
+ b25FbmFibGVkIjp0cnVlLCJyYXdEZXZpY2VNb2RlbCI6ImlQaG9uZTYsMSIs
174
+ Im1vZGVsRGlzcGxheU5hbWUiOiJpUGhvbmUiLCJsb3N0TW9kZUNhcGFibGUi
175
+ OnRydWUsImlkIjoidGVxZGJjQkp1RHZuaGpJOWw1dVJ4dkhzMzlnOHBmelRk
176
+ aUM5LzlDWi9WNXVERTdkelkxbkQrSFlWTlNVem1XViIsImRldmljZURpc3Bs
177
+ YXlOYW1lIjoiaVBob25lIDVzIiwiZGFya1dha2UiOmZhbHNlLCJsb2NhdGlv
178
+ bkNhcGFibGUiOnRydWUsIm1heE1zZ0NoYXIiOjE2MCwibmFtZSI6IuS5heeU
179
+ sOecn+WvmyIsImJhdHRlcnlMZXZlbCI6MC4wLCJmZWF0dXJlcyI6eyJDTFQi
180
+ OmZhbHNlLCJDV1AiOmZhbHNlLCJXTUciOnRydWUsIlhSTSI6ZmFsc2UsIkNM
181
+ SyI6ZmFsc2UsIlNORCI6dHJ1ZSwiTFNUIjp0cnVlLCJLRVkiOmZhbHNlLCJX
182
+ SVAiOnRydWUsIkxPQyI6dHJ1ZSwiTExDIjpmYWxzZSwiTVNHIjp0cnVlLCJM
183
+ TUciOmZhbHNlLCJMQ0siOnRydWUsIlJFTSI6ZmFsc2UsIlNWUCI6ZmFsc2Us
184
+ IlRFVSI6dHJ1ZSwiTEtMIjpmYWxzZSwiTEtNIjpmYWxzZSwiUElOIjpmYWxz
185
+ ZSwiS1BEIjpmYWxzZX0sImRldmljZUNsYXNzIjoiaVBob25lIiwid2lwZUlu
186
+ UHJvZ3Jlc3MiOmZhbHNlLCJmbWx5U2hhcmUiOmZhbHNlLCJwYXNzY29kZUxl
187
+ bmd0aCI6NCwibWVzZyI6bnVsbCwiaXNNYWMiOmZhbHNlLCJzbmQiOnsic3Rh
188
+ dHVzQ29kZSI6IjIwMCIsImNyZWF0ZVRpbWVzdGFtcCI6MTQxMDcxNDQ3MzY4
189
+ NX0sImlzTG9jYXRpbmciOnRydWUsInRyYWNraW5nSW5mbyI6bnVsbCwiZGV2
190
+ aWNlQ29sb3IiOiJlMWU0ZTMtZDdkOWQ4IiwiYmF0dGVyeVN0YXR1cyI6IlVu
191
+ a25vd24iLCJkZXZpY2VTdGF0dXMiOiIyMDMiLCJ3aXBlZFRpbWVzdGFtcCI6
192
+ bnVsbCwibG9ja2VkVGltZXN0YW1wIjpudWxsLCJtc2ciOnsic3RhdHVzQ29k
193
+ ZSI6IjIwMCIsImNyZWF0ZVRpbWVzdGFtcCI6MTQxMDcxNDQ3MzY4NSwidXNl
194
+ clRleHQiOmZhbHNlLCJwbGF5U291bmQiOnRydWV9LCJsb3N0VGltZXN0YW1w
195
+ IjoiIiwibG9zdE1vZGVFbmFibGVkIjpmYWxzZSwidGhpc0RldmljZSI6ZmFs
196
+ c2UsImxvc3REZXZpY2UiOm51bGwsInByc0lkIjpudWxsfSx7ImNhbldpcGVB
197
+ ZnRlckxvY2siOnRydWUsInJlbW90ZVdpcGUiOm51bGwsImxvY0ZvdW5kRW5h
198
+ YmxlZCI6ZmFsc2UsImxvY2F0aW9uIjp7InRpbWVTdGFtcCI6MTQxMDcxNTQz
199
+ NDQ2MSwibG9jYXRpb25UeXBlIjpudWxsLCJwb3NpdGlvblR5cGUiOiJXaWZp
200
+ IiwiaG9yaXpvbnRhbEFjY3VyYWN5IjoxNjUuMCwibG9jYXRpb25GaW5pc2hl
201
+ ZCI6ZmFsc2UsImlzSW5hY2N1cmF0ZSI6ZmFsc2UsImxvbmdpdHVkZSI6MTM5
202
+ LjgyMDY0MzgzMDAwMDUsImxhdGl0dWRlIjozNS43MjM2NDY1NTAwMDAwNSwi
203
+ aXNPbGQiOnRydWV9LCJkZXZpY2VNb2RlbCI6ImlQYWQyXzUiLCJyZW1vdGVM
204
+ b2NrIjpudWxsLCJhY3RpdmF0aW9uTG9ja2VkIjp0cnVlLCJsb2NhdGlvbkVu
205
+ YWJsZWQiOnRydWUsInJhd0RldmljZU1vZGVsIjoiaVBhZDIsNSIsIm1vZGVs
206
+ RGlzcGxheU5hbWUiOiJpUGFkIiwibG9zdE1vZGVDYXBhYmxlIjp0cnVlLCJp
207
+ ZCI6IkwwS3orbmVpbjUrZUF1T0F6STZGNkxkNXFHSWliUXlwWXFKcjFSUmE3
208
+ MjY2ZTJZaXo3QmlrZUhZVk5TVXptV1YiLCJkZXZpY2VEaXNwbGF5TmFtZSI6
209
+ ImlQYWQgbWluaSIsImRhcmtXYWtlIjpmYWxzZSwibG9jYXRpb25DYXBhYmxl
210
+ Ijp0cnVlLCJtYXhNc2dDaGFyIjoxNjAsIm5hbWUiOiLnnJ/lr5vjga5pUGFk
211
+ IiwiYmF0dGVyeUxldmVsIjowLjAsImZlYXR1cmVzIjp7IkNMVCI6ZmFsc2Us
212
+ IkNXUCI6ZmFsc2UsIldNRyI6dHJ1ZSwiWFJNIjpmYWxzZSwiQ0xLIjpmYWxz
213
+ ZSwiU05EIjp0cnVlLCJMU1QiOnRydWUsIktFWSI6dHJ1ZSwiV0lQIjp0cnVl
214
+ LCJMT0MiOnRydWUsIkxMQyI6ZmFsc2UsIk1TRyI6dHJ1ZSwiTE1HIjpmYWxz
215
+ ZSwiTENLIjp0cnVlLCJSRU0iOmZhbHNlLCJTVlAiOmZhbHNlLCJURVUiOnRy
216
+ dWUsIkxLTCI6ZmFsc2UsIkxLTSI6ZmFsc2UsIlBJTiI6ZmFsc2UsIktQRCI6
217
+ dHJ1ZX0sImRldmljZUNsYXNzIjoiaVBhZCIsIndpcGVJblByb2dyZXNzIjpm
218
+ YWxzZSwiZm1seVNoYXJlIjpmYWxzZSwicGFzc2NvZGVMZW5ndGgiOjQsIm1l
219
+ c2ciOm51bGwsImlzTWFjIjpmYWxzZSwic25kIjpudWxsLCJpc0xvY2F0aW5n
220
+ Ijp0cnVlLCJ0cmFja2luZ0luZm8iOm51bGwsImRldmljZUNvbG9yIjpudWxs
221
+ LCJiYXR0ZXJ5U3RhdHVzIjoiVW5rbm93biIsImRldmljZVN0YXR1cyI6IjIw
222
+ MyIsIndpcGVkVGltZXN0YW1wIjpudWxsLCJsb2NrZWRUaW1lc3RhbXAiOm51
223
+ bGwsIm1zZyI6bnVsbCwibG9zdFRpbWVzdGFtcCI6IiIsImxvc3RNb2RlRW5h
224
+ YmxlZCI6ZmFsc2UsInRoaXNEZXZpY2UiOmZhbHNlLCJsb3N0RGV2aWNlIjpu
225
+ dWxsLCJwcnNJZCI6bnVsbH1dLCJhbGVydCI6bnVsbCwidXNlckluZm8iOnsi
226
+ bGFzdE5hbWUiOiLkuYXnlLAiLCJoYXNNZW1iZXJzIjpmYWxzZSwibWVtYmVy
227
+ c0luZm8iOm51bGwsImZpcnN0TmFtZSI6Iuecn+WvmyJ9LCJ1c2VyUHJlZmVy
228
+ ZW5jZXMiOnsidG91Y2hQcmVmcyI6e30sImFjdGl2YXRpb25Qcm9oaWJpdGVk
229
+ RGV2aWNlcyI6bnVsbCwiYWN0aXZhdGlvblVwZ3JhZGVFbWFpbFNlbnQiOnRy
230
+ dWUsImxhc3RVcGRhdGVkVGltZSI6MTQwNzI2MTQ3MDE1OSwiYnVpbGRlciI6
231
+ bnVsbH0sInNlcnZlckNvbnRleHQiOnsibWluVHJhY2tMb2NUaHJlc2hvbGRJ
232
+ bk10cyI6MTAwLCJwcmVmc1VwZGF0ZVRpbWUiOjE0MDcyNjE0NzAxNTksIm1h
233
+ eERldmljZUxvYWRUaW1lIjo2MDAwMCwiYXV0aFRva2VuIjoiQVFBQUFBQlVG
234
+ bVZZN1YtLUpKSXR0azc2RDNTcVFrbm9kdjQ5MTlzfiIsImNsYXNzaWNVc2Vy
235
+ IjpmYWxzZSwic2Vzc2lvbkxpZmVzcGFuIjo5MDAwMDAsImVuYWJsZU1hcFN0
236
+ YXRzIjp0cnVlLCJzZXJ2ZXJUaW1lc3RhbXAiOjE0MTA3NTM4ODA3MDgsImRl
237
+ dmljZUxvYWRTdGF0dXMiOiIyMDAiLCJpbWFnZUJhc2VVcmwiOiJodHRwczov
238
+ L3N0YXRpY2kuaWNsb3VkLmNvbSIsInByZWZlcnJlZExhbmd1YWdlIjoiamEt
239
+ anAiLCJsYXN0U2Vzc2lvbkV4dGVuc2lvblRpbWUiOm51bGwsImNsaWVudElk
240
+ IjoiWkdWMmFXTmxYekV3TmpZek1UQTVOekpmTVRReE1EYzFNemc0TURZNE9B
241
+ PT0iLCJpbmZvIjoib2dTVzI4NG1ERnB6YjdDU3M3NGtpSFJBQnZuMmlVVjVp
242
+ Q2VTMmlpbDZNUE5zNEtPeGMzamNFRmxZbXRmVk1jYSIsInRyYWNrSW5mb0Nh
243
+ Y2hlRHVyYXRpb25JblNlY3MiOjg2NDAwLCJpc0hTQSI6ZmFsc2UsInRpbWV6
244
+ b25lIjp7InR6Q3VycmVudE5hbWUiOiJQYWNpZmljIERheWxpZ2h0IFRpbWUi
245
+ LCJwcmV2aW91c1RyYW5zaXRpb24iOjEzOTQzNTkxOTk5OTksInByZXZpb3Vz
246
+ T2Zmc2V0IjotMjg4MDAwMDAsImN1cnJlbnRPZmZzZXQiOi0yNTIwMDAwMCwi
247
+ dHpOYW1lIjoiQW1lcmljYS9Mb3NfQW5nZWxlcyJ9LCJjYWxsYmFja0ludGVy
248
+ dmFsSW5NUyI6MjAwMCwiY2xvdWRVc2VyIjp0cnVlLCJ2YWxpZFJlZ2lvbiI6
249
+ dHJ1ZSwibWF4TG9jYXRpbmdUaW1lIjo5MDAwMCwicHJzSWQiOjEwNjYzMTA5
250
+ NzIsIm1hY0NvdW50IjowfX0=
251
+ http_version:
252
+ recorded_at: Mon, 15 Sep 2014 04:04:41 GMT
253
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,253 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://valid%40sample.com:valid_pass@p08-fmipmobile.icloud.com/fmipservice/device/valid@sample.com/initClient
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Typhoeus - https://github.com/typhoeus/typhoeus
12
+ Content-Type:
13
+ - application/json; charset=utf-8
14
+ X-Apple-Find-Api-Ver:
15
+ - '2.0'
16
+ X-Apple-Authscheme:
17
+ - UserIdGuest
18
+ X-Apple-Realm-Support:
19
+ - '1.0'
20
+ Accept-Language:
21
+ - en-us
22
+ Useragent:
23
+ - Pingo
24
+ Connection:
25
+ - keep-alive
26
+ response:
27
+ status:
28
+ code: 200
29
+ message: OK
30
+ headers:
31
+ X-Responding-Instance:
32
+ - fmipservice-20801404-nk11p08me-fmipservice014-8004-14F41
33
+ X-Request-Uuid:
34
+ - bb731eb9-fa07-4a4a-a470-9133f5613c13-initClient
35
+ X-Responding-Server:
36
+ - nk11p08me-fmipservice014_004
37
+ X-Responding-Partition:
38
+ - p08
39
+ Content-Type:
40
+ - application/json;charset=UTF-8
41
+ Transfer-Encoding:
42
+ - chunked
43
+ Vary:
44
+ - Accept-Encoding
45
+ Date:
46
+ - Mon, 15 Sep 2014 04:04:39 GMT
47
+ Server:
48
+ - Apple-iCloud
49
+ Set-Cookie:
50
+ - NSC_q08-gnjqtfswjdf=ffffffff12962f7945525d5f4f58455e445a4a422974;path=/;secure;httponly
51
+ body:
52
+ encoding: ASCII-8BIT
53
+ string: !binary |-
54
+ eyJzdGF0dXNDb2RlIjoiMjAwIiwiY29udGVudCI6W3siY2FuV2lwZUFmdGVy
55
+ TG9jayI6dHJ1ZSwicmVtb3RlV2lwZSI6bnVsbCwibG9jRm91bmRFbmFibGVk
56
+ IjpmYWxzZSwibG9jYXRpb24iOm51bGwsImRldmljZU1vZGVsIjoiRmlmdGhH
57
+ ZW4td2hpdGUiLCJyZW1vdGVMb2NrIjpudWxsLCJhY3RpdmF0aW9uTG9ja2Vk
58
+ Ijp0cnVlLCJsb2NhdGlvbkVuYWJsZWQiOnRydWUsInJhd0RldmljZU1vZGVs
59
+ IjoiaVBob25lNCwxIiwibW9kZWxEaXNwbGF5TmFtZSI6ImlQaG9uZSIsImxv
60
+ c3RNb2RlQ2FwYWJsZSI6dHJ1ZSwiaWQiOiJrMHlUSnpwZDl3bkMyU0kzdExw
61
+ SGo3b2g4VTUyU0lWMXdGdmpRNVFzNTRHQlRsMHU4M0M4Rk9IWVZOU1V6bVdW
62
+ IiwiZGV2aWNlRGlzcGxheU5hbWUiOiJpUGhvbmUgNHMiLCJkYXJrV2FrZSI6
63
+ ZmFsc2UsImxvY2F0aW9uQ2FwYWJsZSI6dHJ1ZSwibWF4TXNnQ2hhciI6MTYw
64
+ LCJuYW1lIjoi5LmF55Sw55yf5a+bIiwiYmF0dGVyeUxldmVsIjowLjAsImZl
65
+ YXR1cmVzIjp7IkNMVCI6ZmFsc2UsIkNXUCI6ZmFsc2UsIldNRyI6dHJ1ZSwi
66
+ WFJNIjpmYWxzZSwiQ0xLIjpmYWxzZSwiU05EIjp0cnVlLCJMU1QiOnRydWUs
67
+ IktFWSI6dHJ1ZSwiV0lQIjp0cnVlLCJMT0MiOnRydWUsIkxMQyI6ZmFsc2Us
68
+ Ik1TRyI6dHJ1ZSwiTE1HIjpmYWxzZSwiTENLIjp0cnVlLCJSRU0iOmZhbHNl
69
+ LCJTVlAiOmZhbHNlLCJURVUiOnRydWUsIkxLTCI6dHJ1ZSwiTEtNIjpmYWxz
70
+ ZSwiUElOIjpmYWxzZSwiS1BEIjp0cnVlfSwiZGV2aWNlQ2xhc3MiOiJpUGhv
71
+ bmUiLCJ3aXBlSW5Qcm9ncmVzcyI6ZmFsc2UsImZtbHlTaGFyZSI6ZmFsc2Us
72
+ InBhc3Njb2RlTGVuZ3RoIjo0LCJtZXNnIjpudWxsLCJpc01hYyI6ZmFsc2Us
73
+ InNuZCI6eyJzdGF0dXNDb2RlIjoiMjAwIiwiY3JlYXRlVGltZXN0YW1wIjox
74
+ Mzk0MjYzNDQ4ODI2fSwiaXNMb2NhdGluZyI6dHJ1ZSwidHJhY2tpbmdJbmZv
75
+ IjpudWxsLCJkZXZpY2VDb2xvciI6IndoaXRlIiwiYmF0dGVyeVN0YXR1cyI6
76
+ IlVua25vd24iLCJkZXZpY2VTdGF0dXMiOiIyMDMiLCJ3aXBlZFRpbWVzdGFt
77
+ cCI6bnVsbCwibG9ja2VkVGltZXN0YW1wIjpudWxsLCJtc2ciOnsic3RhdHVz
78
+ Q29kZSI6IjIwMCIsImNyZWF0ZVRpbWVzdGFtcCI6MTM5NDI2MzQ0ODgyNiwi
79
+ dXNlclRleHQiOmZhbHNlLCJwbGF5U291bmQiOnRydWV9LCJsb3N0VGltZXN0
80
+ YW1wIjoiIiwibG9zdE1vZGVFbmFibGVkIjpmYWxzZSwidGhpc0RldmljZSI6
81
+ ZmFsc2UsImxvc3REZXZpY2UiOm51bGwsInByc0lkIjpudWxsfSx7ImNhbldp
82
+ cGVBZnRlckxvY2siOmZhbHNlLCJyZW1vdGVXaXBlIjpudWxsLCJsb2NGb3Vu
83
+ ZEVuYWJsZWQiOmZhbHNlLCJsb2NhdGlvbiI6eyJ0aW1lU3RhbXAiOjE0MTA3
84
+ NDg5Njg3NTAsImxvY2F0aW9uVHlwZSI6bnVsbCwicG9zaXRpb25UeXBlIjpu
85
+ dWxsLCJob3Jpem9udGFsQWNjdXJhY3kiOjE2NS4wLCJsb2NhdGlvbkZpbmlz
86
+ aGVkIjp0cnVlLCJpc0luYWNjdXJhdGUiOmZhbHNlLCJsb25naXR1ZGUiOjEz
87
+ OS44MjA2NDQwMzY3OTQ4LCJsYXRpdHVkZSI6MzUuNzIzNjM2NzY1MjI2OCwi
88
+ aXNPbGQiOnRydWV9LCJkZXZpY2VNb2RlbCI6Ik1hY0Jvb2tBaXI1XzIiLCJy
89
+ ZW1vdGVMb2NrIjpudWxsLCJhY3RpdmF0aW9uTG9ja2VkIjpmYWxzZSwibG9j
90
+ YXRpb25FbmFibGVkIjp0cnVlLCJyYXdEZXZpY2VNb2RlbCI6Ik1hY0Jvb2tB
91
+ aXI1LDIiLCJtb2RlbERpc3BsYXlOYW1lIjoiTWFjQm9vayBBaXIiLCJsb3N0
92
+ TW9kZUNhcGFibGUiOmZhbHNlLCJpZCI6InM2VS9kTndtTU9nbEd6TklqVVZj
93
+ UFJOdVRmQ09NbWRsQXQxbEhpeEl4UWxTMzA0MnUwdmhUUT09IiwiZGV2aWNl
94
+ RGlzcGxheU5hbWUiOiJNYWNCb29rIEFpciAxM1wiIiwiZGFya1dha2UiOmZh
95
+ bHNlLCJsb2NhdGlvbkNhcGFibGUiOnRydWUsIm1heE1zZ0NoYXIiOjUwMCwi
96
+ bmFtZSI6Imt5dWRlbiDjga4gTWFjQm9vayBBaXIiLCJiYXR0ZXJ5TGV2ZWwi
97
+ OjAuMCwiZmVhdHVyZXMiOnsiQ0xUIjpmYWxzZSwiQ1dQIjpmYWxzZSwiV01H
98
+ IjpmYWxzZSwiWFJNIjpmYWxzZSwiQ0xLIjpmYWxzZSwiU05EIjp0cnVlLCJM
99
+ U1QiOmZhbHNlLCJLRVkiOnRydWUsIldJUCI6dHJ1ZSwiTE9DIjp0cnVlLCJM
100
+ TEMiOmZhbHNlLCJNU0ciOnRydWUsIkxNRyI6dHJ1ZSwiTENLIjp0cnVlLCJS
101
+ RU0iOmZhbHNlLCJTVlAiOmZhbHNlLCJURVUiOmZhbHNlLCJMS0wiOmZhbHNl
102
+ LCJMS00iOnRydWUsIlBJTiI6dHJ1ZSwiS1BEIjp0cnVlfSwiZGV2aWNlQ2xh
103
+ c3MiOiJNYWNCb29rQWlyIiwid2lwZUluUHJvZ3Jlc3MiOmZhbHNlLCJmbWx5
104
+ U2hhcmUiOmZhbHNlLCJwYXNzY29kZUxlbmd0aCI6NCwibWVzZyI6bnVsbCwi
105
+ aXNNYWMiOnRydWUsInNuZCI6bnVsbCwiaXNMb2NhdGluZyI6dHJ1ZSwidHJh
106
+ Y2tpbmdJbmZvIjpudWxsLCJkZXZpY2VDb2xvciI6bnVsbCwiYmF0dGVyeVN0
107
+ YXR1cyI6IlVua25vd24iLCJkZXZpY2VTdGF0dXMiOiIyMDMiLCJ3aXBlZFRp
108
+ bWVzdGFtcCI6bnVsbCwibG9ja2VkVGltZXN0YW1wIjpudWxsLCJtc2ciOm51
109
+ bGwsImxvc3RUaW1lc3RhbXAiOiIiLCJsb3N0TW9kZUVuYWJsZWQiOmZhbHNl
110
+ LCJ0aGlzRGV2aWNlIjpmYWxzZSwibG9zdERldmljZSI6bnVsbCwicHJzSWQi
111
+ Om51bGx9LHsiY2FuV2lwZUFmdGVyTG9jayI6ZmFsc2UsInJlbW90ZVdpcGUi
112
+ Om51bGwsImxvY0ZvdW5kRW5hYmxlZCI6ZmFsc2UsImxvY2F0aW9uIjp7InRp
113
+ bWVTdGFtcCI6MTQxMDcxNTQ5Mzc2MCwibG9jYXRpb25UeXBlIjpudWxsLCJw
114
+ b3NpdGlvblR5cGUiOm51bGwsImhvcml6b250YWxBY2N1cmFjeSI6NjUuMCwi
115
+ bG9jYXRpb25GaW5pc2hlZCI6dHJ1ZSwiaXNJbmFjY3VyYXRlIjpmYWxzZSwi
116
+ bG9uZ2l0dWRlIjoxMzkuODIwNTgwOTM3ODk2MiwibGF0aXR1ZGUiOjM1Ljcy
117
+ MzUwMTQ1MDExNzA2LCJpc09sZCI6dHJ1ZX0sImRldmljZU1vZGVsIjoiTWFj
118
+ Qm9va1BybzExXzEiLCJyZW1vdGVMb2NrIjpudWxsLCJhY3RpdmF0aW9uTG9j
119
+ a2VkIjpmYWxzZSwibG9jYXRpb25FbmFibGVkIjp0cnVlLCJyYXdEZXZpY2VN
120
+ b2RlbCI6Ik1hY0Jvb2tQcm8xMSwxIiwibW9kZWxEaXNwbGF5TmFtZSI6Ik1h
121
+ Y0Jvb2sgUHJvIiwibG9zdE1vZGVDYXBhYmxlIjpmYWxzZSwiaWQiOiI0MmhD
122
+ bTAvckVacG5ScWpMVXY0TEFocWlDTFFsQzBVNGl4ZzV0VitlUURwNjJVbXZK
123
+ Vm45a0E9PSIsImRldmljZURpc3BsYXlOYW1lIjoiTWFjQm9vayBQcm8gMTNc
124
+ IiIsImRhcmtXYWtlIjpmYWxzZSwibG9jYXRpb25DYXBhYmxlIjp0cnVlLCJt
125
+ YXhNc2dDaGFyIjo1MDAsIm5hbWUiOiLkuYXnlLDnnJ/lr5sg44GuIE1hY0Jv
126
+ b2sgUHJvIiwiYmF0dGVyeUxldmVsIjowLjAsImZlYXR1cmVzIjp7IkNMVCI6
127
+ ZmFsc2UsIkNXUCI6ZmFsc2UsIldNRyI6ZmFsc2UsIlhSTSI6ZmFsc2UsIkNM
128
+ SyI6ZmFsc2UsIlNORCI6dHJ1ZSwiTFNUIjpmYWxzZSwiS0VZIjp0cnVlLCJX
129
+ SVAiOnRydWUsIkxPQyI6dHJ1ZSwiTExDIjpmYWxzZSwiTVNHIjp0cnVlLCJM
130
+ TUciOnRydWUsIkxDSyI6dHJ1ZSwiUkVNIjpmYWxzZSwiU1ZQIjpmYWxzZSwi
131
+ VEVVIjpmYWxzZSwiTEtMIjpmYWxzZSwiTEtNIjp0cnVlLCJQSU4iOnRydWUs
132
+ IktQRCI6dHJ1ZX0sImRldmljZUNsYXNzIjoiTWFjQm9va1BybyIsIndpcGVJ
133
+ blByb2dyZXNzIjpmYWxzZSwiZm1seVNoYXJlIjpmYWxzZSwicGFzc2NvZGVM
134
+ ZW5ndGgiOjQsIm1lc2ciOm51bGwsImlzTWFjIjp0cnVlLCJzbmQiOm51bGws
135
+ ImlzTG9jYXRpbmciOnRydWUsInRyYWNraW5nSW5mbyI6bnVsbCwiZGV2aWNl
136
+ Q29sb3IiOm51bGwsImJhdHRlcnlTdGF0dXMiOiJVbmtub3duIiwiZGV2aWNl
137
+ U3RhdHVzIjoiMjAzIiwid2lwZWRUaW1lc3RhbXAiOm51bGwsImxvY2tlZFRp
138
+ bWVzdGFtcCI6bnVsbCwibXNnIjpudWxsLCJsb3N0VGltZXN0YW1wIjoiIiwi
139
+ bG9zdE1vZGVFbmFibGVkIjpmYWxzZSwidGhpc0RldmljZSI6ZmFsc2UsImxv
140
+ c3REZXZpY2UiOm51bGwsInByc0lkIjpudWxsfSx7ImNhbldpcGVBZnRlckxv
141
+ Y2siOnRydWUsInJlbW90ZVdpcGUiOm51bGwsImxvY0ZvdW5kRW5hYmxlZCI6
142
+ ZmFsc2UsImxvY2F0aW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6IlRoaXJkR2Vu
143
+ LXdoaXRlIiwicmVtb3RlTG9jayI6bnVsbCwiYWN0aXZhdGlvbkxvY2tlZCI6
144
+ ZmFsc2UsImxvY2F0aW9uRW5hYmxlZCI6dHJ1ZSwicmF3RGV2aWNlTW9kZWwi
145
+ OiJpUGFkMywxIiwibW9kZWxEaXNwbGF5TmFtZSI6ImlQYWQiLCJsb3N0TW9k
146
+ ZUNhcGFibGUiOnRydWUsImlkIjoibFQ2YXlBaE5VemVZWmFEZUdYd3RnQTlG
147
+ UnpKckVUZ0RzaEovaEtaYUwyQWs3eTVyQ0NJM3hPSFlWTlNVem1XViIsImRl
148
+ dmljZURpc3BsYXlOYW1lIjoiaVBhZCIsImRhcmtXYWtlIjpmYWxzZSwibG9j
149
+ YXRpb25DYXBhYmxlIjp0cnVlLCJtYXhNc2dDaGFyIjoxNjAsIm5hbWUiOiJr
150
+ eXV1ZGVuIOOBriBpUGFkIiwiYmF0dGVyeUxldmVsIjowLjAsImZlYXR1cmVz
151
+ Ijp7IkNMVCI6ZmFsc2UsIkNXUCI6ZmFsc2UsIldNRyI6ZmFsc2UsIlhSTSI6
152
+ ZmFsc2UsIkNMSyI6ZmFsc2UsIlNORCI6dHJ1ZSwiTFNUIjp0cnVlLCJLRVki
153
+ OnRydWUsIldJUCI6dHJ1ZSwiTE9DIjp0cnVlLCJMTEMiOmZhbHNlLCJNU0ci
154
+ OnRydWUsIkxNRyI6ZmFsc2UsIkxDSyI6dHJ1ZSwiUkVNIjpmYWxzZSwiU1ZQ
155
+ IjpmYWxzZSwiVEVVIjp0cnVlLCJMS0wiOnRydWUsIkxLTSI6ZmFsc2UsIlBJ
156
+ TiI6ZmFsc2UsIktQRCI6dHJ1ZX0sImRldmljZUNsYXNzIjoiaVBhZCIsIndp
157
+ cGVJblByb2dyZXNzIjpmYWxzZSwiZm1seVNoYXJlIjpmYWxzZSwicGFzc2Nv
158
+ ZGVMZW5ndGgiOjQsIm1lc2ciOm51bGwsImlzTWFjIjpmYWxzZSwic25kIjpu
159
+ dWxsLCJpc0xvY2F0aW5nIjp0cnVlLCJ0cmFja2luZ0luZm8iOm51bGwsImRl
160
+ dmljZUNvbG9yIjoid2hpdGUiLCJiYXR0ZXJ5U3RhdHVzIjoiVW5rbm93biIs
161
+ ImRldmljZVN0YXR1cyI6IjIwMyIsIndpcGVkVGltZXN0YW1wIjpudWxsLCJs
162
+ b2NrZWRUaW1lc3RhbXAiOm51bGwsIm1zZyI6bnVsbCwibG9zdFRpbWVzdGFt
163
+ cCI6IiIsImxvc3RNb2RlRW5hYmxlZCI6ZmFsc2UsInRoaXNEZXZpY2UiOmZh
164
+ bHNlLCJsb3N0RGV2aWNlIjpudWxsLCJwcnNJZCI6bnVsbH0seyJjYW5XaXBl
165
+ QWZ0ZXJMb2NrIjp0cnVlLCJyZW1vdGVXaXBlIjpudWxsLCJsb2NGb3VuZEVu
166
+ YWJsZWQiOmZhbHNlLCJsb2NhdGlvbiI6eyJ0aW1lU3RhbXAiOjE0MTA3MTU0
167
+ NDMyNTUsImxvY2F0aW9uVHlwZSI6bnVsbCwicG9zaXRpb25UeXBlIjoiR1BT
168
+ IiwiaG9yaXpvbnRhbEFjY3VyYWN5IjoxMC4wLCJsb2NhdGlvbkZpbmlzaGVk
169
+ Ijp0cnVlLCJpc0luYWNjdXJhdGUiOmZhbHNlLCJsb25naXR1ZGUiOjEzOS44
170
+ MjA2MDgyODI1OTIsImxhdGl0dWRlIjozNS43MjM1NjQ4MjUwNTQsImlzT2xk
171
+ Ijp0cnVlfSwiZGV2aWNlTW9kZWwiOiI1cy1lMWU0ZTMtZDdkOWQ4IiwicmVt
172
+ b3RlTG9jayI6bnVsbCwiYWN0aXZhdGlvbkxvY2tlZCI6dHJ1ZSwibG9jYXRp
173
+ b25FbmFibGVkIjp0cnVlLCJyYXdEZXZpY2VNb2RlbCI6ImlQaG9uZTYsMSIs
174
+ Im1vZGVsRGlzcGxheU5hbWUiOiJpUGhvbmUiLCJsb3N0TW9kZUNhcGFibGUi
175
+ OnRydWUsImlkIjoidGVxZGJjQkp1RHZuaGpJOWw1dVJ4dkhzMzlnOHBmelRk
176
+ aUM5LzlDWi9WNXVERTdkelkxbkQrSFlWTlNVem1XViIsImRldmljZURpc3Bs
177
+ YXlOYW1lIjoiaVBob25lIDVzIiwiZGFya1dha2UiOmZhbHNlLCJsb2NhdGlv
178
+ bkNhcGFibGUiOnRydWUsIm1heE1zZ0NoYXIiOjE2MCwibmFtZSI6IuS5heeU
179
+ sOecn+WvmyIsImJhdHRlcnlMZXZlbCI6MC4wLCJmZWF0dXJlcyI6eyJDTFQi
180
+ OmZhbHNlLCJDV1AiOmZhbHNlLCJXTUciOnRydWUsIlhSTSI6ZmFsc2UsIkNM
181
+ SyI6ZmFsc2UsIlNORCI6dHJ1ZSwiTFNUIjp0cnVlLCJLRVkiOmZhbHNlLCJX
182
+ SVAiOnRydWUsIkxPQyI6dHJ1ZSwiTExDIjpmYWxzZSwiTVNHIjp0cnVlLCJM
183
+ TUciOmZhbHNlLCJMQ0siOnRydWUsIlJFTSI6ZmFsc2UsIlNWUCI6ZmFsc2Us
184
+ IlRFVSI6dHJ1ZSwiTEtMIjpmYWxzZSwiTEtNIjpmYWxzZSwiUElOIjpmYWxz
185
+ ZSwiS1BEIjpmYWxzZX0sImRldmljZUNsYXNzIjoiaVBob25lIiwid2lwZUlu
186
+ UHJvZ3Jlc3MiOmZhbHNlLCJmbWx5U2hhcmUiOmZhbHNlLCJwYXNzY29kZUxl
187
+ bmd0aCI6NCwibWVzZyI6bnVsbCwiaXNNYWMiOmZhbHNlLCJzbmQiOnsic3Rh
188
+ dHVzQ29kZSI6IjIwMCIsImNyZWF0ZVRpbWVzdGFtcCI6MTQxMDcxNDQ3MzY4
189
+ NX0sImlzTG9jYXRpbmciOnRydWUsInRyYWNraW5nSW5mbyI6bnVsbCwiZGV2
190
+ aWNlQ29sb3IiOiJlMWU0ZTMtZDdkOWQ4IiwiYmF0dGVyeVN0YXR1cyI6IlVu
191
+ a25vd24iLCJkZXZpY2VTdGF0dXMiOiIyMDMiLCJ3aXBlZFRpbWVzdGFtcCI6
192
+ bnVsbCwibG9ja2VkVGltZXN0YW1wIjpudWxsLCJtc2ciOnsic3RhdHVzQ29k
193
+ ZSI6IjIwMCIsImNyZWF0ZVRpbWVzdGFtcCI6MTQxMDcxNDQ3MzY4NSwidXNl
194
+ clRleHQiOmZhbHNlLCJwbGF5U291bmQiOnRydWV9LCJsb3N0VGltZXN0YW1w
195
+ IjoiIiwibG9zdE1vZGVFbmFibGVkIjpmYWxzZSwidGhpc0RldmljZSI6ZmFs
196
+ c2UsImxvc3REZXZpY2UiOm51bGwsInByc0lkIjpudWxsfSx7ImNhbldpcGVB
197
+ ZnRlckxvY2siOnRydWUsInJlbW90ZVdpcGUiOm51bGwsImxvY0ZvdW5kRW5h
198
+ YmxlZCI6ZmFsc2UsImxvY2F0aW9uIjp7InRpbWVTdGFtcCI6MTQxMDcxNTQz
199
+ NDQ2MSwibG9jYXRpb25UeXBlIjpudWxsLCJwb3NpdGlvblR5cGUiOiJXaWZp
200
+ IiwiaG9yaXpvbnRhbEFjY3VyYWN5IjoxNjUuMCwibG9jYXRpb25GaW5pc2hl
201
+ ZCI6ZmFsc2UsImlzSW5hY2N1cmF0ZSI6ZmFsc2UsImxvbmdpdHVkZSI6MTM5
202
+ LjgyMDY0MzgzMDAwMDUsImxhdGl0dWRlIjozNS43MjM2NDY1NTAwMDAwNSwi
203
+ aXNPbGQiOnRydWV9LCJkZXZpY2VNb2RlbCI6ImlQYWQyXzUiLCJyZW1vdGVM
204
+ b2NrIjpudWxsLCJhY3RpdmF0aW9uTG9ja2VkIjp0cnVlLCJsb2NhdGlvbkVu
205
+ YWJsZWQiOnRydWUsInJhd0RldmljZU1vZGVsIjoiaVBhZDIsNSIsIm1vZGVs
206
+ RGlzcGxheU5hbWUiOiJpUGFkIiwibG9zdE1vZGVDYXBhYmxlIjp0cnVlLCJp
207
+ ZCI6IkwwS3orbmVpbjUrZUF1T0F6STZGNkxkNXFHSWliUXlwWXFKcjFSUmE3
208
+ MjY2ZTJZaXo3QmlrZUhZVk5TVXptV1YiLCJkZXZpY2VEaXNwbGF5TmFtZSI6
209
+ ImlQYWQgbWluaSIsImRhcmtXYWtlIjpmYWxzZSwibG9jYXRpb25DYXBhYmxl
210
+ Ijp0cnVlLCJtYXhNc2dDaGFyIjoxNjAsIm5hbWUiOiLnnJ/lr5vjga5pUGFk
211
+ IiwiYmF0dGVyeUxldmVsIjowLjAsImZlYXR1cmVzIjp7IkNMVCI6ZmFsc2Us
212
+ IkNXUCI6ZmFsc2UsIldNRyI6dHJ1ZSwiWFJNIjpmYWxzZSwiQ0xLIjpmYWxz
213
+ ZSwiU05EIjp0cnVlLCJMU1QiOnRydWUsIktFWSI6dHJ1ZSwiV0lQIjp0cnVl
214
+ LCJMT0MiOnRydWUsIkxMQyI6ZmFsc2UsIk1TRyI6dHJ1ZSwiTE1HIjpmYWxz
215
+ ZSwiTENLIjp0cnVlLCJSRU0iOmZhbHNlLCJTVlAiOmZhbHNlLCJURVUiOnRy
216
+ dWUsIkxLTCI6ZmFsc2UsIkxLTSI6ZmFsc2UsIlBJTiI6ZmFsc2UsIktQRCI6
217
+ dHJ1ZX0sImRldmljZUNsYXNzIjoiaVBhZCIsIndpcGVJblByb2dyZXNzIjpm
218
+ YWxzZSwiZm1seVNoYXJlIjpmYWxzZSwicGFzc2NvZGVMZW5ndGgiOjQsIm1l
219
+ c2ciOm51bGwsImlzTWFjIjpmYWxzZSwic25kIjpudWxsLCJpc0xvY2F0aW5n
220
+ Ijp0cnVlLCJ0cmFja2luZ0luZm8iOm51bGwsImRldmljZUNvbG9yIjpudWxs
221
+ LCJiYXR0ZXJ5U3RhdHVzIjoiVW5rbm93biIsImRldmljZVN0YXR1cyI6IjIw
222
+ MyIsIndpcGVkVGltZXN0YW1wIjpudWxsLCJsb2NrZWRUaW1lc3RhbXAiOm51
223
+ bGwsIm1zZyI6bnVsbCwibG9zdFRpbWVzdGFtcCI6IiIsImxvc3RNb2RlRW5h
224
+ YmxlZCI6ZmFsc2UsInRoaXNEZXZpY2UiOmZhbHNlLCJsb3N0RGV2aWNlIjpu
225
+ dWxsLCJwcnNJZCI6bnVsbH1dLCJhbGVydCI6bnVsbCwidXNlckluZm8iOnsi
226
+ bGFzdE5hbWUiOiLkuYXnlLAiLCJoYXNNZW1iZXJzIjpmYWxzZSwibWVtYmVy
227
+ c0luZm8iOm51bGwsImZpcnN0TmFtZSI6Iuecn+WvmyJ9LCJ1c2VyUHJlZmVy
228
+ ZW5jZXMiOnsidG91Y2hQcmVmcyI6e30sImFjdGl2YXRpb25Qcm9oaWJpdGVk
229
+ RGV2aWNlcyI6bnVsbCwiYWN0aXZhdGlvblVwZ3JhZGVFbWFpbFNlbnQiOnRy
230
+ dWUsImxhc3RVcGRhdGVkVGltZSI6MTQwNzI2MTQ3MDE1OSwiYnVpbGRlciI6
231
+ bnVsbH0sInNlcnZlckNvbnRleHQiOnsibWluVHJhY2tMb2NUaHJlc2hvbGRJ
232
+ bk10cyI6MTAwLCJwcmVmc1VwZGF0ZVRpbWUiOjE0MDcyNjE0NzAxNTksIm1h
233
+ eERldmljZUxvYWRUaW1lIjo2MDAwMCwiYXV0aFRva2VuIjoiQVFBQUFBQlVG
234
+ bVZZN1YtLUpKSXR0azc2RDNTcVFrbm9kdjQ5MTlzfiIsImNsYXNzaWNVc2Vy
235
+ IjpmYWxzZSwic2Vzc2lvbkxpZmVzcGFuIjo5MDAwMDAsImVuYWJsZU1hcFN0
236
+ YXRzIjp0cnVlLCJzZXJ2ZXJUaW1lc3RhbXAiOjE0MTA3NTM4ODA1MjAsImRl
237
+ dmljZUxvYWRTdGF0dXMiOiIyMDAiLCJpbWFnZUJhc2VVcmwiOiJodHRwczov
238
+ L3N0YXRpY2kuaWNsb3VkLmNvbSIsInByZWZlcnJlZExhbmd1YWdlIjoiamEt
239
+ anAiLCJsYXN0U2Vzc2lvbkV4dGVuc2lvblRpbWUiOm51bGwsImNsaWVudElk
240
+ IjoiWkdWMmFXTmxYekV3TmpZek1UQTVOekpmTVRReE1EYzFNemc0TURVd01B
241
+ PT0iLCJpbmZvIjoib2dTVzI4NG1ERnB6YjdDU3M3NGtpSFJBQnZuMmlVVjVv
242
+ VC9yYkN1QXMvck5zNEtPeGMzamNOTEdOMi83K2lERyIsInRyYWNrSW5mb0Nh
243
+ Y2hlRHVyYXRpb25JblNlY3MiOjg2NDAwLCJpc0hTQSI6ZmFsc2UsInRpbWV6
244
+ b25lIjp7InR6Q3VycmVudE5hbWUiOiJQYWNpZmljIERheWxpZ2h0IFRpbWUi
245
+ LCJwcmV2aW91c1RyYW5zaXRpb24iOjEzOTQzNTkxOTk5OTksInByZXZpb3Vz
246
+ T2Zmc2V0IjotMjg4MDAwMDAsImN1cnJlbnRPZmZzZXQiOi0yNTIwMDAwMCwi
247
+ dHpOYW1lIjoiQW1lcmljYS9Mb3NfQW5nZWxlcyJ9LCJjYWxsYmFja0ludGVy
248
+ dmFsSW5NUyI6MjAwMCwiY2xvdWRVc2VyIjp0cnVlLCJ2YWxpZFJlZ2lvbiI6
249
+ dHJ1ZSwibWF4TG9jYXRpbmdUaW1lIjo5MDAwMCwicHJzSWQiOjEwNjYzMTA5
250
+ NzIsIm1hY0NvdW50IjowfX0=
251
+ http_version:
252
+ recorded_at: Mon, 15 Sep 2014 04:04:41 GMT
253
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,52 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://invalid%40sample.com:invalid_pass@fmipmobile.icloud.com/fmipservice/device/invalid@sample.com/initClient
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Typhoeus - https://github.com/typhoeus/typhoeus
12
+ Content-Type:
13
+ - application/json; charset=utf-8
14
+ X-Apple-Find-Api-Ver:
15
+ - '2.0'
16
+ X-Apple-Authscheme:
17
+ - UserIdGuest
18
+ X-Apple-Realm-Support:
19
+ - '1.0'
20
+ Accept-Language:
21
+ - en-us
22
+ Useragent:
23
+ - Pingo
24
+ Connection:
25
+ - keep-alive
26
+ response:
27
+ status:
28
+ code: 401
29
+ message: Unauthorized
30
+ headers:
31
+ X-Responding-Instance:
32
+ - fmipservice-20300101-nk11p03me-fmipservice001-8001-14F41
33
+ X-Request-Uuid:
34
+ - 7e28f0d9-8d01-4448-b29a-0ee51799f4a3-initClient
35
+ X-Responding-Server:
36
+ - nk11p03me-fmipservice001_001
37
+ X-Responding-Partition:
38
+ - p03
39
+ Content-Length:
40
+ - '50'
41
+ Date:
42
+ - Mon, 15 Sep 2014 04:04:39 GMT
43
+ Server:
44
+ - Apple-iCloud
45
+ Set-Cookie:
46
+ - NSC_q03-gnjqtfswjdf=ffffffff1296105145525d5f4f58455e445a4a422971;path=/;secure;httponly
47
+ body:
48
+ encoding: UTF-8
49
+ string: '{"desc":"default text from ResponseContentFilter"}'
50
+ http_version:
51
+ recorded_at: Mon, 15 Sep 2014 04:04:40 GMT
52
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,56 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://valid%40sample.com:valid_pass@fmipmobile.icloud.com/fmipservice/device/valid@sample.com/initClient
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Typhoeus - https://github.com/typhoeus/typhoeus
12
+ Content-Type:
13
+ - application/json; charset=utf-8
14
+ X-Apple-Find-Api-Ver:
15
+ - '2.0'
16
+ X-Apple-Authscheme:
17
+ - UserIdGuest
18
+ X-Apple-Realm-Support:
19
+ - '1.0'
20
+ Accept-Language:
21
+ - en-us
22
+ Useragent:
23
+ - Pingo
24
+ Connection:
25
+ - keep-alive
26
+ response:
27
+ status:
28
+ code: 330
29
+ message: ''
30
+ headers:
31
+ X-Responding-Instance:
32
+ - fmipservice-20301503-nk11p03me-fmipservice015-8003-14F41
33
+ X-Request-Uuid:
34
+ - b64e1398-8a64-4b9e-a9c8-ef9be3157436-initClient
35
+ X-Responding-Server:
36
+ - nk11p03me-fmipservice015_003
37
+ X-Responding-Partition:
38
+ - p03
39
+ X-Apple-Mme-Host:
40
+ - p08-fmipmobile.icloud.com
41
+ X-Apple-Mme-Scope:
42
+ - '1066310972'
43
+ Transfer-Encoding:
44
+ - chunked
45
+ Date:
46
+ - Mon, 15 Sep 2014 04:04:38 GMT
47
+ Server:
48
+ - Apple-iCloud
49
+ Set-Cookie:
50
+ - NSC_q03-gnjqtfswjdf=ffffffff1296107745525d5f4f58455e445a4a422973;path=/;secure;httponly
51
+ body:
52
+ encoding: UTF-8
53
+ string: ''
54
+ http_version:
55
+ recorded_at: Mon, 15 Sep 2014 04:04:39 GMT
56
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,56 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://valid%40sample.com:valid_pass@p08-fmipmobile.icloud.com/fmipservice/device/valid@sample.com/playSound
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"clientContext":{"appName":"FindMyiPhone","appVersion":"2.0.2","shouldLocate":false},"device":null,"subject":"Pingo"}'
9
+ headers:
10
+ User-Agent:
11
+ - Typhoeus - https://github.com/typhoeus/typhoeus
12
+ Content-Type:
13
+ - application/json; charset=utf-8
14
+ X-Apple-Find-Api-Ver:
15
+ - '2.0'
16
+ X-Apple-Authscheme:
17
+ - UserIdGuest
18
+ X-Apple-Realm-Support:
19
+ - '1.0'
20
+ Accept-Language:
21
+ - en-us
22
+ Useragent:
23
+ - Pingo
24
+ Connection:
25
+ - keep-alive
26
+ response:
27
+ status:
28
+ code: 500
29
+ message: Internal Server Error
30
+ headers:
31
+ X-Responding-Instance:
32
+ - fmipservice-20800803-nk11p08me-fmipservice008-8003-14F41
33
+ X-Request-Uuid:
34
+ - 081ab8d3-ff15-45f5-b577-1c6fa3997e5b-playSound
35
+ X-Responding-Server:
36
+ - nk11p08me-fmipservice008_003
37
+ X-Responding-Partition:
38
+ - p08
39
+ Content-Type:
40
+ - application/json;charset=UTF-8
41
+ Content-Length:
42
+ - '106'
43
+ Date:
44
+ - Mon, 15 Sep 2014 04:04:43 GMT
45
+ Connection:
46
+ - close
47
+ Server:
48
+ - Apple-iCloud
49
+ Set-Cookie:
50
+ - NSC_q08-gnjqtfswjdf=ffffffff12962f7345525d5f4f58455e445a4a422973;path=/;secure;httponly
51
+ body:
52
+ encoding: UTF-8
53
+ string: '{"statusCode":"500","content":[],"alert":null,"userInfo":null,"userPreferences":null,"serverContext":null}'
54
+ http_version:
55
+ recorded_at: Mon, 15 Sep 2014 04:04:45 GMT
56
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,91 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://valid%40sample.com:valid_pass@p08-fmipmobile.icloud.com/fmipservice/device/valid@sample.com/playSound
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"clientContext":{"appName":"FindMyiPhone","appVersion":"2.0.2","shouldLocate":false},"device":"teqdbcBJuDvnhjI9l5uRxvHs39g8pfzTdiC9/9CZ/V5uDE7dzY1nD+HYVNSUzmWV","subject":"Pingo"}'
9
+ headers:
10
+ User-Agent:
11
+ - Typhoeus - https://github.com/typhoeus/typhoeus
12
+ Content-Type:
13
+ - application/json; charset=utf-8
14
+ X-Apple-Find-Api-Ver:
15
+ - '2.0'
16
+ X-Apple-Authscheme:
17
+ - UserIdGuest
18
+ X-Apple-Realm-Support:
19
+ - '1.0'
20
+ Accept-Language:
21
+ - en-us
22
+ Useragent:
23
+ - Pingo
24
+ Connection:
25
+ - keep-alive
26
+ response:
27
+ status:
28
+ code: 200
29
+ message: OK
30
+ headers:
31
+ X-Responding-Instance:
32
+ - fmipservice-20800102-nk11p08me-fmipservice001-8002-14F41
33
+ X-Request-Uuid:
34
+ - 8b2ae6ad-8580-4acb-8b4b-33a271f9c52b-playSound
35
+ X-Responding-Server:
36
+ - nk11p08me-fmipservice001_002
37
+ X-Responding-Partition:
38
+ - p08
39
+ Content-Type:
40
+ - application/json;charset=UTF-8
41
+ Transfer-Encoding:
42
+ - chunked
43
+ Vary:
44
+ - Accept-Encoding
45
+ Date:
46
+ - Mon, 15 Sep 2014 04:04:43 GMT
47
+ Server:
48
+ - Apple-iCloud
49
+ Set-Cookie:
50
+ - NSC_q08-gnjqtfswjdf=ffffffff12962f5c45525d5f4f58455e445a4a422972;path=/;secure;httponly
51
+ body:
52
+ encoding: ASCII-8BIT
53
+ string: !binary |-
54
+ eyJzdGF0dXNDb2RlIjoiMjAwIiwiY29udGVudCI6W3siY2FuV2lwZUFmdGVy
55
+ TG9jayI6dHJ1ZSwicmVtb3RlV2lwZSI6bnVsbCwibG9jRm91bmRFbmFibGVk
56
+ IjpmYWxzZSwibG9jYXRpb24iOnsidGltZVN0YW1wIjoxNDEwNzE1NDQzMjU1
57
+ LCJsb2NhdGlvblR5cGUiOm51bGwsInBvc2l0aW9uVHlwZSI6IkdQUyIsImhv
58
+ cml6b250YWxBY2N1cmFjeSI6MTAuMCwibG9jYXRpb25GaW5pc2hlZCI6dHJ1
59
+ ZSwiaXNJbmFjY3VyYXRlIjpmYWxzZSwibG9uZ2l0dWRlIjoxMzkuODIwNjA4
60
+ MjgyNTkyLCJsYXRpdHVkZSI6MzUuNzIzNTY0ODI1MDU0LCJpc09sZCI6dHJ1
61
+ ZX0sImRldmljZU1vZGVsIjoiNXMtZTFlNGUzLWQ3ZDlkOCIsInJlbW90ZUxv
62
+ Y2siOm51bGwsImFjdGl2YXRpb25Mb2NrZWQiOnRydWUsImxvY2F0aW9uRW5h
63
+ YmxlZCI6dHJ1ZSwicmF3RGV2aWNlTW9kZWwiOiJpUGhvbmU2LDEiLCJtb2Rl
64
+ bERpc3BsYXlOYW1lIjoiaVBob25lIiwibG9zdE1vZGVDYXBhYmxlIjp0cnVl
65
+ LCJpZCI6InRlcWRiY0JKdUR2bmhqSTlsNXVSeHZIczM5ZzhwZnpUZGlDOS85
66
+ Q1ovVjV1REU3ZHpZMW5EK0hZVk5TVXptV1YiLCJkZXZpY2VEaXNwbGF5TmFt
67
+ ZSI6ImlQaG9uZSA1cyIsImRhcmtXYWtlIjpmYWxzZSwibG9jYXRpb25DYXBh
68
+ YmxlIjp0cnVlLCJtYXhNc2dDaGFyIjoxNjAsIm5hbWUiOiLkuYXnlLDnnJ/l
69
+ r5siLCJiYXR0ZXJ5TGV2ZWwiOjAuMCwiZmVhdHVyZXMiOnsiQ0xUIjpmYWxz
70
+ ZSwiQ1dQIjpmYWxzZSwiV01HIjp0cnVlLCJYUk0iOmZhbHNlLCJDTEsiOmZh
71
+ bHNlLCJTTkQiOnRydWUsIkxTVCI6dHJ1ZSwiS0VZIjpmYWxzZSwiV0lQIjp0
72
+ cnVlLCJMT0MiOnRydWUsIkxMQyI6ZmFsc2UsIk1TRyI6dHJ1ZSwiTE1HIjpm
73
+ YWxzZSwiTENLIjp0cnVlLCJSRU0iOmZhbHNlLCJTVlAiOmZhbHNlLCJURVUi
74
+ OnRydWUsIkxLTCI6ZmFsc2UsIkxLTSI6ZmFsc2UsIlBJTiI6ZmFsc2UsIktQ
75
+ RCI6ZmFsc2V9LCJkZXZpY2VDbGFzcyI6ImlQaG9uZSIsIndpcGVJblByb2dy
76
+ ZXNzIjpmYWxzZSwiZm1seVNoYXJlIjpmYWxzZSwicGFzc2NvZGVMZW5ndGgi
77
+ OjQsIm1lc2ciOm51bGwsImlzTWFjIjpmYWxzZSwic25kIjp7InN0YXR1c0Nv
78
+ ZGUiOiIyMDAiLCJjcmVhdGVUaW1lc3RhbXAiOjE0MTA3NTM4ODA5MTl9LCJp
79
+ c0xvY2F0aW5nIjp0cnVlLCJ0cmFja2luZ0luZm8iOm51bGwsImRldmljZUNv
80
+ bG9yIjoiZTFlNGUzLWQ3ZDlkOCIsImJhdHRlcnlTdGF0dXMiOiJVbmtub3du
81
+ IiwiZGV2aWNlU3RhdHVzIjoiMjAzIiwid2lwZWRUaW1lc3RhbXAiOm51bGws
82
+ ImxvY2tlZFRpbWVzdGFtcCI6bnVsbCwibXNnIjp7InN0YXR1c0NvZGUiOiIy
83
+ MDAiLCJjcmVhdGVUaW1lc3RhbXAiOjE0MTA3NTM4ODA5MTksInVzZXJUZXh0
84
+ IjpmYWxzZSwicGxheVNvdW5kIjp0cnVlfSwibG9zdFRpbWVzdGFtcCI6IiIs
85
+ Imxvc3RNb2RlRW5hYmxlZCI6ZmFsc2UsInRoaXNEZXZpY2UiOmZhbHNlLCJs
86
+ b3N0RGV2aWNlIjpudWxsLCJwcnNJZCI6bnVsbH1dLCJhbGVydCI6bnVsbCwi
87
+ dXNlckluZm8iOm51bGwsInVzZXJQcmVmZXJlbmNlcyI6bnVsbCwic2VydmVy
88
+ Q29udGV4dCI6bnVsbH0=
89
+ http_version:
90
+ recorded_at: Mon, 15 Sep 2014 04:04:44 GMT
91
+ recorded_with: VCR 2.9.3
data/spec/pingo_spec.rb CHANGED
@@ -2,10 +2,112 @@ require 'spec_helper'
2
2
 
3
3
  describe Pingo do
4
4
  it 'has a version number' do
5
- expect(Pingo::VERSION).not_to be nil
5
+ expect(Pingo::VERSION).not_to be_nil
6
6
  end
7
7
 
8
- it 'does something useful' do
9
- expect(false).to eq(true)
8
+ describe ".get_partiotion" do
9
+ subject { Pingo::Pingo.new("5s") }
10
+
11
+ context 'valid APPLE_ID and APPLE_PASSWORD in ENV' do
12
+ before { set_valid_env }
13
+
14
+ it 'should return partition' do
15
+ VCR.use_cassette 'init_client/partition/valid_interaction' do
16
+ expect(subject.send(:get_partition)).not_to be_nil
17
+ end
18
+ end
19
+ end
20
+
21
+ context 'invalid APPLE_ID and APPLE_PASSWORD in ENV' do
22
+ before { set_invalid_env }
23
+
24
+ it 'should not return partition' do
25
+ VCR.use_cassette 'init_client/partition/invalid_interaction' do
26
+ expect(subject.send(:get_partition)).to be_nil
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ describe ".get_device_id" do
33
+ before { set_valid_env }
34
+ let!(:pingo) { Pingo::Pingo.new(model_name) }
35
+
36
+ context 'valid model_name' do
37
+ let(:model_name) { "5s" }
38
+
39
+ it 'should return device_id' do
40
+ VCR.use_cassette 'init_client/partition/valid_interaction' do
41
+ pingo.instance_variable_set(:@partition, pingo.send(:get_partition))
42
+
43
+ VCR.use_cassette 'init_client/device_id/valid_interaction' do
44
+ expect(pingo.send(:get_device_id)).not_to be_nil
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ context 'invalid model_name' do
51
+ let(:model_name) { "9s" }
52
+
53
+ it 'should not return device_id' do
54
+ VCR.use_cassette 'init_client/partition/valid_interaction' do
55
+ pingo.instance_variable_set(:@partition, pingo.send(:get_partition))
56
+
57
+ VCR.use_cassette 'init_client/device_id/invalid_interaction' do
58
+ expect(pingo.send(:get_device_id)).to be_nil
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+
65
+ describe ".play_sound" do
66
+ before { set_valid_env }
67
+ let!(:pingo) { Pingo::Pingo.new("5s") }
68
+
69
+ context 'valid device_id' do
70
+ before do
71
+ pingo.instance_variable_set(:@device_id, nil)
72
+ end
73
+
74
+ it 'should return 200 of status code' do
75
+ VCR.use_cassette 'init_client/partition/valid_interaction' do
76
+ pingo.instance_variable_set(:@partition, pingo.send(:get_partition))
77
+
78
+ VCR.use_cassette 'init_client/device_id/valid_interaction' do
79
+ pingo.instance_variable_set(:@device_id, pingo.send(:get_device_id))
80
+
81
+ VCR.use_cassette 'play_sound/valid_interaction' do
82
+ response = pingo.send(:play_sound)
83
+ expect([response.code, response.response_code]).to include(200)
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ context 'invalid device_id' do
91
+ before do
92
+ pingo.instance_variable_set(:@device_id, nil)
93
+ end
94
+
95
+ it 'should return 500 of status code' do
96
+ VCR.use_cassette 'init_client/partition/valid_interaction' do
97
+ pingo.instance_variable_set(:@partition, pingo.send(:get_partition))
98
+
99
+ VCR.use_cassette 'init_client/device_id/valid_interaction' do
100
+ pingo.send(:get_device_id)
101
+
102
+ VCR.use_cassette 'play_sound/invalid_interaction' do
103
+ response = pingo.send(:play_sound)
104
+
105
+ # VCR response structure and typhoeus it are differ even
106
+ expect([response.code, response.response_code]).to include(500)
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
10
112
  end
11
113
  end
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,21 @@
1
1
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+
2
3
  require 'pingo'
4
+ require 'rspec'
5
+ require 'webmock/rspec'
6
+ require 'vcr'
7
+ require 'support/env_macros'
8
+
9
+ RSpec.configure do |c|
10
+ c.include ENVMacros
11
+ c.around(:each, :vcr) do |example|
12
+ name = example.metadata[:full_description].split(/\s+/, 2).join("/").underscore.gsub(/[^\w\/]+/, "_")
13
+ VCR.use_cassette(name) { example.call }
14
+ end
15
+ end
16
+
17
+ VCR.configure do |c|
18
+ c.cassette_library_dir = 'spec/fixtures/cassette_library'
19
+ c.hook_into :webmock
20
+ c.allow_http_connections_when_no_cassette = true
21
+ end
@@ -0,0 +1,11 @@
1
+ module ENVMacros
2
+ def set_valid_env
3
+ ENV['APPLE_ID'] = "valid@sample.com"
4
+ ENV['APPLE_PASSWORD'] = "valid_pass"
5
+ end
6
+
7
+ def set_invalid_env
8
+ ENV['APPLE_ID'] = "invalid@sample.com"
9
+ ENV['APPLE_PASSWORD'] = "invalid_pass"
10
+ end
11
+ end
data/wercker.yml ADDED
@@ -0,0 +1,23 @@
1
+ box: wercker/rvm
2
+
3
+ build:
4
+ steps:
5
+ - rvm-use:
6
+ version: 2.1.0
7
+
8
+ - script:
9
+ name: gem install bundler
10
+ code: gem update bundler
11
+
12
+ - bundle-install
13
+
14
+ - script:
15
+ name: echo ruby information
16
+ code: |
17
+ echo "ruby version $(ruby --version) running"
18
+ echo "from location $(which ruby)"
19
+ echo -p "gem list: $(gem list)"
20
+
21
+ - script:
22
+ name: rspec
23
+ code: bundle exec rspec
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pingo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyuden
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-07 00:00:00.000000000 Z
11
+ date: 2014-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -80,7 +80,35 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: Write a longer description. Optional.
83
+ - !ruby/object:Gem::Dependency
84
+ name: vcr
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Pingo provides a simple command for sounding your iphone.
84
112
  email:
85
113
  - msmsms.um@gmail.com
86
114
  executables:
@@ -97,12 +125,21 @@ files:
97
125
  - Rakefile
98
126
  - bin/pingo
99
127
  - lib/pingo.rb
100
- - lib/pingo/cli/sound.rb
128
+ - lib/pingo/cli.rb
129
+ - lib/pingo/cli/pingo.rb
101
130
  - lib/pingo/version.rb
102
131
  - pingo.gemspec
132
+ - spec/fixtures/cassette_library/init_client/device_id/invalid_interaction.yml
133
+ - spec/fixtures/cassette_library/init_client/device_id/valid_interaction.yml
134
+ - spec/fixtures/cassette_library/init_client/partition/invalid_interaction.yml
135
+ - spec/fixtures/cassette_library/init_client/partition/valid_interaction.yml
136
+ - spec/fixtures/cassette_library/play_sound/invalid_interaction.yml
137
+ - spec/fixtures/cassette_library/play_sound/valid_interaction.yml
103
138
  - spec/pingo_spec.rb
104
139
  - spec/spec_helper.rb
105
- homepage: ''
140
+ - spec/support/env_macros.rb
141
+ - wercker.yml
142
+ homepage: https://github.com/Kyuden/pingo
106
143
  licenses:
107
144
  - MIT
108
145
  metadata: {}
@@ -125,7 +162,14 @@ rubyforge_project:
125
162
  rubygems_version: 2.2.2
126
163
  signing_key:
127
164
  specification_version: 4
128
- summary: Write a short summary. Required.
165
+ summary: Simple CLI tool for find iphone.
129
166
  test_files:
167
+ - spec/fixtures/cassette_library/init_client/device_id/invalid_interaction.yml
168
+ - spec/fixtures/cassette_library/init_client/device_id/valid_interaction.yml
169
+ - spec/fixtures/cassette_library/init_client/partition/invalid_interaction.yml
170
+ - spec/fixtures/cassette_library/init_client/partition/valid_interaction.yml
171
+ - spec/fixtures/cassette_library/play_sound/invalid_interaction.yml
172
+ - spec/fixtures/cassette_library/play_sound/valid_interaction.yml
130
173
  - spec/pingo_spec.rb
131
174
  - spec/spec_helper.rb
175
+ - spec/support/env_macros.rb
@@ -1,16 +0,0 @@
1
- require 'thor'
2
-
3
- module Pingo
4
- class CLI < Thor
5
- desc "IPHONE_MODEL(ex 5, 5s)", "sound iphone"
6
- def pingo(device_name)
7
- Pingo.run(device_name)
8
- end
9
-
10
- private
11
-
12
- def method_missing(device_name)
13
- pingo(device_name.to_s)
14
- end
15
- end
16
- end