Class: Ireporter::Reporter

Inherits:
Object
  • Object
show all
Defined in:
lib/ireporter/reporter.rb

Constant Summary collapse

VERSION =

Constants initialization

'2.2'
URL_SALES =
'https://reportingitc-reporter.apple.com/reportservice/sales/v1'
URL_FINANCE =
'https://reportingitc-reporter.apple.com/reportservice/finance/v1'
DATE_TYPE_DAILY =
"Daily"
DATE_TYPE_WEEKLY =
"Weekly"
DATE_TYPE_MONTHLY =
"Monthly"
DATE_TYPE_YEARLY =
"Yearly"

Instance Method Summary collapse

Constructor Details

#initialize(username, password, accesstoken) ⇒ Reporter

constructor



24
25
26
27
28
# File 'lib/ireporter/reporter.rb', line 24

def initialize(username,password,accesstoken)
  @username = username
  @password = password
  @accesstoken = accesstoken 
end

Instance Method Details

#delete_tokenObject



94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/ireporter/reporter.rb', line 94

def delete_token

  command = '[p=Reporter.properties, Sales.deleteToken]'

  parameters = build_json_request(command)
  response = post_request(parameters,URL_SALES)

  if response.headers[:"errormsg"]
   raise "token error"
 else response.headers[:"filename"]
   return response.body.chomp
 end
end

#generate_tokenObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/ireporter/reporter.rb', line 61

def generate_token

  command = '[p=Reporter.properties, Sales.generateToken]'

  parameters = build_json_request(command)
  response = post_request(parameters,URL_SALES)
  service_request_id = response.headers[:service_request_id]

  opt_param = "&isExistingToken=Y&requestId=" + service_request_id
  parameters = build_json_request(command) + opt_param
  response = post_request(parameters,URL_SALES)

  if response.headers[:"errormsg"]
   raise "token error"
 else response.headers[:"filename"]
   return response.body.chomp
 end
end

#get_sales_report(datetype, reportdate) ⇒ Object



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/ireporter/reporter.rb', line 108

def get_sales_report(datetype,reportdate)


  datetype  ||= DATE_TYPE_DAILY
  reportdate  ||= (Time.now-60*60*24).strftime("%Y%m%d")

  vendorNumber=get_vendor().chomp

  command = '[p=Reporter.properties, Sales.getReport, '+vendorNumber+',Sales,Summary,'+datetype+','+reportdate+']'
  parameters = build_json_request(command)

  response = post_request(parameters,URL_SALES)


   if response.headers[:"errormsg"]
     raise ITunesConnectError.new response.headers[:"errormsg"]
    elsif response.headers[:"filename"]
     Zlib::GzipReader.new(StringIO.new(response.body)).read
    else
     raise "no data returned from itunes: #{response.body}"
    end
end

#get_status(service) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/ireporter/reporter.rb', line 30

def get_status (service)

  command = "[p=Reporter.properties, "+service+".getStatus]"
  url = service == 'Sales' ? URL_SALES : URL_FINANCE

  parameters = build_json_request(command)

  response = post_request(parameters,url)

   if response.headers[:"errormsg"]
    raise "error fetching status"
   else response.headers[:"filename"]
    return response.body
   end
end

#get_vendorObject



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/ireporter/reporter.rb', line 47

def get_vendor()

 command = '[p=Reporter.properties, Sales.getVendors]'

 parameters = build_json_request(command)
 response = post_request(parameters,URL_SALES)

 if response.headers[:"errormsg"]
    raise "vendor number not found"
  else response.headers[:"filename"]
    return response.body.chomp
   end
end

#view_tokenObject



80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/ireporter/reporter.rb', line 80

def view_token

  command = '[p=Reporter.properties, Sales.viewToken]'

  parameters = build_json_request(command)
  response = post_request(parameters,URL_SALES)

  if response.headers[:"errormsg"]
   raise "token error"
 else response.headers[:"filename"]
   return response.body.chomp
 end
end

#wrap(report) ⇒ Object

Wrap data into Array



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/ireporter/reporter.rb', line 148

def wrap(report)
 lines = report.split("\n")
 header = lines.shift 
 lines.collect do |line|
  provider, country, sku, developer, title, version, product_type_id, units, developer_proceeds, begin_date, end_date, currency, country_code, currency_of_proceeds, apple_id, customer_price, promo_code, parent_id, subscription, period = line.split("\t")
  {
   :provider => provider.strip, 
   :country => country.strip, 
   :sku => sku.strip, 
   :developer => developer.strip, 
   :title => title.strip, 
   :version => version.strip, 
   :product_type_id => product_type_id.strip, 
   :units => units.to_i, 
   :developer_proceeds => developer_proceeds.to_f, 
   :begin_date => Date.strptime(begin_date.strip, '%m/%d/%Y'), 
   :end_date => Date.strptime(end_date.strip, '%m/%d/%Y'), 
   :currency => currency.strip, 
   :country_code => country_code.strip, 
   :currency_of_proceeds => currency_of_proceeds.strip, 
   :apple_id => apple_id.to_i, 
   :customer_price => customer_price.to_f, 
   :promo_code => promo_code.strip, 
   :parent_id => parent_id.strip, 
   :subscription => subscription.strip, 
   :period => period
  }
 end
end