amaranth 0.3.3 → 0.3.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 632c3345186c7238891ec515cebc8826239f0516
4
- data.tar.gz: 39a80499a4b7c599c047c32a382548c28411b4c1
2
+ SHA256:
3
+ metadata.gz: bea88580a7f06515df9387ff76c565d07d8c58b7f2a28c86cc7a89d98248d138
4
+ data.tar.gz: 21acbfab6b730697f2ecad0290184341396831032f5d3d23ab728c92b2e71fb7
5
5
  SHA512:
6
- metadata.gz: d8dd7aad21e6b1e1c2e0a8311fc71cea38312dc52f5e338c8fba11e338c27e23660dca39147e1a5ce0a1b0b1087d85ba897ec4debd92d791581e73583efd1bfb
7
- data.tar.gz: 99ba6744c34f24e94eb4c78e40a90acb44edc45d085cd2990e67c4bb36cc3f957bdd8fd6db1b30f2272432d3bcaf73e55f80f10b73c3feeaa5e54efe115f0c22
6
+ metadata.gz: a90719c85924793222d350857e0552ff1d14664e1222344f56a8cfe7b4635b7b627dcf740b60ddf9792ca562262c48d151f6fc69b45e0c1fa9ca29c09ebb38c3
7
+ data.tar.gz: 969f665cb658394e64f3492f0202d20976f4574c63de68fa78c9e5fc7916a368b216424de71ec4c950084e1aed3274800fb5cfc7291de7b1d74affe39b2ec7ad
data/amaranth.gemspec CHANGED
@@ -20,5 +20,5 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "rake", "~> 10.0"
22
22
  spec.add_development_dependency "rspec", "~> 3.0"
23
- spec.add_development_dependency "webmock", "~> 1.0"
23
+ spec.add_development_dependency "webmock", "~> 2.0"
24
24
  end
data/bin/setup CHANGED
File without changes
@@ -0,0 +1,45 @@
1
+ require "amaranth/request"
2
+
3
+ module Amaranth
4
+ class Collection
5
+ private_class_method def self.fetch url
6
+ json = Request.get(url)
7
+ objects = json["objects"]
8
+ next_url = json["meta"]["next"]
9
+ objects += fetch(next_url) if next_url
10
+ objects
11
+ end
12
+
13
+ def self.field key
14
+ @fields ||= []
15
+ @fields << key
16
+ attr_accessor key
17
+ end
18
+
19
+ def self.fields
20
+ @fields
21
+ end
22
+
23
+ def initialize attributes={}
24
+ self.attributes = attributes
25
+ end
26
+
27
+ def attributes= attributes
28
+ attributes.each do |key, value|
29
+ send :"#{key}=", value
30
+ end
31
+ end
32
+
33
+ def == other
34
+ self.attributes == other.attributes
35
+ end
36
+
37
+ def attributes
38
+ self.class.fields.reduce({}) do |attrs, key|
39
+ attrs.merge key => send(key)
40
+ end
41
+ end
42
+
43
+ alias_method :to_h, :attributes
44
+ end
45
+ end
@@ -1,10 +1,15 @@
1
- require "amaranth/request"
1
+ require "amaranth/collection"
2
2
 
3
3
  module Amaranth
4
- class Project < Struct.new(:name, :slug, :team_slug)
4
+ class Project < Collection
5
+ field :name
6
+ field :slug
7
+ field :team_slug
8
+
5
9
  def self.all team_slug:
6
- Request.get("/api/teams/#{team_slug}/projects/")["objects"].map do |attributes|
7
- attributes = attributes.keep_if { |key, value| members.include? key.to_sym }
10
+ url = "/api/teams/#{team_slug}/projects/?limit=100"
11
+ fetch(url).map do |attributes|
12
+ attributes = attributes.keep_if { |key, value| fields.include? key.to_sym }
8
13
  attributes["team_slug"] = team_slug
9
14
  new attributes
10
15
  end
@@ -25,12 +30,6 @@ module Amaranth
25
30
  all(team_slug: team_slug).find { |project| project.slug == slug }
26
31
  end
27
32
 
28
- def initialize attributes={}
29
- attributes.each do |key, value|
30
- self[key] = value
31
- end
32
- end
33
-
34
33
  def videos
35
34
  Video.all(team_slug: team_slug, project_slug: slug)
36
35
  end
@@ -1,3 +1,3 @@
1
1
  module Amaranth
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
@@ -1,24 +1,27 @@
1
- require "amaranth/request"
1
+ require "amaranth/collection"
2
2
 
3
3
  module Amaranth
4
- class Video < Struct.new(:id, :title, :description, :duration, :primary_audio_language_code, :thumbnail, :team, :project, :all_urls, :languages)
4
+ class Video < Collection
5
+ field :id
6
+ field :title
7
+ field :description
8
+ field :duration
9
+ field :primary_audio_language_code
10
+ field :thumbnail
11
+ field :team
12
+ field :project
13
+ field :all_urls
14
+ field :languages
15
+
5
16
  def self.all team_slug: nil, project_slug: nil
6
17
  url = "https://amara.org/api/videos/?limit=100"
7
18
  url += "&team=#{team_slug}" if team_slug
8
19
  url += "&project=#{project_slug}" if project_slug
9
20
  fetch(url).map do |attributes|
10
- new attributes.keep_if { |key, value| members.include? key.to_sym }
21
+ new attributes.keep_if { |key, value| fields.include? key.to_sym }
11
22
  end
12
23
  end
13
24
 
14
- private_class_method def self.fetch url
15
- json = Request.get(url)
16
- objects = json["objects"]
17
- next_url = json["meta"]["next"]
18
- objects += fetch(next_url) if next_url
19
- objects
20
- end
21
-
22
25
  def self.create attributes
23
26
  Request.post("/api/videos/", attributes)
24
27
  end
@@ -26,7 +29,7 @@ module Amaranth
26
29
  def self.find_by_video_url video_url
27
30
  if json = Request.get("/api/videos/?video_url=#{video_url}")
28
31
  attributes = json["objects"].first
29
- new attributes.keep_if { |key, value| members.include? key.to_sym }
32
+ new attributes.keep_if { |key, value| fields.include? key.to_sym }
30
33
  end
31
34
  end
32
35
 
@@ -37,16 +40,8 @@ module Amaranth
37
40
  Amaranth::Video.find_by_video_url(video_url).update(attributes)
38
41
  end
39
42
 
40
- def initialize attributes={}
41
- attributes.each do |key, value|
42
- self[key] = value
43
- end
44
- end
45
-
46
43
  def update attributes={}
47
- attributes.each do |key, value|
48
- self[key] = value
49
- end
44
+ self.attributes = attributes
50
45
  save
51
46
  end
52
47
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amaranth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-22 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.0'
47
+ version: '2.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.0'
54
+ version: '2.0'
55
55
  description:
56
56
  email:
57
57
  - micah@botandrose.com
@@ -70,6 +70,7 @@ files:
70
70
  - bin/console
71
71
  - bin/setup
72
72
  - lib/amaranth.rb
73
+ - lib/amaranth/collection.rb
73
74
  - lib/amaranth/config.rb
74
75
  - lib/amaranth/project.rb
75
76
  - lib/amaranth/request.rb
@@ -95,8 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
96
  - !ruby/object:Gem::Version
96
97
  version: '0'
97
98
  requirements: []
98
- rubyforge_project:
99
- rubygems_version: 2.4.8
99
+ rubygems_version: 3.0.8
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: Library for accessing the Amara REST API