lingohub 0.0.4 → 0.0.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.
@@ -71,9 +71,10 @@ class Lingohub::Client
71
71
 
72
72
  def process(method, uri, extra_headers={ }, payload=nil)
73
73
  headers = lingohub_headers.merge(extra_headers)
74
- # payload = auth_params.merge(payload)
75
74
  args = [method, payload, headers].compact
75
+ # puts "---- URI --- #{uri} - #{args}"
76
76
  response = resource(uri, credentials).send(*args)
77
+ #puts response
77
78
 
78
79
  response
79
80
  end
@@ -27,11 +27,10 @@ module Lingohub
27
27
  # end
28
28
  # rescue RestClient::ResourceNotFound => e
29
29
  # error extract_not_found(e.http_body)
30
- # rescue RestClient::RequestFailed => e
31
- # error extract_error(e.http_body) unless e.http_code == 402
32
- # retry if run_internal('account:confirm_billing', args.dup)
33
- # rescue RestClient::RequestTimeout
34
- # error "API request timed out. Please try again, or contact team@lingohub.com if this issue persists."
30
+ rescue RestClient::RequestFailed => e
31
+ error extract_error(e.http_body) unless e.http_code == 402
32
+ rescue RestClient::RequestTimeout
33
+ error "API request timed out. Please try again, or contact team@lingohub.com if this issue persists."
35
34
  rescue CommandFailed => e
36
35
  error e.message
37
36
  rescue Interrupt => e
@@ -67,32 +66,32 @@ module Lingohub
67
66
  end
68
67
  end
69
68
 
70
- # def extract_not_found(body)
71
- # body =~ /^[\w\s]+ not found$/ ? body : "Resource not found"
72
- # end
73
- #
74
- # def extract_error(body)
75
- # msg = parse_error_xml(body) || parse_error_json(body) || parse_error_plain(body) || 'Internal server error'
76
- # msg.split("\n").map { |line| ' ! ' + line }.join("\n")
77
- # end
78
- #
79
- # def parse_error_xml(body)
80
- # xml_errors = REXML::Document.new(body).elements.to_a("//errors/error")
81
- # msg = xml_errors.map { |a| a.text }.join(" / ")
82
- # return msg unless msg.empty?
83
- # rescue Exception
84
- # end
85
- #
86
- # def parse_error_json(body)
87
- # json = OkJson.decode(body.to_s)
88
- # json['error']
89
- # rescue OkJson::ParserError
90
- # end
91
- #
92
- # def parse_error_plain(body)
93
- # return unless body.respond_to?(:headers) && body.headers[:content_type].include?("text/plain")
94
- # body.to_s
95
- # end
69
+ def extract_not_found(body)
70
+ body =~ /^[\w\s]+ not found$/ ? body : "Resource not found"
71
+ end
72
+
73
+ def extract_error(body)
74
+ msg = parse_error_xml(body) || parse_error_json(body) || parse_error_plain(body) || 'Internal server error'
75
+ msg.split("\n").map { |line| ' ! ' + line }.join("\n")
76
+ end
77
+
78
+ def parse_error_xml(body)
79
+ xml_errors = REXML::Document.new(body).elements.to_a("//errors/error")
80
+ msg = xml_errors.map { |a| a.text }.join(" / ")
81
+ return msg unless msg.empty?
82
+ rescue Exception
83
+ end
84
+
85
+ def parse_error_json(body)
86
+ json = OkJson.decode(body.to_s)
87
+ json['error'] || json.to_s
88
+ rescue OkJson::ParserError
89
+ end
90
+
91
+ def parse_error_plain(body)
92
+ return unless body.respond_to?(:headers) && body.headers[:content_type].include?("text/plain")
93
+ body.to_s
94
+ end
96
95
  end
97
96
  end
98
97
  end
@@ -67,16 +67,27 @@ module Lingohub::Command
67
67
  print "Email: "
68
68
  user = ask
69
69
 
70
- print "Password: "
70
+
71
+ print "Password (please leave blank if you want to use your API token): "
71
72
  password = running_on_windows? ? ask_for_password_on_windows : ask_for_password
72
- api_key = Lingohub::Client.auth(:username => user, :password => password, :host => host)['api_key']
73
+
74
+ if password.empty?
75
+ print "API key: "
76
+ api_key = ask
77
+ else
78
+ api_key = retrieve_api_key(password, user)
79
+ end
73
80
 
74
81
  [user, api_key]
75
82
  end
76
83
 
84
+ def retrieve_api_key(password, user)
85
+ Lingohub::Client.auth(:username => user, :password => password, :host => host)['api_key']
86
+ end
87
+
77
88
  def ask_for_password_on_windows
78
89
  require "Win32API"
79
- char = nil
90
+ char = nil
80
91
  password = ''
81
92
 
82
93
  while char = Win32API.new("crtdll", "_getch", [], "L").Call do
@@ -108,7 +119,7 @@ module Lingohub::Command
108
119
  rescue ::RestClient::Unauthorized, ::RestClient::ResourceNotFound => e
109
120
  puts "EXCEPTION #{e}"
110
121
  delete_credentials
111
- @client = nil
122
+ @client = nil
112
123
  @credentials = nil
113
124
  display "Authentication failed."
114
125
  retry if retry_login?
@@ -46,7 +46,7 @@ module Lingohub::Command
46
46
  group.command 'project:info --project <name>', 'show project info, like web url and number of translations'
47
47
  group.command 'project:open --project <name>', 'open the project in a web browser'
48
48
  group.command 'project:rename <oldname> <newname>', 'rename the project'
49
- group.command 'project:destroy --project <name>', 'destroy the project permanently'
49
+ group.command 'project:archive --project <name>', 'archive the project'
50
50
  group.space
51
51
  end
52
52
 
@@ -25,7 +25,6 @@ module Lingohub::Command
25
25
 
26
26
  def create
27
27
  title = args.shift.strip rescue nil
28
- title ||= extract_from_dir_name
29
28
  lingohub.projects.create title
30
29
  display("Created #{title}")
31
30
  end
@@ -42,14 +41,16 @@ module Lingohub::Command
42
41
  display "=== #{project.title}"
43
42
  display "Web URL: #{project.weburl}"
44
43
  display "Owner: #{project.owner}"
45
- display "Number of translation: #{project.translations_count}"
44
+ display "Opensource: #{project.opensource}"
45
+ display "Locales: #{project.project_locales}"
46
+ display "Description: #{project.description}"
46
47
  end
47
48
 
48
49
  def open
49
50
  Launchy.open project.weburl
50
51
  end
51
52
 
52
- def destroy
53
+ def archive
53
54
  display "=== #{project.title}"
54
55
  display "Web URL: #{project.weburl}"
55
56
  display "Owner: #{project.owner}"
@@ -77,7 +77,7 @@ module Lingohub::Command
77
77
  project.pull_resource(directory, file_name)
78
78
  display("#{file_name} downloaded")
79
79
  rescue
80
- display "Error downloading #{file_name}. Response: #{$!.response || $!.message}"
80
+ display "Error downloading #{file_name}. Response: #{$!.message || $!.response}"
81
81
  end
82
82
  end
83
83
  end
@@ -89,7 +89,7 @@ module Lingohub::Command
89
89
  project.push_resource(path, extract_locale_from_args)
90
90
  display("#{file_name} uploaded")
91
91
  rescue
92
- display "Error uploading #{file_name}. Response: #{$!.response || $!.message}"
92
+ display "Error uploading #{file_name}. Response: #{$!.message || $!.response}"
93
93
  end
94
94
  end
95
95
  end
@@ -18,14 +18,16 @@ module Lingohub
18
18
  end
19
19
  end
20
20
 
21
- lazy_attr_accessor(:title, :link, :weburl, :resources_url, :collaborators_url, :invitations_url, :translations_url, :search_url, :translations_count, :owner)
21
+
22
+ lazy_attr_accessor(:title, :link, :weburl, :resources_url, :collaborators_url, :invitations_url,
23
+ :translations_url, :search_url, :owner, :description, :opensource, :project_locales)
22
24
 
23
25
  def initialize(client, link)
24
26
  @client = client
25
27
  @link = link
26
28
  end
27
29
 
28
- def create!(attributes={})
30
+ def create!(attributes={ })
29
31
  self.title = attributes[:title]
30
32
  end
31
33
 
@@ -33,17 +35,17 @@ module Lingohub
33
35
  @client.delete self.link
34
36
  end
35
37
 
36
- def update(attributes={})
37
- @client.put self.link, {:project => attributes}
38
+ def update(attributes={ })
39
+ @client.put self.link, { :project => attributes }
38
40
  end
39
41
 
40
42
  def invite_collaborator(email)
41
- @client.post(self.invitations_url, :invitation => {:email => email})
43
+ @client.post(self.invitations_url, :invitation => { :email => email })
42
44
  end
43
45
 
44
46
  def resources
45
47
  unless defined? @resources
46
- @resources = {}
48
+ @resources = { }
47
49
  response = @client.get(self.resources_url)
48
50
  resource_hash = JSON.parse(response)
49
51
  members = resource_hash["members"]
@@ -85,8 +87,8 @@ module Lingohub
85
87
  end
86
88
 
87
89
  def pull_search_results(directory, filename, query, locale = nil)
88
- parameters = {:filename => filename, :query => query}
89
- parameters.merge!({:iso2_slug => locale}) unless locale.nil? or locale.strip.empty?
90
+ parameters = { :filename => filename, :query => query }
91
+ parameters.merge!({ :iso2_slug => locale }) unless locale.nil? or locale.strip.empty?
90
92
 
91
93
  content = @client.get(search_url, parameters)
92
94
  save_to_file(File.join(directory, filename), content)
@@ -106,8 +108,10 @@ module Lingohub
106
108
  collaborators_url = links[4]["href"]
107
109
  invitations_url = links[5]["href"]
108
110
  search_url = links[6]["href"]
111
+
109
112
  init_attributes :title => project_hash["title"], :link => link, :weburl => weburl,
110
- :owner => project_hash["owner_email"], :translations_count => project_hash["translations_count"],
113
+ :owner => project_hash["owner_email"], :description => project_hash["description"],
114
+ :opensource => project_hash["opensource"], :project_locales => project_hash["project_locales"],
111
115
  :translations_url => translations_url, :resources_url => resources_url,
112
116
  :collaborators_url => collaborators_url, :invitations_url => invitations_url,
113
117
  :search_url => search_url
@@ -1,4 +1,4 @@
1
1
  module Lingohub
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  API_VERSION = 'v1'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lingohub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-20 00:00:00.000000000 Z
12
+ date: 2012-07-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &70361082811120 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,15 +21,10 @@ dependencies:
21
21
  version: 1.6.7
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 1.6.7
24
+ version_requirements: *70361082811120
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: launchy
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &70361082810620 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ~>
@@ -37,15 +32,10 @@ dependencies:
37
32
  version: 2.0.5
38
33
  type: :runtime
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 2.0.5
35
+ version_requirements: *70361082810620
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: stringex
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &70361082810160 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ~>
@@ -53,15 +43,10 @@ dependencies:
53
43
  version: 1.3.2
54
44
  type: :runtime
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 1.3.2
46
+ version_requirements: *70361082810160
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: rake
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &70361082809700 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ~>
@@ -69,15 +54,10 @@ dependencies:
69
54
  version: 0.9.2
70
55
  type: :development
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: 0.9.2
57
+ version_requirements: *70361082809700
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: rspec
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &70361082809240 !ruby/object:Gem::Requirement
81
61
  none: false
82
62
  requirements:
83
63
  - - ~>
@@ -85,15 +65,10 @@ dependencies:
85
65
  version: 2.8.0
86
66
  type: :development
87
67
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: 2.8.0
68
+ version_requirements: *70361082809240
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: fakefs
96
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &70361082808780 !ruby/object:Gem::Requirement
97
72
  none: false
98
73
  requirements:
99
74
  - - ~>
@@ -101,15 +76,10 @@ dependencies:
101
76
  version: 0.4.0
102
77
  type: :development
103
78
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: 0.4.0
79
+ version_requirements: *70361082808780
110
80
  - !ruby/object:Gem::Dependency
111
81
  name: taps
112
- requirement: !ruby/object:Gem::Requirement
82
+ requirement: &70361082808320 !ruby/object:Gem::Requirement
113
83
  none: false
114
84
  requirements:
115
85
  - - ~>
@@ -117,15 +87,10 @@ dependencies:
117
87
  version: 0.3.23
118
88
  type: :development
119
89
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ~>
124
- - !ruby/object:Gem::Version
125
- version: 0.3.23
90
+ version_requirements: *70361082808320
126
91
  - !ruby/object:Gem::Dependency
127
92
  name: webmock
128
- requirement: !ruby/object:Gem::Requirement
93
+ requirement: &70361082807860 !ruby/object:Gem::Requirement
129
94
  none: false
130
95
  requirements:
131
96
  - - ~>
@@ -133,15 +98,10 @@ dependencies:
133
98
  version: 1.8.0
134
99
  type: :development
135
100
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: 1.8.0
101
+ version_requirements: *70361082807860
142
102
  - !ruby/object:Gem::Dependency
143
103
  name: i18n
144
- requirement: !ruby/object:Gem::Requirement
104
+ requirement: &70361082807400 !ruby/object:Gem::Requirement
145
105
  none: false
146
106
  requirements:
147
107
  - - ~>
@@ -149,15 +109,10 @@ dependencies:
149
109
  version: 0.6.0
150
110
  type: :development
151
111
  prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ~>
156
- - !ruby/object:Gem::Version
157
- version: 0.6.0
112
+ version_requirements: *70361082807400
158
113
  - !ruby/object:Gem::Dependency
159
114
  name: vcr
160
- requirement: !ruby/object:Gem::Requirement
115
+ requirement: &70361082806940 !ruby/object:Gem::Requirement
161
116
  none: false
162
117
  requirements:
163
118
  - - ~>
@@ -165,12 +120,7 @@ dependencies:
165
120
  version: 2.0.0
166
121
  type: :development
167
122
  prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
- requirements:
171
- - - ~>
172
- - !ruby/object:Gem::Version
173
- version: 2.0.0
123
+ version_requirements: *70361082806940
174
124
  description: Client library and command-line tool to translate Ruby based apps with
175
125
  lingohub.
176
126
  email:
@@ -218,15 +168,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
218
168
  - - ! '>='
219
169
  - !ruby/object:Gem::Version
220
170
  version: '0'
171
+ segments:
172
+ - 0
173
+ hash: 3497422470760374720
221
174
  required_rubygems_version: !ruby/object:Gem::Requirement
222
175
  none: false
223
176
  requirements:
224
177
  - - ! '>='
225
178
  - !ruby/object:Gem::Version
226
179
  version: '0'
180
+ segments:
181
+ - 0
182
+ hash: 3497422470760374720
227
183
  requirements: []
228
184
  rubyforge_project:
229
- rubygems_version: 1.8.24
185
+ rubygems_version: 1.8.17
230
186
  signing_key:
231
187
  specification_version: 3
232
188
  summary: Client library and command-line tool to translate Ruby based apps with lingohub.