ruby-lokalise-api 1.1.0 → 2.0.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -2
  3. data/README.md +172 -10
  4. data/lib/ruby-lokalise-api.rb +2 -0
  5. data/lib/ruby-lokalise-api/client.rb +18 -0
  6. data/lib/ruby-lokalise-api/collections/base.rb +11 -10
  7. data/lib/ruby-lokalise-api/collections/contributor.rb +1 -3
  8. data/lib/ruby-lokalise-api/collections/file.rb +1 -3
  9. data/lib/ruby-lokalise-api/collections/key.rb +8 -3
  10. data/lib/ruby-lokalise-api/collections/key_comment.rb +2 -3
  11. data/lib/ruby-lokalise-api/collections/project.rb +1 -3
  12. data/lib/ruby-lokalise-api/collections/project_comment.rb +1 -3
  13. data/lib/ruby-lokalise-api/collections/project_language.rb +1 -3
  14. data/lib/ruby-lokalise-api/collections/screenshot.rb +1 -3
  15. data/lib/ruby-lokalise-api/collections/snapshot.rb +1 -3
  16. data/lib/ruby-lokalise-api/collections/system_language.rb +1 -3
  17. data/lib/ruby-lokalise-api/collections/task.rb +1 -3
  18. data/lib/ruby-lokalise-api/collections/team.rb +1 -3
  19. data/lib/ruby-lokalise-api/collections/team_user.rb +1 -3
  20. data/lib/ruby-lokalise-api/collections/translation.rb +1 -3
  21. data/lib/ruby-lokalise-api/error.rb +2 -0
  22. data/lib/ruby-lokalise-api/request.rb +11 -3
  23. data/lib/ruby-lokalise-api/resources/base.rb +51 -41
  24. data/lib/ruby-lokalise-api/resources/contributor.rb +6 -4
  25. data/lib/ruby-lokalise-api/resources/file.rb +7 -12
  26. data/lib/ruby-lokalise-api/resources/key.rb +5 -4
  27. data/lib/ruby-lokalise-api/resources/key_comment.rb +6 -4
  28. data/lib/ruby-lokalise-api/resources/project.rb +10 -7
  29. data/lib/ruby-lokalise-api/resources/project_language.rb +5 -4
  30. data/lib/ruby-lokalise-api/resources/screenshot.rb +5 -4
  31. data/lib/ruby-lokalise-api/resources/snapshot.rb +10 -5
  32. data/lib/ruby-lokalise-api/resources/task.rb +5 -4
  33. data/lib/ruby-lokalise-api/resources/team_user.rb +6 -4
  34. data/lib/ruby-lokalise-api/resources/translation.rb +5 -4
  35. data/lib/ruby-lokalise-api/rest/comments.rb +6 -6
  36. data/lib/ruby-lokalise-api/rest/contributors.rb +6 -6
  37. data/lib/ruby-lokalise-api/rest/files.rb +3 -3
  38. data/lib/ruby-lokalise-api/rest/keys.rb +9 -9
  39. data/lib/ruby-lokalise-api/rest/languages.rb +7 -7
  40. data/lib/ruby-lokalise-api/rest/projects.rb +7 -7
  41. data/lib/ruby-lokalise-api/rest/screenshots.rb +6 -6
  42. data/lib/ruby-lokalise-api/rest/snapshots.rb +5 -5
  43. data/lib/ruby-lokalise-api/rest/tasks.rb +6 -6
  44. data/lib/ruby-lokalise-api/rest/team_users.rb +5 -5
  45. data/lib/ruby-lokalise-api/rest/teams.rb +1 -1
  46. data/lib/ruby-lokalise-api/rest/translations.rb +3 -3
  47. data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +19 -5
  48. data/lib/ruby-lokalise-api/utils/endpoint_helpers.rb +12 -0
  49. data/lib/ruby-lokalise-api/utils/string_utils.rb +4 -0
  50. data/lib/ruby-lokalise-api/version.rb +1 -1
  51. data/ruby-lokalise-api.gemspec +1 -0
  52. data/spec/lib/ruby-lokalise-api/rest/comments_spec.rb +22 -5
  53. data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +35 -2
  54. data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +55 -4
  55. data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +31 -2
  56. data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +36 -2
  57. data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +45 -8
  58. data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +25 -2
  59. data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +38 -2
  60. data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +25 -2
  61. data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +17 -3
  62. metadata +17 -2
@@ -2,12 +2,14 @@ module Lokalise
2
2
  module Resources
3
3
  class KeyComment < Base
4
4
  DATA_KEY = 'Comment'.freeze
5
+ ID_KEY = 'comment'.freeze
6
+ supports :destroy
5
7
 
6
8
  class << self
7
- private
8
-
9
- def endpoint(project_id, key_id)
10
- "projects/#{project_id}/keys/#{key_id}/comments"
9
+ def endpoint(project_id, key_id, comment_id = nil)
10
+ path_from projects: project_id,
11
+ keys: key_id,
12
+ comments: comment_id
11
13
  end
12
14
  end
13
15
  end
@@ -1,16 +1,19 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Project < Base
4
+ supports :update, :destroy
5
+
6
+ def empty
7
+ self.class.empty @client, @path + '/empty'
8
+ end
9
+
4
10
  class << self
5
- def clear(client, project_id)
6
- put("#{endpoint(project_id)}/empty", client)['content']
11
+ def empty(client, path, *_args)
12
+ put(path, client)['content']
7
13
  end
8
14
 
9
- private
10
-
11
- def endpoint(project_id = nil)
12
- 'projects' unless project_id
13
- "projects/#{project_id}"
15
+ def endpoint(project_id = nil, action = nil)
16
+ path_from projects: [project_id, action]
14
17
  end
15
18
  end
16
19
  end
@@ -2,12 +2,13 @@ module Lokalise
2
2
  module Resources
3
3
  class ProjectLanguage < Base
4
4
  DATA_KEY = 'Language'.freeze
5
+ ID_KEY = 'lang'.freeze
6
+ supports :update, :destroy
5
7
 
6
8
  class << self
7
- private
8
-
9
- def endpoint(project_id)
10
- "projects/#{project_id}/languages"
9
+ def endpoint(project_id, language_id = nil)
10
+ path_from projects: project_id,
11
+ languages: language_id
11
12
  end
12
13
  end
13
14
  end
@@ -1,11 +1,12 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Screenshot < Base
4
- class << self
5
- private
4
+ supports :update, :destroy
6
5
 
7
- def endpoint(project_id)
8
- "projects/#{project_id}/screenshots"
6
+ class << self
7
+ def endpoint(project_id, screenshot_id = nil)
8
+ path_from projects: project_id,
9
+ screenshots: screenshot_id
9
10
  end
10
11
  end
11
12
  end
@@ -1,15 +1,20 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Snapshot < Base
4
+ supports :destroy
5
+
6
+ def restore
7
+ self.class.restore @client, @path
8
+ end
9
+
4
10
  class << self
5
- def restore(client, project_id, snapshot_id)
6
- Lokalise::Resources::Project.new post(endpoint(project_id, snapshot_id), client)
11
+ def restore(client, path, *_args)
12
+ Lokalise::Resources::Project.new post(path, client)
7
13
  end
8
14
 
9
- private
10
-
11
15
  def endpoint(project_id, snapshot_id = nil)
12
- "projects/#{project_id}/snapshots/#{snapshot_id}"
16
+ path_from projects: project_id,
17
+ snapshots: snapshot_id
13
18
  end
14
19
  end
15
20
  end
@@ -1,11 +1,12 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Task < Base
4
- class << self
5
- private
4
+ supports :update, :destroy
6
5
 
7
- def endpoint(project_id)
8
- "projects/#{project_id}/tasks"
6
+ class << self
7
+ def endpoint(project_id, task_id = nil)
8
+ path_from projects: project_id,
9
+ tasks: task_id
9
10
  end
10
11
  end
11
12
  end
@@ -1,11 +1,13 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class TeamUser < Base
4
- class << self
5
- private
4
+ ID_KEY = 'user'.freeze
5
+ supports :update, :destroy
6
6
 
7
- def endpoint(team_id)
8
- "teams/#{team_id}/users"
7
+ class << self
8
+ def endpoint(team_id, team_user_id = nil)
9
+ path_from teams: team_id,
10
+ users: team_user_id
9
11
  end
10
12
  end
11
13
  end
@@ -1,11 +1,12 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Translation < Base
4
- class << self
5
- private
4
+ supports :update
6
5
 
7
- def endpoint(project_id)
8
- "projects/#{project_id}/translations"
6
+ class << self
7
+ def endpoint(project_id, translation_id = nil)
8
+ path_from projects: project_id,
9
+ translations: translation_id
9
10
  end
10
11
  end
11
12
  end
@@ -8,7 +8,7 @@ module Lokalise
8
8
  # @param key_id [String, Integer]
9
9
  # @param comment_id [String, Integer]
10
10
  def comment(project_id, key_id, comment_id)
11
- Lokalise::Resources::KeyComment.find self, [project_id, key_id], comment_id
11
+ c_r Lokalise::Resources::KeyComment, :find, [project_id, key_id, comment_id]
12
12
  end
13
13
 
14
14
  # Returns all comments for all keys inside the given project
@@ -18,7 +18,7 @@ module Lokalise
18
18
  # @param project_id [String]
19
19
  # @param params [Hash]
20
20
  def project_comments(project_id, params = {})
21
- Lokalise::Collections::ProjectComment.all self, params, project_id
21
+ c_r Lokalise::Collections::ProjectComment, :all, project_id, params
22
22
  end
23
23
 
24
24
  # Returns all comments for the given key inside the given project
@@ -29,7 +29,7 @@ module Lokalise
29
29
  # @param key_id [String, Integer]
30
30
  # @param params [Hash]
31
31
  def comments(project_id, key_id, params = {})
32
- Lokalise::Collections::KeyComment.all self, params, project_id, key_id
32
+ c_r Lokalise::Collections::KeyComment, :all, [project_id, key_id], params
33
33
  end
34
34
 
35
35
  # Creates one or more comments for the given key inside the given project
@@ -40,7 +40,7 @@ module Lokalise
40
40
  # @param key_id [String, Integer]
41
41
  # @param params [Hash, Array<Hash>]
42
42
  def create_comments(project_id, key_id, params)
43
- Lokalise::Resources::KeyComment.create self, [project_id, key_id], params, :comments
43
+ c_r Lokalise::Resources::KeyComment, :create, [project_id, key_id], params, :comments
44
44
  end
45
45
 
46
46
  # Deletes comment for the given key inside the given project
@@ -50,8 +50,8 @@ module Lokalise
50
50
  # @param project_id [String]
51
51
  # @param key_id [String, Integer]
52
52
  # @param comment_id [String, Integer]
53
- def delete_comment(project_id, key_id, comment_id)
54
- Lokalise::Resources::KeyComment.destroy self, [project_id, key_id], comment_id
53
+ def destroy_comment(project_id, key_id, comment_id)
54
+ c_r Lokalise::Resources::KeyComment, :destroy, [project_id, key_id, comment_id]
55
55
  end
56
56
  end
57
57
  end
@@ -7,7 +7,7 @@ module Lokalise
7
7
  # @param project_id [String]
8
8
  # @param params [Hash]
9
9
  def contributors(project_id, params = {})
10
- Lokalise::Collections::Contributor.all self, params, project_id
10
+ c_r Lokalise::Collections::Contributor, :all, project_id, params
11
11
  end
12
12
 
13
13
  # Returns a single contributor for the given project
@@ -17,7 +17,7 @@ module Lokalise
17
17
  # @param project_id [String]
18
18
  # @param contributor_id [String, Integer]
19
19
  def contributor(project_id, contributor_id)
20
- Lokalise::Resources::Contributor.find self, project_id, contributor_id
20
+ c_r Lokalise::Resources::Contributor, :find, [project_id, contributor_id]
21
21
  end
22
22
 
23
23
  # Creates one or more contributors inside the given project
@@ -27,7 +27,7 @@ module Lokalise
27
27
  # @param project_id [String]
28
28
  # @param params [Hash, Array<Hash>]
29
29
  def create_contributors(project_id, params)
30
- Lokalise::Resources::Contributor.create self, project_id, params, :contributors
30
+ c_r Lokalise::Resources::Contributor, :create, project_id, params, :contributors
31
31
  end
32
32
 
33
33
  # Updates the given contributor inside the given project
@@ -38,7 +38,7 @@ module Lokalise
38
38
  # @param contributor_id [String, Integer]
39
39
  # @param params [Hash]
40
40
  def update_contributor(project_id, contributor_id, params)
41
- Lokalise::Resources::Contributor.update self, project_id, contributor_id, params
41
+ c_r Lokalise::Resources::Contributor, :update, [project_id, contributor_id], params
42
42
  end
43
43
 
44
44
  # Deletes contributor inside the given project
@@ -47,8 +47,8 @@ module Lokalise
47
47
  # @return [Hash]
48
48
  # @param project_id [String]
49
49
  # @param contributor_id [String, Integer]
50
- def delete_contributor(project_id, contributor_id)
51
- Lokalise::Resources::Contributor.destroy self, project_id, contributor_id
50
+ def destroy_contributor(project_id, contributor_id)
51
+ c_r Lokalise::Resources::Contributor, :destroy, [project_id, contributor_id]
52
52
  end
53
53
  end
54
54
  end
@@ -7,7 +7,7 @@ module Lokalise
7
7
  # @param project_id [String]
8
8
  # @param params [Hash]
9
9
  def files(project_id, params = {})
10
- Lokalise::Collections::File.all self, params, project_id
10
+ c_r Lokalise::Collections::File, :all, project_id, params
11
11
  end
12
12
 
13
13
  # Exports translation files as .zip bundle, uploads them to Amazon S3 and returns a URL to the generated bundle. The URL is valid for a year
@@ -17,7 +17,7 @@ module Lokalise
17
17
  # @param project_id [String]
18
18
  # @param params [Hash]
19
19
  def download_files(project_id, params)
20
- Lokalise::Resources::File.download self, project_id, params
20
+ c_r Lokalise::Resources::File, :download, [project_id, 'download'], params
21
21
  end
22
22
 
23
23
  # Imports translation file to the given project. File data must base64-encoded
@@ -27,7 +27,7 @@ module Lokalise
27
27
  # @param project_id [String]
28
28
  # @param params [Hash]
29
29
  def upload_file(project_id, params)
30
- Lokalise::Resources::File.upload self, project_id, params
30
+ c_r Lokalise::Resources::File, :upload, [project_id, 'upload'], params
31
31
  end
32
32
  end
33
33
  end
@@ -7,7 +7,7 @@ module Lokalise
7
7
  # @param project_id [String]
8
8
  # @param params [Hash]
9
9
  def keys(project_id, params = {})
10
- Lokalise::Collections::Key.all self, params, project_id
10
+ c_r Lokalise::Collections::Key, :all, project_id, params
11
11
  end
12
12
 
13
13
  # Returns a single translation key for the given project
@@ -18,7 +18,7 @@ module Lokalise
18
18
  # @param key_id [String, Integer]
19
19
  # @param params [Hash]
20
20
  def key(project_id, key_id, params = {})
21
- Lokalise::Resources::Key.find self, project_id, key_id, params
21
+ c_r Lokalise::Resources::Key, :find, [project_id, key_id], params
22
22
  end
23
23
 
24
24
  # Creates one or more translation keys for the given project
@@ -28,7 +28,7 @@ module Lokalise
28
28
  # @param project_id [String]
29
29
  # @param params [Hash, Array<Hash>]
30
30
  def create_keys(project_id, params = {})
31
- Lokalise::Resources::Key.create self, project_id, params, :keys
31
+ c_r Lokalise::Resources::Key, :create, project_id, params, :keys
32
32
  end
33
33
 
34
34
  # Updates translation key for the given project
@@ -39,7 +39,7 @@ module Lokalise
39
39
  # @param key_id [String, Integer]
40
40
  # @param params [Hash]
41
41
  def update_key(project_id, key_id, params = {})
42
- Lokalise::Resources::Key.update self, project_id, key_id, params
42
+ c_r Lokalise::Resources::Key, :update, [project_id, key_id], params
43
43
  end
44
44
 
45
45
  # Updates one or multiple translation keys for the given project
@@ -49,7 +49,7 @@ module Lokalise
49
49
  # @param project_id [String]
50
50
  # @param params [Hash, Array<Hash>]
51
51
  def update_keys(project_id, params)
52
- Lokalise::Resources::Key.update self, project_id, nil, params, :keys
52
+ c_r Lokalise::Resources::Key, :update, project_id, params, :keys
53
53
  end
54
54
 
55
55
  # Deletes translation key for the given project
@@ -58,8 +58,8 @@ module Lokalise
58
58
  # @return [Hash]
59
59
  # @param project_id [String]
60
60
  # @param key_id [String, Integer]
61
- def delete_key(project_id, key_id)
62
- Lokalise::Resources::Key.destroy self, project_id, key_id
61
+ def destroy_key(project_id, key_id)
62
+ c_r Lokalise::Resources::Key, :destroy, [project_id, key_id]
63
63
  end
64
64
 
65
65
  # Deletes one or multiple translation keys for the given project
@@ -68,8 +68,8 @@ module Lokalise
68
68
  # @return [Hash]
69
69
  # @param project_id [String]
70
70
  # @param key_ids [String, Integer, Array<String>, Array<Integer>]
71
- def delete_keys(project_id, key_ids)
72
- Lokalise::Resources::Key.destroy self, project_id, keys: key_ids
71
+ def destroy_keys(project_id, key_ids)
72
+ c_r Lokalise::Resources::Key, :destroy, project_id, key_ids, :keys
73
73
  end
74
74
  end
75
75
  end
@@ -6,7 +6,7 @@ module Lokalise
6
6
  # @return [Lokalise::Collection::SystemLanguage<Lokalise::Resources::SystemLanguage>]
7
7
  # @param params [Hash]
8
8
  def system_languages(params = {})
9
- Lokalise::Collections::SystemLanguage.all self, params
9
+ c_r Lokalise::Collections::SystemLanguage, :all, nil, params
10
10
  end
11
11
 
12
12
  # Returns all languages for the given project
@@ -16,7 +16,7 @@ module Lokalise
16
16
  # @param project_id [String, Integer]
17
17
  # @param params [Hash]
18
18
  def project_languages(project_id, params = {})
19
- Lokalise::Collections::ProjectLanguage.all self, params, project_id
19
+ c_r Lokalise::Collections::ProjectLanguage, :all, project_id, params
20
20
  end
21
21
 
22
22
  # Returns a single language for the given project
@@ -26,7 +26,7 @@ module Lokalise
26
26
  # @param project_id [String]
27
27
  # @param language_id [String, Integer]
28
28
  def language(project_id, language_id)
29
- Lokalise::Resources::ProjectLanguage.find self, project_id, language_id
29
+ c_r Lokalise::Resources::ProjectLanguage, :find, [project_id, language_id]
30
30
  end
31
31
 
32
32
  # Creates one or more language for the given project
@@ -36,7 +36,7 @@ module Lokalise
36
36
  # @param project_id [String]
37
37
  # @param params [Hash]
38
38
  def create_languages(project_id, params)
39
- Lokalise::Resources::ProjectLanguage.create self, project_id, params, :languages
39
+ c_r Lokalise::Resources::ProjectLanguage, :create, project_id, params, :languages
40
40
  end
41
41
 
42
42
  # Updates language for the given project
@@ -47,7 +47,7 @@ module Lokalise
47
47
  # @param language_id [String, Integer]
48
48
  # @param params [Hash]
49
49
  def update_language(project_id, language_id, params)
50
- Lokalise::Resources::ProjectLanguage.update self, project_id, language_id, params
50
+ c_r Lokalise::Resources::ProjectLanguage, :update, [project_id, language_id], params
51
51
  end
52
52
 
53
53
  # Deletes language for the given project
@@ -56,8 +56,8 @@ module Lokalise
56
56
  # @return [Hash]
57
57
  # @param project_id [String]
58
58
  # @param language_id [String, Integer]
59
- def delete_language(project_id, language_id)
60
- Lokalise::Resources::ProjectLanguage.destroy self, project_id, language_id
59
+ def destroy_language(project_id, language_id)
60
+ c_r Lokalise::Resources::ProjectLanguage, :destroy, [project_id, language_id]
61
61
  end
62
62
  end
63
63
  end
@@ -6,7 +6,7 @@ module Lokalise
6
6
  # @return [Lokalise::Collection::Project<Lokalise::Resources::Project>]
7
7
  # @param params [Hash]
8
8
  def projects(params = {})
9
- Lokalise::Collections::Project.all self, params
9
+ c_r Lokalise::Collections::Project, :all, nil, params
10
10
  end
11
11
 
12
12
  # Returns a single project
@@ -15,7 +15,7 @@ module Lokalise
15
15
  # @return [Lokalise::Resources::Project]
16
16
  # @param project_id [String, Integer]
17
17
  def project(project_id)
18
- Lokalise::Resources::Project.find self, nil, project_id
18
+ c_r Lokalise::Resources::Project, :find, project_id
19
19
  end
20
20
 
21
21
  # Creates project
@@ -24,7 +24,7 @@ module Lokalise
24
24
  # @return [Lokalise::Resources::Project]
25
25
  # @param params [Hash]
26
26
  def create_project(params)
27
- Lokalise::Resources::Project.create self, nil, params
27
+ c_r Lokalise::Resources::Project, :create, nil, params
28
28
  end
29
29
 
30
30
  # Updates project
@@ -34,7 +34,7 @@ module Lokalise
34
34
  # @param project_id [String, Integer]
35
35
  # @param params [Hash]
36
36
  def update_project(project_id, params)
37
- Lokalise::Resources::Project.update self, nil, project_id, params
37
+ c_r Lokalise::Resources::Project, :update, project_id, params
38
38
  end
39
39
 
40
40
  # Deletes all keys and translations from the project
@@ -43,7 +43,7 @@ module Lokalise
43
43
  # @return [Hash]
44
44
  # @param project_id [String, Integer]
45
45
  def empty_project(project_id)
46
- Lokalise::Resources::Project.clear self, project_id
46
+ c_r Lokalise::Resources::Project, :empty, [project_id, 'empty']
47
47
  end
48
48
 
49
49
  # Deletes the project
@@ -51,8 +51,8 @@ module Lokalise
51
51
  # @see https://lokalise.co/api2docs/ruby/#transition-delete-a-project-delete
52
52
  # @return [Hash]
53
53
  # @param project_id [String, Integer]
54
- def delete_project(project_id)
55
- Lokalise::Resources::Project.destroy self, nil, project_id
54
+ def destroy_project(project_id)
55
+ c_r Lokalise::Resources::Project, :destroy, project_id
56
56
  end
57
57
  end
58
58
  end