spaceship 0.29.1 → 0.30.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d4e75e36b96e235ad42ccf5b079606cb07035d7
4
- data.tar.gz: c9fc39ec8e35fe6f33742aef5de6060319dc6f4d
3
+ metadata.gz: 0c8703b43554cede5448efcfdca163bd53a68bab
4
+ data.tar.gz: f36dc587a3b0b35f7822a2239842c938f8ff960b
5
5
  SHA512:
6
- metadata.gz: 821dba04783f7d0562570e94e090bddc5c5a1f57b792b41ebac591392d72bb829967ad12bbb6aa572c1e0992d3f4d3df100a264d0193bea78d8b7eb29b6644f2
7
- data.tar.gz: af3c621980ae4195d17f4871b52f20c568f940147a7820ff0d5d5ad2f8a5cf77f0d4c868d5111161626350c793becf1f71ce119fe2f14d87a13ebc382654fa64
6
+ metadata.gz: cee57e7c7ce91123da67e7ea96b701ca14995f2d8d846f181f969be2173953be2c850fbafe5eb0162ad16978670b7e80e8ccdb14673ccad2fed76e0ea597899c
7
+ data.tar.gz: 3eef484c169b9b547659e9898ded742a1fd717ed8eee91e6db4794c659699a65e8ff25d21b8294f8ef0def0d90a296abd0a2ace0f9d35ce4d6a8984e9aded644
@@ -358,6 +358,7 @@ module Spaceship
358
358
  raise "sort_order must not be > 5" if sort_order > 5
359
359
  # this will also check both language and device parameters
360
360
  device_lang_screenshots = screenshots_data_for_language_and_device(language, device)["value"]
361
+
361
362
  existing_sort_orders = device_lang_screenshots.map { |s| s["value"]["sortOrder"] }
362
363
  if screenshot_path # adding / replacing
363
364
  upload_file = UploadFile.from_path screenshot_path
@@ -372,6 +373,15 @@ module Spaceship
372
373
  "originalFileName" => upload_file.file_name
373
374
  }
374
375
  }
376
+
377
+ # We disable "scaling" for this device type / language combination
378
+ # We only set this, if we actually successfully uploaded a new screenshot
379
+ # for this device / language combination
380
+ # if this value is not set, iTC will fallback to another device type for screenshots
381
+ language_details = raw_data_details.find { |d| d["language"] == language }["displayFamilies"]["value"]
382
+ device_language_details = language_details.find { |display_family| display_family['name'] == device }
383
+ device_language_details["scaled"]["value"] = false
384
+
375
385
  if existing_sort_orders.include?(sort_order) # replace
376
386
  device_lang_screenshots[existing_sort_orders.index(sort_order)] = new_screenshot
377
387
  else # add
@@ -528,13 +538,17 @@ module Spaceship
528
538
  # IDEA: better error for non existing language
529
539
  raise "#{language} isn't an activated language" unless languages.count > 0
530
540
  lang_details = languages[0]
531
- devices_details = lang_details[data_field]["value"]
532
- raise "Unexpected state: missing device details for #{device}" unless devices_details.key? device
533
- devices_details[device]
541
+ display_families = lang_details["displayFamilies"]["value"]
542
+ device_details = display_families.find { |display_family| display_family['name'] == device }
543
+ raise "Unexpected state: missing device details for #{device}" unless device_details.key?(data_field)
544
+ return device_details[data_field]
545
+ rescue => ex
546
+ raise "iTunes Connect error: #{ex}"
534
547
  end
535
548
 
536
549
  def setup_screenshots
537
550
  @screenshots = {}
551
+
538
552
  raw_data_details.each do |row|
539
553
  # Now that's one language right here
540
554
  @screenshots[row['language']] = setup_screenshots_for(row)
@@ -543,16 +557,58 @@ module Spaceship
543
557
 
544
558
  # generates the nested data structure to represent screenshots
545
559
  def setup_screenshots_for(row)
546
- screenshots = row.fetch("screenshots", {}).fetch("value", nil)
547
- return [] unless screenshots
560
+ display_families = row.fetch("displayFamilies", {}).fetch("value", nil)
561
+ return [] unless display_families
548
562
 
549
563
  result = []
550
564
 
551
- screenshots.each do |device_type, value|
552
- value["value"].each do |screenshot|
565
+ display_families.each do |display_family|
566
+ # {
567
+ # "name": "iphone6Plus",
568
+ # "scaled": {
569
+ # "value": false,
570
+ # "isEditable": false,
571
+ # "isRequired": false,
572
+ # "errorKeys": null
573
+ # },
574
+ # "screenshots": {
575
+ # "value": [{
576
+ # "value": {
577
+ # "assetToken": "Purple62/v4/08/0a/04/080a0430-c2cc-2577-f491-9e0a09c58ffe/mzl.pbcpzqyg.jpg",
578
+ # "sortOrder": 1,
579
+ # "type": null,
580
+ # "originalFileName": "ios-414-1.jpg"
581
+ # },
582
+ # "isEditable": true,
583
+ # "isRequired": false,
584
+ # "errorKeys": null
585
+ # }, {
586
+ # "value": {
587
+ # "assetToken": "Purple71/v4/de/81/aa/de81aa10-64f6-332e-c974-9ee46adab675/mzl.cshkjvwl.jpg",
588
+ # "sortOrder": 2,
589
+ # "type": null,
590
+ # "originalFileName": "ios-414-2.jpg"
591
+ # },
592
+ # "isEditable": true,
593
+ # "isRequired": false,
594
+ # "errorKeys": null
595
+ # }],
596
+ # "isEditable": true,
597
+ # "isRequired": false,
598
+ # "errorKeys": null
599
+ # },
600
+ # "trailer": {
601
+ # "value": null,
602
+ # "isEditable": true,
603
+ # "isRequired": false,
604
+ # "errorKeys": null
605
+ # }
606
+ # }
607
+
608
+ display_family.fetch("screenshots", {}).fetch("value", []).each do |screenshot|
553
609
  screenshot_data = screenshot["value"]
554
610
  data = {
555
- device_type: device_type,
611
+ device_type: display_family['name'],
556
612
  language: row["language"]
557
613
  }.merge(screenshot_data)
558
614
  result << Tunes::AppScreenshot.factory(data)
@@ -572,19 +628,24 @@ module Spaceship
572
628
 
573
629
  # generates the nested data structure to represent trailers
574
630
  def setup_trailers_for(row)
575
- trailers = row.fetch("appTrailers", {}).fetch("value", nil)
576
- return [] unless trailers
631
+ display_families = row.fetch("displayFamilies", {}).fetch("value", nil)
632
+ return [] unless display_families
577
633
 
578
634
  result = []
579
635
 
580
- trailers.each do |device_type, value|
581
- trailer_data = value["value"]
582
- next if trailer_data.nil?
583
- data = {
584
- device_type: device_type,
585
- language: row["language"]
586
- }.merge(trailer_data)
587
- result << Tunes::AppTrailer.factory(data)
636
+ display_families.each do |display_family|
637
+ trailers = display_family.fetch("trailer", {}).fetch("value")
638
+ next if trailers.nil?
639
+
640
+ trailers.each do |trailer|
641
+ trailer_data = trailer["value"]
642
+ next if trailer_data.nil?
643
+ data = {
644
+ device_type: display_family['name'],
645
+ language: row["language"]
646
+ }.merge(trailer_data)
647
+ result << Tunes::AppTrailer.factory(data)
648
+ end
588
649
  end
589
650
 
590
651
  return result
@@ -1,4 +1,4 @@
1
1
  module Spaceship
2
- VERSION = "0.29.1".freeze
2
+ VERSION = "0.30.0".freeze
3
3
  DESCRIPTION = "Ruby library to access the Apple Dev Center and iTunes Connect".freeze
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spaceship
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.29.1
4
+ version: 0.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-07-31 00:00:00.000000000 Z
12
+ date: 2016-08-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: credentials_manager