codes 0.1.2 → 0.2.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: 296b323fb308e0f918f676e6c97bb5421b547908
4
- data.tar.gz: faa009d9e5586d2300a5694ab40e8f816670e880
3
+ metadata.gz: 41463a8ab83d8ef546b17a89107ce4817f88209a
4
+ data.tar.gz: 11191fc9f73a91fb350fd8d6900cacf3098401cd
5
5
  SHA512:
6
- metadata.gz: d6b6f656d796dab3d47848af6ca814f1d61a7745cb7f742994b9659af8a30256e8ebb438517410c34060fa94703a5ef5804cbd89bb91b6ab0ee6973e533f9fcd
7
- data.tar.gz: f0d82bc0efe24a5192556504e33782958e5e383360309607ac4c8efc0d7d203f229d72555d4e84632e40b9c838337bcdc3d94a5cfedd8f9985765c38267e67d2
6
+ metadata.gz: f06a2d26fc55d66265e4597a2a793af7d83cae5a848c018fa12cd645ae37eb12b87799b9bd6356734d7bd760154c0ff7f00f7e1ef7d6960732bcbcfc15dfb341
7
+ data.tar.gz: 88320906261aed0ef5f3af73c2a11570aecd5fb67fcefb883ea627b31eb12413621a71e6b28a9a86fd110df6898f468720f2b9fdb9cc25b3f312cce01388e651
data/README.md CHANGED
@@ -80,6 +80,12 @@ Will generate 3 promo codes for the the App with the Bundle Identifier `com.exam
80
80
 
81
81
  If you don't pass any paramaters, `codes` will generate a single promo code and print it on the command line.
82
82
 
83
+ ## Generate URLs
84
+
85
+ codes 5 --urls
86
+
87
+ If specified, includes a full URL for each code that can be used to redeem that code.
88
+
83
89
  ![assets/codes.gif](assets/codes.gif)
84
90
 
85
91
  ##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
data/bin/codes CHANGED
@@ -26,10 +26,11 @@ class CodesApplication
26
26
  global_option '-a', '--app_identifier STRING', 'The bundle ID to download promo codes for'
27
27
  global_option '-i', '--apple_id STRING', 'The App ID to download promo codes for'
28
28
  global_option '-o', '--output_file STRING', 'The name of the file that should be written to disk. If the file exists, the new codes will be appended.'
29
+ global_option '-x', '--urls', 'If specified, includes a full URL for each code that can be used to redeem that code.'
29
30
 
30
31
 
31
32
  command :download do |c|
32
- c.syntax = "cert download [num]"
33
+ c.syntax = "codes download [num]"
33
34
  c.description = "Download [num] new promo codes from iTunes Connect"
34
35
 
35
36
  c.action do |args, options|
@@ -37,8 +38,9 @@ class CodesApplication
37
38
  number_of_codes = count(args)
38
39
  apple_id = apple_id(options)
39
40
  app_identifier = bundle_id(options, apple_id)
41
+ urls = options.x || options.urls
40
42
 
41
- Codes::CodesRunner.run(number_of_codes: number_of_codes, app_identifier: app_identifier, apple_id: apple_id, output_file_path: options.output_file)
43
+ Codes::CodesRunner.run(number_of_codes: number_of_codes, app_identifier: app_identifier, apple_id: apple_id, output_file_path: options.output_file, urls: urls)
42
44
  end
43
45
  end
44
46
 
@@ -3,7 +3,8 @@ require 'fastlane_core/itunes_connect/itunes_connect'
3
3
  module Codes
4
4
  class ItunesConnect < FastlaneCore::ItunesConnect
5
5
 
6
- PROMO_URL = "https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wa/LCAppPage/viewPromoCodes?adamId="
6
+ PROMO_URL = "https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wa/LCAppPage/viewPromoCodes?adamId=[[app_id]]&platform=[[platform]]"
7
+ CODE_URL = "https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/redeemLandingPage?code=[[code]]"
7
8
 
8
9
  def run(args)
9
10
  number_of_codes = args[:number_of_codes]
@@ -21,11 +22,14 @@ module Codes
21
22
  raise "Could not find app using the following information: #{args}. Maybe the app is not in the store. Pass the Apple ID of the app as well!".red
22
23
  end
23
24
 
25
+ app = FastlaneCore::ItunesSearchApi.fetch(app_id)
26
+ platform = (app['kind'] == "mac-software" ? "osx" : "ios")
27
+
24
28
  # Use Pathname because it correctly handles the distinction between relative paths vs. absolute paths
25
29
  output_file_path = Pathname.new(args[:output_file_path]) if args[:output_file_path]
26
30
  output_file_path ||= Pathname.new(File.join(Dir.getwd, "#{app_identifier || app_id}_codes.txt"))
27
31
  raise "Insufficient permissions to write to output file".red if File.exists?(output_file_path) and not File.writable?(output_file_path)
28
- visit PROMO_URL << app_id.to_s
32
+ visit PROMO_URL.gsub("[[app_id]]", app_id.to_s).gsub("[[platform]]", platform)
29
33
 
30
34
  begin
31
35
  text_fields = wait_for_elements("input[type=text]")
@@ -45,11 +49,18 @@ module Codes
45
49
 
46
50
  codes = download_codes download_url
47
51
 
52
+ if args[:urls]
53
+ codes = codes.split("\n").map do |code|
54
+ code +" - "+ CODE_URL.gsub("[[code]]", code)
55
+ end
56
+ codes = codes.join("\n") + "\n"
57
+ end
58
+
48
59
  bytes_written = File.write(output_file_path.to_s, codes, mode: "a+")
49
60
  Helper.log.warn "Could not write your codes to the codes.txt file, but you can still access them from iTunes Connect later" if bytes_written == 0
50
61
  Helper.log.info "Added generated codes to '#{output_file_path.to_s}'".green unless bytes_written == 0
51
62
 
52
- Helper.log.info "Your codes were succesfully downloaded:".green
63
+ Helper.log.info "Your codes were successfully downloaded:".green
53
64
  puts codes
54
65
  end
55
66
 
data/lib/codes/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Codes
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-06 00:00:00.000000000 Z
11
+ date: 2015-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastlane_core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.0
19
+ version: 0.5.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.0
26
+ version: 0.5.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement