Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // @apply https://vk.com/dev/errors
- function camelize(str) { return str.replace(/\b(\w)/g, function (m) { return m.toUpperCase(); }); }
- var rows = $$('.dev_param_row');
- var errors = [];
- var required_codes = [5, 6, 9, 10, 14, 15, 17, 113, 200, 201, 203, 300];
- var replace_names = {
- UserAuthorizationFailed: 'AuthorizationFailed',
- TooManyRequestsPerSecond: 'TooManyRequests',
- InternalServerError: 'InternalError'
- }
- for (i = 0; i<rows.length; ++i) {
- var code = parseInt(rows[i].childNodes[0].innerHTML);
- if (required_codes.indexOf(code) == -1)
- continue;
- var description = rows[i].childNodes[1].textContent;
- description = description.split('\n');
- description = description[0].trim();
- var name = description
- name = name.replace(/\b(is|was|this|occurr?ed|passed)\b/gi, '');
- name = camelize(name).replace(/\W+/g, '');
- var match = name.match(/^AccessTo(\w+)Denied$/);
- if (match) {
- name = match[1] + 'AccessDenied';
- }
- if (name in replace_names)
- name = replace_names[name];
- errors.push({code: code, name: name, description: description})
- }
- console.log('\n' + JSON.stringify(errors, 0, 2));
- var L = ["error = response['error']", "code = error['error_code']"];
- var L1 = ['# Специфические ошибки.'];
- for (var i = 0; i<errors.length; ++i) {
- var code = errors[i].code;
- var name = errors[i].name;
- var description = errors[i].description;
- L.push(
- (i ? 'el' : '') + 'if code == ' + code + ':',
- ' error = ' + name + '(error)'
- );
- L1.push(
- 'class ' + name + '(ApiError):',
- ' """' + description + '"""',
- ' pass',
- ''
- );
- }
- L.push('else:', ' error = ApiError(error)', 'raise error');
- L = L.concat(L1);
- console.log(L.join('\n'));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement