amara 0.0.4 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +74 -1
- data/lib/amara/activity.rb +6 -0
- data/lib/amara/client.rb +14 -2
- data/lib/amara/message.rb +6 -0
- data/lib/amara/teams.rb +8 -0
- data/lib/amara/teams/applications.rb +6 -0
- data/lib/amara/teams/tasks.rb +6 -0
- data/lib/amara/users.rb +6 -0
- data/lib/amara/version.rb +1 -1
- data/lib/amara/videos.rb +2 -2
- data/lib/amara/videos/languages.rb +1 -1
- data/test/teams_test.rb +17 -6
- data/test/videos_test.rb +85 -0
- metadata +9 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6cd6ab24e7e99f8366d46abe69365bed8f663837
|
|
4
|
+
data.tar.gz: 3e79c86e57e157e5a2cf4900bbb2cff53db291d4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3db329af8e80bed9175df220a782f26561788ad499fc77a72e09556ce6a293f52fb009e885645fe8dde0c216600247fb0c8f96fa1a280519757cd02ed077869f
|
|
7
|
+
data.tar.gz: 632e1937893a11752655146393fc9975a31346f0ed213bb9754841c82fa6db7213f776f89bd68bec4e8f918d6df4903dfefb4720fdf5eb7765f85a153c05ca35
|
data/README.md
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Ruby gem to access the Amara API.
|
|
4
4
|
|
|
5
5
|
http://www.amara.org/
|
|
6
|
+
|
|
6
7
|
http://amara.readthedocs.org/en/latest/api.html
|
|
7
8
|
|
|
8
9
|
## Installation
|
|
@@ -24,9 +25,81 @@ Or install it yourself as:
|
|
|
24
25
|
You need a user account and API key to use the API.
|
|
25
26
|
Some capabilities (e.g. creating a team) are only enabled for enterprise customers.
|
|
26
27
|
|
|
28
|
+
You can use the API on these top level and nested entities (see the client.rb for top level) that match the APi docs:
|
|
29
|
+
|
|
27
30
|
```ruby
|
|
28
|
-
amara = Amara::Client.new
|
|
31
|
+
amara = Amara::Client.new
|
|
32
|
+
|
|
29
33
|
amara.videos
|
|
34
|
+
amara.videos.languages
|
|
35
|
+
amara.videos.languages.subtitles
|
|
36
|
+
amara.videos.urls
|
|
37
|
+
|
|
38
|
+
amara.users
|
|
39
|
+
|
|
40
|
+
amara.teams
|
|
41
|
+
amara.teams.applications
|
|
42
|
+
amara.teams.members
|
|
43
|
+
amara.teams.projects
|
|
44
|
+
amara.teams.safe_members
|
|
45
|
+
amara.teams.tasks
|
|
46
|
+
|
|
47
|
+
amara.activity
|
|
48
|
+
|
|
49
|
+
amara.languages
|
|
50
|
+
|
|
51
|
+
amara.message
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
For each type of entity, you get the following methods: `list`, `get`, `create`, `update`, and `delete`.
|
|
55
|
+
|
|
56
|
+
All these method calls return an `Amara::Response` instance.
|
|
57
|
+
|
|
58
|
+
Entities may be nested, and params passed in for each nesting.
|
|
59
|
+
params to an entity can be a Hash of options, or a string, in which case it is treated like the id of that entity type.
|
|
60
|
+
|
|
61
|
+
Here is an example of how to get the English subtitles for a video with a certain id.
|
|
62
|
+
It shows the use of nested entities, string id params for each entity, and the get method called with no query params:
|
|
63
|
+
```ruby
|
|
64
|
+
amara = Amara::Client.new(api_username: 'amara_api_username', api_key: 'amara_api_key')
|
|
65
|
+
|
|
66
|
+
# get the English subtitles for a video
|
|
67
|
+
amara.videos('yourVideoId').languages('en').subtitles.get
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Here are some more examples of listing and creating a video:
|
|
72
|
+
```ruby
|
|
73
|
+
# get a list of videos
|
|
74
|
+
amara = Amara::Client.new(api_username: 'amara_api_username', api_key: 'amara_api_key')
|
|
75
|
+
response = amara.videos
|
|
76
|
+
videos = response.objects.list
|
|
77
|
+
|
|
78
|
+
# amara responses for a 'list' are paged, get the next page like this:
|
|
79
|
+
more_videos = response.next_page
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
# create a video
|
|
83
|
+
response = amara.videos.create({
|
|
84
|
+
team: 'my-team-name',
|
|
85
|
+
title: 'title',
|
|
86
|
+
video_url: 'https://archive.org/download/example/example.ogg',
|
|
87
|
+
primary_audio_language_code: 'en'
|
|
88
|
+
})
|
|
89
|
+
video = response.object
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
You can do these same operations for Teams and other entities.
|
|
93
|
+
The gem defines lists of `Amara::POLICIES` and `Amara::TEAM_POLICIES` you can use in your requests:
|
|
94
|
+
```ruby
|
|
95
|
+
# create a team
|
|
96
|
+
new_team = amara.teams.create(
|
|
97
|
+
slug: 'prx-test-1',
|
|
98
|
+
name: 'prx test 1',
|
|
99
|
+
is_visible: false,
|
|
100
|
+
membership_policy: Amara::TEAM_POLICIES[:invite]
|
|
101
|
+
)
|
|
102
|
+
|
|
30
103
|
```
|
|
31
104
|
|
|
32
105
|
## Contributing
|
data/lib/amara/client.rb
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
module Amara
|
|
4
4
|
class Client < API
|
|
5
5
|
|
|
6
|
+
def activity(params={}, &block)
|
|
7
|
+
@activity ||= ApiFactory.api('Amara::Activity', self, params, &block)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def languages(params={}, &block)
|
|
11
|
+
@languages ||= ApiFactory.api('Amara::Languages', self, params, &block)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def message(params={}, &block)
|
|
15
|
+
@message ||= ApiFactory.api('Amara::Message', self, params, &block)
|
|
16
|
+
end
|
|
17
|
+
|
|
6
18
|
def teams(params={}, &block)
|
|
7
19
|
@teams ||= ApiFactory.api('Amara::Teams', self, params, &block)
|
|
8
20
|
end
|
|
@@ -11,8 +23,8 @@ module Amara
|
|
|
11
23
|
@videos ||= ApiFactory.api('Amara::Videos', self, params, &block)
|
|
12
24
|
end
|
|
13
25
|
|
|
14
|
-
def
|
|
15
|
-
@
|
|
26
|
+
def users(params={}, &block)
|
|
27
|
+
@users ||= ApiFactory.api('Amara::Users', self, params, &block)
|
|
16
28
|
end
|
|
17
29
|
|
|
18
30
|
end
|
data/lib/amara/teams.rb
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
module Amara
|
|
4
4
|
class Teams < API
|
|
5
5
|
|
|
6
|
+
def applications(params={}, &block)
|
|
7
|
+
@applications ||= ApiFactory.api('Amara::Teams::Applications', self, params, &block)
|
|
8
|
+
end
|
|
9
|
+
|
|
6
10
|
def members(params={}, &block)
|
|
7
11
|
@members ||= ApiFactory.api('Amara::Teams::Members', self, params, &block)
|
|
8
12
|
end
|
|
@@ -15,5 +19,9 @@ module Amara
|
|
|
15
19
|
@safe_members ||= ApiFactory.api('Amara::Teams::SafeMembers', self, params, &block)
|
|
16
20
|
end
|
|
17
21
|
|
|
22
|
+
def tasks(params={}, &block)
|
|
23
|
+
@tasks ||= ApiFactory.api('Amara::Teams::Tasks', self, params, &block)
|
|
24
|
+
end
|
|
25
|
+
|
|
18
26
|
end
|
|
19
27
|
end
|
data/lib/amara/users.rb
ADDED
data/lib/amara/version.rb
CHANGED
data/lib/amara/videos.rb
CHANGED
|
@@ -8,11 +8,11 @@ module Amara
|
|
|
8
8
|
VIDEO_LIST_PARAMS = [:order_by, :project, :team, :video_url]
|
|
9
9
|
VIDEO_ORDERING = [:created, :title]
|
|
10
10
|
|
|
11
|
-
def languages(
|
|
11
|
+
def languages(params={}, &block)
|
|
12
12
|
@languages ||= ApiFactory.api('Amara::Videos::Languages', self, params, &block)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
def urls(
|
|
15
|
+
def urls(params={}, &block)
|
|
16
16
|
@urls ||= ApiFactory.api('Amara::Videos::Urls', self, params, &block)
|
|
17
17
|
end
|
|
18
18
|
|
data/test/teams_test.rb
CHANGED
|
@@ -31,25 +31,36 @@ describe Amara::Teams do
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it "returns a team" do
|
|
34
|
-
response = '{"created": "2013-02-14T07:29:55", "deleted": false, "description": "", "header_html_text": "", "is_moderated": false, "is_visible": true, "logo": null, "max_tasks_per_member": null, "membership_policy": "Open", "name": "", "projects_enabled": false, "resource_uri": "/api2/partners/teams/tedx-import/", "slug": "
|
|
35
|
-
stub_request(:get, "https://www.amara.org/api2/partners/teams/
|
|
34
|
+
response = '{"created": "2013-02-14T07:29:55", "deleted": false, "description": "", "header_html_text": "", "is_moderated": false, "is_visible": true, "logo": null, "max_tasks_per_member": null, "membership_policy": "Open", "name": "", "projects_enabled": false, "resource_uri": "/api2/partners/teams/tedx-import/", "slug": "prx-test-1", "subtitle_policy": "Anyone", "task_assign_policy": "Any team member", "task_expiration": null, "translate_policy": "Anyone", "video_policy": "Any team member", "workflow_enabled": false}'
|
|
35
|
+
stub_request(:get, "https://www.amara.org/api2/partners/teams/prx-test-1/").
|
|
36
36
|
to_return(body: response)
|
|
37
37
|
|
|
38
38
|
teams = Amara::Teams.new(api_key: 'thisisakey', api_username: 'test_user')
|
|
39
39
|
|
|
40
|
-
response = teams.get("
|
|
40
|
+
response = teams.get("prx-test-1")
|
|
41
41
|
response.object.wont_be_nil
|
|
42
42
|
team = response.object
|
|
43
|
-
team.slug.must_equal '
|
|
43
|
+
team.slug.must_equal 'prx-test-1'
|
|
44
44
|
|
|
45
|
-
response = teams.get(team_id: "
|
|
45
|
+
response = teams.get(team_id: "prx-test-1")
|
|
46
46
|
response.object.wont_be_nil
|
|
47
47
|
team = response.object
|
|
48
|
-
team.slug.must_equal '
|
|
48
|
+
team.slug.must_equal 'prx-test-1'
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
it "created a new team" do
|
|
52
52
|
create_response = '{"created": "2013-08-01T13:11:45.167206", "deleted": false, "description": "", "header_html_text": "", "is_moderated": false, "is_visible": true, "logo": null, "max_tasks_per_member": null, "membership_policy": "Open", "name": "prx test 1", "projects_enabled": false, "resource_uri": "/api2/partners/teams/prx-test-1/", "slug": "prx-test-1", "subtitle_policy": "Anyone", "task_assign_policy": "Any team member", "task_expiration": null, "translate_policy": "Anyone", "video_policy": "Any team member", "workflow_enabled": false}'
|
|
53
|
+
|
|
54
|
+
stub_request(:post, "https://www.amara.org/api2/partners/teams/").
|
|
55
|
+
with(:body => "{\"slug\":\"prx-test-1\",\"name\":\"prx test 1\"}",
|
|
56
|
+
:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'Host'=>'www.amara.org:443', 'User-Agent'=>'Amara Ruby Gem 0.1.0', 'X-Api-Username'=>'test_user', 'X-Apikey'=>'thisisakey'}).
|
|
57
|
+
to_return(:status => 200, :body => create_response, :headers => {})
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
teams = Amara::Teams.new(api_key: 'thisisakey', api_username: 'test_user')
|
|
61
|
+
|
|
62
|
+
response = teams.create(slug: 'prx-test-1', name: 'prx test 1')
|
|
63
|
+
|
|
53
64
|
end
|
|
54
65
|
|
|
55
66
|
end
|
data/test/videos_test.rb
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/test_helper')
|
|
4
|
+
|
|
5
|
+
require 'amara/api'
|
|
6
|
+
require 'amara/videos'
|
|
7
|
+
|
|
8
|
+
require 'webmock/minitest'
|
|
9
|
+
|
|
10
|
+
describe Amara::Videos do
|
|
11
|
+
|
|
12
|
+
it "gets the base path for this subclass of API" do
|
|
13
|
+
videos = Amara::Videos.new
|
|
14
|
+
videos.base_path.must_equal 'videos'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "returns a video" do
|
|
18
|
+
response = {
|
|
19
|
+
"all_urls" => ["https://archive.org/download/1-test-mp3.JRiaC2.popuparchive.org/test.ogg"],
|
|
20
|
+
"created" => "2013-08-29T15:35:25.518514",
|
|
21
|
+
"description" => "",
|
|
22
|
+
"duration" => nil,
|
|
23
|
+
"id" => "s7TbkyDizi6k",
|
|
24
|
+
"languages" => [],
|
|
25
|
+
"metadata" => {},
|
|
26
|
+
"original_language" => "en",
|
|
27
|
+
"primary_audio_language_code" => "en",
|
|
28
|
+
"project" => nil,
|
|
29
|
+
"resource_uri" => "/api2/partners/videos/s7TbkyDizi6k/",
|
|
30
|
+
"site_url" => "http://staging.amara.org/videos/s7TbkyDizi6k/info/",
|
|
31
|
+
"video" => "prx-test-1",
|
|
32
|
+
"thumbnail" => "",
|
|
33
|
+
"title" => "cmdline-test-1",
|
|
34
|
+
"video_url" => "https://archive.org/download/1-test-mp3.JRiaC2.popuparchive.org/test.ogg"
|
|
35
|
+
}.to_json
|
|
36
|
+
stub_request(:get, "https://www.amara.org/api2/partners/videos/s7TbkyDizi6k/").
|
|
37
|
+
to_return(body: response)
|
|
38
|
+
|
|
39
|
+
videos = Amara::Videos.new(api_key: 'thisisakey', api_username: 'test_user')
|
|
40
|
+
|
|
41
|
+
response = videos.get("s7TbkyDizi6k")
|
|
42
|
+
response.object.wont_be_nil
|
|
43
|
+
video = response.object
|
|
44
|
+
video.id.must_equal 's7TbkyDizi6k'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "creates a new video" do
|
|
48
|
+
response = {
|
|
49
|
+
"all_urls" => ["https://archive.org/download/1-test-mp3.JRiaC2.popuparchive.org/test.ogg"],
|
|
50
|
+
"created" => "2013-08-29T15:35:25.518514",
|
|
51
|
+
"description" => "",
|
|
52
|
+
"duration" => nil,
|
|
53
|
+
"id" => "s7TbkyDizi6k",
|
|
54
|
+
"languages" => [],
|
|
55
|
+
"metadata" => {},
|
|
56
|
+
"original_language" => "en",
|
|
57
|
+
"primary_audio_language_code" => "en",
|
|
58
|
+
"project" => nil,
|
|
59
|
+
"resource_uri" => "/api2/partners/videos/s7TbkyDizi6k/",
|
|
60
|
+
"site_url" => "http://staging.amara.org/videos/s7TbkyDizi6k/info/",
|
|
61
|
+
"video" => "test-team",
|
|
62
|
+
"thumbnail" => "",
|
|
63
|
+
"title" => "title",
|
|
64
|
+
"video_url" => "https://archive.org/download/1-test-mp3.JRiaC2.popuparchive.org/test.ogg"
|
|
65
|
+
}.to_json
|
|
66
|
+
|
|
67
|
+
stub_request(:post, "https://www.amara.org/api2/partners/videos/").
|
|
68
|
+
with(:body => "{\"team\":\"test-team\",\"title\":\"title\",\"video_url\":\"https://archive.org/download/1-test-mp3.JRiaC2.popuparchive.org/test.ogg\",\"primary_audio_language_code\":\"en\"}",
|
|
69
|
+
:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'Host'=>'www.amara.org:443', 'User-Agent'=>'Amara Ruby Gem 0.1.0', 'X-Api-Username'=>'test_user', 'X-Apikey'=>'thisisakey'}).
|
|
70
|
+
to_return(:status => 200, :body => response, :headers => {})
|
|
71
|
+
|
|
72
|
+
videos = Amara::Videos.new(api_key: 'thisisakey', api_username: 'test_user')
|
|
73
|
+
response = videos.create({
|
|
74
|
+
team: 'test-team',
|
|
75
|
+
title: 'title',
|
|
76
|
+
video_url: 'https://archive.org/download/1-test-mp3.JRiaC2.popuparchive.org/test.ogg',
|
|
77
|
+
primary_audio_language_code: 'en'
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
response.object.wont_be_nil
|
|
81
|
+
video = response.object
|
|
82
|
+
video.id.must_equal 's7TbkyDizi6k'
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: amara
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kuklewicz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-
|
|
11
|
+
date: 2013-09-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -151,17 +151,22 @@ files:
|
|
|
151
151
|
- amara.gemspec
|
|
152
152
|
- lib/.DS_Store
|
|
153
153
|
- lib/amara.rb
|
|
154
|
+
- lib/amara/activity.rb
|
|
154
155
|
- lib/amara/api.rb
|
|
155
156
|
- lib/amara/api_factory.rb
|
|
156
157
|
- lib/amara/client.rb
|
|
157
158
|
- lib/amara/configuration.rb
|
|
158
159
|
- lib/amara/connection.rb
|
|
159
160
|
- lib/amara/languages.rb
|
|
161
|
+
- lib/amara/message.rb
|
|
160
162
|
- lib/amara/response.rb
|
|
161
163
|
- lib/amara/teams.rb
|
|
164
|
+
- lib/amara/teams/applications.rb
|
|
162
165
|
- lib/amara/teams/members.rb
|
|
163
166
|
- lib/amara/teams/projects.rb
|
|
164
167
|
- lib/amara/teams/safe_members.rb
|
|
168
|
+
- lib/amara/teams/tasks.rb
|
|
169
|
+
- lib/amara/users.rb
|
|
165
170
|
- lib/amara/version.rb
|
|
166
171
|
- lib/amara/videos.rb
|
|
167
172
|
- lib/amara/videos/languages.rb
|
|
@@ -172,6 +177,7 @@ files:
|
|
|
172
177
|
- test/teams/projects_test.rb
|
|
173
178
|
- test/teams_test.rb
|
|
174
179
|
- test/test_helper.rb
|
|
180
|
+
- test/videos_test.rb
|
|
175
181
|
homepage: https://github.com/PRX/amara
|
|
176
182
|
licenses: []
|
|
177
183
|
metadata: {}
|
|
@@ -201,3 +207,4 @@ test_files:
|
|
|
201
207
|
- test/teams/projects_test.rb
|
|
202
208
|
- test/teams_test.rb
|
|
203
209
|
- test/test_helper.rb
|
|
210
|
+
- test/videos_test.rb
|