apple_reporter 0.1.4 → 0.1.5

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: f9609786844909fdf453e6429dc6ebe596eada77
4
- data.tar.gz: cba7b3351e012f9d7f6c32723c888a0ca4919436
3
+ metadata.gz: d7b0d8ee407b6024a34eb2c38d4bd58a0c71ca24
4
+ data.tar.gz: 95a62804de25c89f5fc278649b38097dbbab851f
5
5
  SHA512:
6
- metadata.gz: 8d382919f316fe29ba521cb777d4d00a76d09df85f0168ed1ccd2e7304bab29ebe2755d15b028dd5d3d96f984c92c542c87b50065e53c9ab2a9986848e481b8e
7
- data.tar.gz: b1d1692fedb41e54e7fe7409cdf1db676ac09d9d82f5175948d07e5e8cff1f6b14189d49779cf962d06b24eae614047062feb02ca6781fa3fb0565892a54470d
6
+ metadata.gz: 902c2ac017f889c94abdef8655d59c55d007bef0a79cafc2f6ca1615532e54add7b418733babcf2fccd341360a2f93b1698b2d0d45b2e3995aa4552e2b3dbb44
7
+ data.tar.gz: 8b61c6f719bd2f7665a32392aa4483dd6538357d1aba6650f15dd5cceda712a530ecbc65b1cad13b6b7978c5d0737ec47fd1421513535d832c7e9929c2162fec
data/README.md CHANGED
@@ -30,7 +30,7 @@ Or install it yourself as:
30
30
 
31
31
  - get_report
32
32
 
33
- ```
33
+ ```ruby
34
34
  reporter = AppleReporter::Sale.new(user_id: 'your user id', access_token: 'your access token')
35
35
  report = reporter.get_report(
36
36
  vendor_number: 'your vender id',
@@ -43,7 +43,8 @@ report = reporter.get_report(
43
43
  ### Finance
44
44
 
45
45
  - get_report
46
- ```
46
+
47
+ ```ruby
47
48
  reporter = AppleReporter::Finance.new(user_id: 'your user id', access_token: 'your access token')
48
49
  report = reporter.get_report(
49
50
  vendor_number: 'your vender id',
@@ -55,7 +56,8 @@ report = reporter.get_report(
55
56
  ```
56
57
 
57
58
  - get_report with version
58
- ```
59
+
60
+ ```ruby
59
61
  reporter = AppleReporter::Finance.new(
60
62
  user_id: 'your user id',
61
63
  access_token: 'your access token'
@@ -70,6 +72,29 @@ report = reporter.get_report(
70
72
  )
71
73
  ```
72
74
 
75
+ ### AccessToken
76
+
77
+ - view
78
+
79
+ ```ruby
80
+ reporter = AppleReporter::Token.new(user_id: 'your user id', password: 'your password')
81
+ token_info = reporter.view
82
+ ```
83
+
84
+ - generate
85
+
86
+ ```ruby
87
+ reporter = AppleReporter::Token.new(user_id: 'your user id', password: 'your password')
88
+ token_info = reporter.generate
89
+ ```
90
+ - delete
91
+
92
+ ```ruby
93
+ reporter = AppleReporter::Token.new(user_id: 'your user id', password: 'your password')
94
+ reporter.delete
95
+ ```
96
+
97
+
73
98
  ## Development
74
99
 
75
100
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -5,6 +5,7 @@ require 'apple_reporter/version'
5
5
  require 'apple_reporter/reporter'
6
6
  require 'apple_reporter/sale'
7
7
  require 'apple_reporter/finance'
8
+ require 'apple_reporter/token'
8
9
 
9
10
  module AppleReporter
10
11
  raise "Cannot require AppleReporter, unsupported engine '#{RUBY_ENGINE}'" unless RUBY_ENGINE == "ruby"
@@ -17,7 +17,7 @@ module AppleReporter
17
17
 
18
18
  private
19
19
 
20
- def fetch(api_path, params)
20
+ def fetch(api_path, params, url_params=nil)
21
21
  headers = {
22
22
  'Content-Type' => 'application/x-www-form-urlencoded'
23
23
  }
@@ -29,8 +29,9 @@ module AppleReporter
29
29
  queryInput: "[p=Reporter.properties, #{params}]"
30
30
  }
31
31
  payload[:account] = @config[:account] if @config[:account]
32
+ payload[:password] = @config[:password] if @config[:password]
32
33
 
33
- response = RestClient.post("#{ENDPOINT}#{api_path}", "jsonRequest=#{payload.to_json}", headers)
34
+ response = RestClient.post("#{ENDPOINT}#{api_path}", "jsonRequest=#{payload.to_json}#{url_params}", headers)
34
35
  handle_response(@config[:mode], response)
35
36
  rescue RestClient::ExceptionWithResponse => err
36
37
  handle_response(@config[:mode], err.response)
@@ -44,13 +45,19 @@ module AppleReporter
44
45
  gz = Zlib::GzipReader.new(io)
45
46
  return gz.readlines.join
46
47
  else
47
- return Hash.from_xml(response.body)
48
+ handle_response_body_with_mode(response.body, mode)
48
49
  end
50
+ else
51
+ handle_response_body_with_mode(response.body, mode)
49
52
  end
53
+ end
50
54
 
51
- return Hash.from_xml(response.body) if mode == 'Robot.XML'
52
-
53
- response.body
55
+ def handle_response_body_with_mode(body, mode)
56
+ if mode =~ /robot\.xml/i
57
+ Hash.from_xml(body)
58
+ else
59
+ body
60
+ end
54
61
  end
55
62
  end
56
63
  end
@@ -0,0 +1,44 @@
1
+ module AppleReporter
2
+ class Token < Reporter
3
+ # view
4
+ #
5
+ # Usage:
6
+ # token_info = token.view
7
+ def view
8
+ data, _ = fetch(@config[:sales_path], 'Sales.viewToken')
9
+ data
10
+ end
11
+
12
+ # generate
13
+ #
14
+ # Usage:
15
+ # token_info = token.generate
16
+ def generate
17
+ # ported from python implementation at https://github.com/fedoco/itc-reporter/blob/master/reporter.py
18
+ mode_backup = @config[:mode]
19
+ @config[:mode] = 'normal'
20
+ _, headers = fetch(@config[:sales_path], 'Sales.generateToken')
21
+
22
+ # generating a new token requires mirroring back a request id to the iTC server, so let's examine the response header...
23
+ @config[:mode] = mode_backup
24
+ url_params = "&isExistingToken=%s&requestId=%s" % ['Y', headers[:service_request_id]]
25
+ data, _ = fetch(@config[:sales_path], 'Sales.generateToken', url_params)
26
+ data
27
+ end
28
+
29
+ def delete
30
+ data, _ = fetch(@config[:sales_path], 'Sales.deleteToken')
31
+ data
32
+ end
33
+
34
+ private
35
+
36
+ #
37
+ # return response headers along with (optionaly parsed body)
38
+ def handle_response(mode, response)
39
+ data = super
40
+ [data, response.headers]
41
+ end
42
+
43
+ end
44
+ end
@@ -1,3 +1,3 @@
1
1
  module AppleReporter
2
- VERSION = '0.1.4'.freeze
2
+ VERSION = '0.1.5'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apple_reporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dean Lin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-24 00:00:00.000000000 Z
11
+ date: 2018-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -124,6 +124,7 @@ files:
124
124
  - lib/apple_reporter/finance.rb
125
125
  - lib/apple_reporter/reporter.rb
126
126
  - lib/apple_reporter/sale.rb
127
+ - lib/apple_reporter/token.rb
127
128
  - lib/apple_reporter/version.rb
128
129
  homepage: https://github.com/iscreen/apple_reporter.git
129
130
  licenses:
@@ -145,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
146
  version: '0'
146
147
  requirements: []
147
148
  rubyforge_project:
148
- rubygems_version: 2.6.11
149
+ rubygems_version: 2.6.14
149
150
  signing_key:
150
151
  specification_version: 4
151
152
  summary: Apple iTunes Connect Reporter