apple-news 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +4 -0
  6. data/README.md +138 -0
  7. data/Rakefile +6 -0
  8. data/apple-news.gemspec +28 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/lib/apple-news.rb +41 -0
  12. data/lib/apple-news/addition.rb +7 -0
  13. data/lib/apple-news/additions/base.rb +15 -0
  14. data/lib/apple-news/additions/link.rb +9 -0
  15. data/lib/apple-news/animation.rb +7 -0
  16. data/lib/apple-news/animations/appear.rb +7 -0
  17. data/lib/apple-news/animations/base.rb +17 -0
  18. data/lib/apple-news/animations/fade_in.rb +8 -0
  19. data/lib/apple-news/animations/move_in.rb +8 -0
  20. data/lib/apple-news/animations/scale_fade.rb +8 -0
  21. data/lib/apple-news/article.rb +33 -0
  22. data/lib/apple-news/behavior.rb +7 -0
  23. data/lib/apple-news/behaviors/background_motion.rb +7 -0
  24. data/lib/apple-news/behaviors/background_parallax.rb +7 -0
  25. data/lib/apple-news/behaviors/base.rb +15 -0
  26. data/lib/apple-news/behaviors/motion.rb +7 -0
  27. data/lib/apple-news/behaviors/parallax.rb +8 -0
  28. data/lib/apple-news/behaviors/springy.rb +7 -0
  29. data/lib/apple-news/channel.rb +40 -0
  30. data/lib/apple-news/component.rb +28 -0
  31. data/lib/apple-news/component_layout.rb +9 -0
  32. data/lib/apple-news/components/audio.rb +16 -0
  33. data/lib/apple-news/components/author.rb +8 -0
  34. data/lib/apple-news/components/banner_advertisement.rb +14 -0
  35. data/lib/apple-news/components/base.rb +17 -0
  36. data/lib/apple-news/components/body.rb +8 -0
  37. data/lib/apple-news/components/byline.rb +8 -0
  38. data/lib/apple-news/components/caption.rb +8 -0
  39. data/lib/apple-news/components/chapter.rb +10 -0
  40. data/lib/apple-news/components/container.rb +8 -0
  41. data/lib/apple-news/components/divider.rb +8 -0
  42. data/lib/apple-news/components/embed_web_video.rb +12 -0
  43. data/lib/apple-news/components/figure.rb +8 -0
  44. data/lib/apple-news/components/gallery.rb +8 -0
  45. data/lib/apple-news/components/header.rb +7 -0
  46. data/lib/apple-news/components/heading.rb +8 -0
  47. data/lib/apple-news/components/illustrator.rb +8 -0
  48. data/lib/apple-news/components/image.rb +14 -0
  49. data/lib/apple-news/components/instagram.rb +9 -0
  50. data/lib/apple-news/components/intro.rb +8 -0
  51. data/lib/apple-news/components/logo.rb +8 -0
  52. data/lib/apple-news/components/medium_rectangle_advertisement.rb +7 -0
  53. data/lib/apple-news/components/mosaic.rb +8 -0
  54. data/lib/apple-news/components/music.rb +8 -0
  55. data/lib/apple-news/components/photo.rb +8 -0
  56. data/lib/apple-news/components/photographer.rb +8 -0
  57. data/lib/apple-news/components/portrait.rb +8 -0
  58. data/lib/apple-news/components/pullquote.rb +8 -0
  59. data/lib/apple-news/components/quote.rb +8 -0
  60. data/lib/apple-news/components/scalable_image.rb +14 -0
  61. data/lib/apple-news/components/section.rb +8 -0
  62. data/lib/apple-news/components/text.rb +13 -0
  63. data/lib/apple-news/components/title.rb +8 -0
  64. data/lib/apple-news/components/tweet.rb +9 -0
  65. data/lib/apple-news/components/video.rb +12 -0
  66. data/lib/apple-news/configuration.rb +12 -0
  67. data/lib/apple-news/document.rb +22 -0
  68. data/lib/apple-news/document/attachments.rb +24 -0
  69. data/lib/apple-news/document/metadata.rb +43 -0
  70. data/lib/apple-news/document/persistence.rb +42 -0
  71. data/lib/apple-news/layout.rb +8 -0
  72. data/lib/apple-news/links.rb +19 -0
  73. data/lib/apple-news/metadata.rb +15 -0
  74. data/lib/apple-news/multipart_post_patch.rb +29 -0
  75. data/lib/apple-news/properties.rb +87 -0
  76. data/lib/apple-news/properties/advertising_layout.rb +7 -0
  77. data/lib/apple-news/properties/advertising_settings.rb +7 -0
  78. data/lib/apple-news/properties/anchor.rb +15 -0
  79. data/lib/apple-news/properties/base.rb +7 -0
  80. data/lib/apple-news/properties/caption_descriptor.rb +8 -0
  81. data/lib/apple-news/properties/color_stop.rb +8 -0
  82. data/lib/apple-news/properties/content_inset.rb +7 -0
  83. data/lib/apple-news/properties/gallery_item.rb +7 -0
  84. data/lib/apple-news/properties/margin.rb +7 -0
  85. data/lib/apple-news/properties/offset.rb +7 -0
  86. data/lib/apple-news/property.rb +7 -0
  87. data/lib/apple-news/request.rb +6 -0
  88. data/lib/apple-news/requests/get.rb +28 -0
  89. data/lib/apple-news/requests/post.rb +57 -0
  90. data/lib/apple-news/resource.rb +25 -0
  91. data/lib/apple-news/scene.rb +7 -0
  92. data/lib/apple-news/scenes/base.rb +15 -0
  93. data/lib/apple-news/scenes/fading_sticky_header.rb +8 -0
  94. data/lib/apple-news/scenes/parallax_scale_header.rb +7 -0
  95. data/lib/apple-news/section.rb +27 -0
  96. data/lib/apple-news/security.rb +46 -0
  97. data/lib/apple-news/style.rb +10 -0
  98. data/lib/apple-news/styles/base.rb +7 -0
  99. data/lib/apple-news/styles/border.rb +7 -0
  100. data/lib/apple-news/styles/component.rb +7 -0
  101. data/lib/apple-news/styles/component_text.rb +9 -0
  102. data/lib/apple-news/styles/document.rb +7 -0
  103. data/lib/apple-news/styles/drop_cap.rb +9 -0
  104. data/lib/apple-news/styles/fill.rb +11 -0
  105. data/lib/apple-news/styles/gradient_fill.rb +12 -0
  106. data/lib/apple-news/styles/image_fill.rb +11 -0
  107. data/lib/apple-news/styles/inline_text.rb +7 -0
  108. data/lib/apple-news/styles/linear_gradient_fill.rb +9 -0
  109. data/lib/apple-news/styles/shadow.rb +8 -0
  110. data/lib/apple-news/styles/stroke.rb +7 -0
  111. data/lib/apple-news/styles/text.rb +8 -0
  112. data/lib/apple-news/styles/text_stroke.rb +8 -0
  113. data/lib/apple-news/styles/video_fill.rb +12 -0
  114. data/lib/apple-news/version.rb +3 -0
  115. metadata +241 -0
@@ -0,0 +1,7 @@
1
+ require 'apple-news/properties/base'
2
+ Dir["#{File.dirname(__FILE__)}/properties/*.rb"].each { |path| require path }
3
+
4
+ module AppleNews
5
+ module Property
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ Dir["#{File.dirname(__FILE__)}/requests/*.rb"].each { |path| require path }
2
+
3
+ module AppleNews
4
+ module Request
5
+ end
6
+ end
@@ -0,0 +1,28 @@
1
+ module AppleNews
2
+ module Request
3
+ class Get
4
+ attr_reader :url
5
+
6
+ def initialize(url)
7
+ @config = AppleNews.config
8
+ @url = URI::parse(File.join(@config.api_base, url))
9
+ end
10
+
11
+ def call(params = {})
12
+ http = Net::HTTP.new(@url.hostname, @url.port)
13
+ http.use_ssl = true
14
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
15
+
16
+ res = http.get(@url, headers)
17
+ JSON.parse(res.body)
18
+ end
19
+
20
+ private
21
+
22
+ def headers
23
+ security = AppleNews::Security.new('GET', @url.to_s)
24
+ { 'Authorization' => security.authorization }
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,57 @@
1
+ module AppleNews
2
+ module Request
3
+ class Post
4
+ attr_reader :url
5
+ attr_accessor :fields
6
+
7
+ def initialize(url)
8
+ @config = AppleNews.config
9
+ @url = URI::parse(File.join(@config.api_base, url))
10
+ @fields = {}
11
+ end
12
+
13
+ def call
14
+ http = Net::HTTP.new(@url.hostname, @url.port)
15
+ http.use_ssl = true
16
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
17
+ # http.set_debug_output $stderr
18
+
19
+ res = http.post(@url, content_body, headers)
20
+ JSON.parse(res.body)
21
+ end
22
+
23
+ private
24
+
25
+ def multipart
26
+ @multipart ||= Net::HTTP::Post::Multipart.new(@url.path, @fields, {
27
+ parts: {
28
+ 'metadata' => {
29
+ 'Content-Type' => 'application/json'
30
+ }
31
+ }
32
+ })
33
+ end
34
+
35
+ def content_body
36
+ body = multipart.body_stream.read
37
+ multipart.body_stream.rewind
38
+ body
39
+ end
40
+
41
+ def authorization
42
+ security = AppleNews::Security.new('POST', @url)
43
+ security.content_type = "multipart/form-data; boundary=#{Net::HTTP::Post::Multipart::DEFAULT_BOUNDARY}"
44
+ security.content_body = content_body
45
+
46
+ security.authorization
47
+ end
48
+
49
+ def headers
50
+ {
51
+ 'Authorization' => authorization,
52
+ 'Content-Type' => "multipart/form-data; boundary=#{Net::HTTP::Post::Multipart::DEFAULT_BOUNDARY}"
53
+ }
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,25 @@
1
+ module AppleNews
2
+ module Resource
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ def update_with_data(data)
7
+ process_data(data)
8
+ end
9
+
10
+ private
11
+
12
+ def hydrate!
13
+ request = AppleNews::Request::Get.new(@url)
14
+ resp = request.call
15
+ process_data(resp['data'])
16
+ end
17
+
18
+ def process_data(data)
19
+ data.each do |k, v|
20
+ instance_variable_set("@#{k.underscore}", v)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,7 @@
1
+ require 'apple-news/scenes/base'
2
+ Dir["#{File.dirname(__FILE__)}/scenes/*.rb"].each { |path| require path }
3
+
4
+ module AppleNews
5
+ module Scene
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ module AppleNews
2
+ module Scene
3
+ class Base
4
+ include Properties
5
+
6
+ def self.type(val = nil)
7
+ val.nil? ? _required_property_map[:type] : required_property(:type, val)
8
+ end
9
+
10
+ def type
11
+ self.class.type
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,8 @@
1
+ module AppleNews
2
+ module Scene
3
+ class FadingStickyHeader < Base
4
+ type "fading_sticky_header"
5
+ optional_property :fade_color
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module AppleNews
2
+ module Scene
3
+ class ParallaxScaleHeader < Base
4
+ type "parallax_scale"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,27 @@
1
+ module AppleNews
2
+ class Section
3
+ include Resource
4
+ include Links
5
+
6
+ attr_reader :id, :type, :name, :is_default, :links, :created_at, :modified_at
7
+
8
+ def initialize(id, data = nil)
9
+ @id = id
10
+ @url = "/sections/#{id}"
11
+
12
+ data.nil? ? hydrate! : process_data(data)
13
+ end
14
+
15
+ def channel
16
+ Channel.new(channel_link_id('channel'))
17
+ end
18
+
19
+ def articles(params = {})
20
+ request = Request::Get.new("/sections/#{id}/articles")
21
+ resp = request.call(params)
22
+ resp['data'].map do |article|
23
+ Article.new(article['id'], article)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,46 @@
1
+ module AppleNews
2
+ class Security
3
+ attr_accessor :method, :url, :content_type, :content_body
4
+
5
+ def initialize(method, url)
6
+ @config = AppleNews.config
7
+
8
+ @method = method.upcase
9
+ @url = url
10
+ @date = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
11
+ @content_type = nil
12
+ @content_body = nil
13
+ end
14
+
15
+ def authorization
16
+ if @method == 'POST' && (@content_type.nil? || @content_body.nil?)
17
+ raise "POST requests require the content type and body to be included in the signature generation"
18
+ end
19
+
20
+ "HHMAC; key=#{@config.api_key_id}; signature=#{signature}; date=#{@date}"
21
+ end
22
+
23
+ private
24
+
25
+ def hash_content
26
+ [@method, @url, @date, @content_type, @content_body].compact
27
+ end
28
+
29
+ def canonical_request
30
+ hash_content.join('')
31
+ end
32
+
33
+ def key
34
+ Base64.strict_decode64(@config.api_key_secret)
35
+ end
36
+
37
+ def digest
38
+ sha256 = OpenSSL::Digest.new('sha256')
39
+ OpenSSL::HMAC.digest(sha256, key, canonical_request)
40
+ end
41
+
42
+ def signature
43
+ Base64.strict_encode64(digest)
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,10 @@
1
+ require 'apple-news/styles/base'
2
+ require 'apple-news/styles/fill'
3
+ require 'apple-news/styles/gradient_fill'
4
+ require 'apple-news/styles/text'
5
+ Dir["#{File.dirname(__FILE__)}/styles/*.rb"].each { |path| require path }
6
+
7
+ module AppleNews
8
+ module Style
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module AppleNews
2
+ module Style
3
+ class Base
4
+ include Properties
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module AppleNews
2
+ module Style
3
+ class Border < Base
4
+ optional_properties :all, :bottom, :left, :right, :top
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module AppleNews
2
+ module Style
3
+ class Component < Base
4
+ optional_properties :background_color, :fill, :opacity, :border
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ module AppleNews
2
+ module Style
3
+ class ComponentText < Text
4
+ optional_properties :drop_cap_style, :first_line_indent, :hanging_punctuation, :hyphenation,
5
+ :line_height, :link_style, :paragraph_spacing_before, :paragraph_spacing_after,
6
+ :text_alignment
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ module AppleNews
2
+ module Style
3
+ class Document < Base
4
+ required_property :background_color
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ module AppleNews
2
+ module Style
3
+ class DropCap < Base
4
+ required_property :number_of_lines
5
+ optional_properties :background_color, :font_name, :number_of_characters, :number_of_raised_lines,
6
+ :padding, :text_color
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ module AppleNews
2
+ module Style
3
+ module Fill
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ optional_property :attachment
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module AppleNews
2
+ module Style
3
+ module GradientFill
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ include Fill
8
+ required_property :color_stops
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ module AppleNews
2
+ module Style
3
+ class ImageFill < Base
4
+ include Fill
5
+ required_property :type, "image"
6
+ required_property :url
7
+ optional_properties :fill_mode, :horizontal_alignment, :vertical_alignment
8
+ property_inflection :url, 'URL'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ module AppleNews
2
+ module Style
3
+ class InlineText < Base
4
+ required_properties :range_length, :range_start, :text_style
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ module AppleNews
2
+ module Style
3
+ class LinearGradientFill < Base
4
+ include GradientFill
5
+ required_property :type, "linear_gradient"
6
+ optional_property :angle
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ module AppleNews
2
+ module Style
3
+ class Shadow < Base
4
+ required_properties :color, :radius
5
+ optional_properties :opacity, :offset
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module AppleNews
2
+ module Style
3
+ class Stroke < Base
4
+ optional_properties :color, :width, :style
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ module AppleNews
2
+ module Style
3
+ class Text < Base
4
+ optional_properties :background_color, :font_name, :font_size, :text_color, :text_shadow,
5
+ :strikethrough, :stroke, :tracking, :underline, :vertical_alignment
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module AppleNews
2
+ module Style
3
+ class TextStroke < Base
4
+ required_property :color
5
+ optional_property :width
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ module AppleNews
2
+ module Style
3
+ class VideoFill < Base
4
+ required_property :type, "video"
5
+ required_properties :url, :still_url
6
+ optional_properties :fill_mode, :loop, :vertical_alignment, :horizontal_alignment
7
+
8
+ property_inflection :url, 'URL'
9
+ property_inflection :still_url, 'stillURL'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module AppleNews
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,241 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: apple-news
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ryan LeFevre
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-04-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: multipart-post
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mime-types
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ description: Fully-featured library for fetching and creating content with the Apple
98
+ News API.
99
+ email:
100
+ - ryan@hodinkee.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - ".rspec"
107
+ - ".travis.yml"
108
+ - Gemfile
109
+ - README.md
110
+ - Rakefile
111
+ - apple-news.gemspec
112
+ - bin/console
113
+ - bin/setup
114
+ - lib/apple-news.rb
115
+ - lib/apple-news/addition.rb
116
+ - lib/apple-news/additions/base.rb
117
+ - lib/apple-news/additions/link.rb
118
+ - lib/apple-news/animation.rb
119
+ - lib/apple-news/animations/appear.rb
120
+ - lib/apple-news/animations/base.rb
121
+ - lib/apple-news/animations/fade_in.rb
122
+ - lib/apple-news/animations/move_in.rb
123
+ - lib/apple-news/animations/scale_fade.rb
124
+ - lib/apple-news/article.rb
125
+ - lib/apple-news/behavior.rb
126
+ - lib/apple-news/behaviors/background_motion.rb
127
+ - lib/apple-news/behaviors/background_parallax.rb
128
+ - lib/apple-news/behaviors/base.rb
129
+ - lib/apple-news/behaviors/motion.rb
130
+ - lib/apple-news/behaviors/parallax.rb
131
+ - lib/apple-news/behaviors/springy.rb
132
+ - lib/apple-news/channel.rb
133
+ - lib/apple-news/component.rb
134
+ - lib/apple-news/component_layout.rb
135
+ - lib/apple-news/components/audio.rb
136
+ - lib/apple-news/components/author.rb
137
+ - lib/apple-news/components/banner_advertisement.rb
138
+ - lib/apple-news/components/base.rb
139
+ - lib/apple-news/components/body.rb
140
+ - lib/apple-news/components/byline.rb
141
+ - lib/apple-news/components/caption.rb
142
+ - lib/apple-news/components/chapter.rb
143
+ - lib/apple-news/components/container.rb
144
+ - lib/apple-news/components/divider.rb
145
+ - lib/apple-news/components/embed_web_video.rb
146
+ - lib/apple-news/components/figure.rb
147
+ - lib/apple-news/components/gallery.rb
148
+ - lib/apple-news/components/header.rb
149
+ - lib/apple-news/components/heading.rb
150
+ - lib/apple-news/components/illustrator.rb
151
+ - lib/apple-news/components/image.rb
152
+ - lib/apple-news/components/instagram.rb
153
+ - lib/apple-news/components/intro.rb
154
+ - lib/apple-news/components/logo.rb
155
+ - lib/apple-news/components/medium_rectangle_advertisement.rb
156
+ - lib/apple-news/components/mosaic.rb
157
+ - lib/apple-news/components/music.rb
158
+ - lib/apple-news/components/photo.rb
159
+ - lib/apple-news/components/photographer.rb
160
+ - lib/apple-news/components/portrait.rb
161
+ - lib/apple-news/components/pullquote.rb
162
+ - lib/apple-news/components/quote.rb
163
+ - lib/apple-news/components/scalable_image.rb
164
+ - lib/apple-news/components/section.rb
165
+ - lib/apple-news/components/text.rb
166
+ - lib/apple-news/components/title.rb
167
+ - lib/apple-news/components/tweet.rb
168
+ - lib/apple-news/components/video.rb
169
+ - lib/apple-news/configuration.rb
170
+ - lib/apple-news/document.rb
171
+ - lib/apple-news/document/attachments.rb
172
+ - lib/apple-news/document/metadata.rb
173
+ - lib/apple-news/document/persistence.rb
174
+ - lib/apple-news/layout.rb
175
+ - lib/apple-news/links.rb
176
+ - lib/apple-news/metadata.rb
177
+ - lib/apple-news/multipart_post_patch.rb
178
+ - lib/apple-news/properties.rb
179
+ - lib/apple-news/properties/advertising_layout.rb
180
+ - lib/apple-news/properties/advertising_settings.rb
181
+ - lib/apple-news/properties/anchor.rb
182
+ - lib/apple-news/properties/base.rb
183
+ - lib/apple-news/properties/caption_descriptor.rb
184
+ - lib/apple-news/properties/color_stop.rb
185
+ - lib/apple-news/properties/content_inset.rb
186
+ - lib/apple-news/properties/gallery_item.rb
187
+ - lib/apple-news/properties/margin.rb
188
+ - lib/apple-news/properties/offset.rb
189
+ - lib/apple-news/property.rb
190
+ - lib/apple-news/request.rb
191
+ - lib/apple-news/requests/get.rb
192
+ - lib/apple-news/requests/post.rb
193
+ - lib/apple-news/resource.rb
194
+ - lib/apple-news/scene.rb
195
+ - lib/apple-news/scenes/base.rb
196
+ - lib/apple-news/scenes/fading_sticky_header.rb
197
+ - lib/apple-news/scenes/parallax_scale_header.rb
198
+ - lib/apple-news/section.rb
199
+ - lib/apple-news/security.rb
200
+ - lib/apple-news/style.rb
201
+ - lib/apple-news/styles/base.rb
202
+ - lib/apple-news/styles/border.rb
203
+ - lib/apple-news/styles/component.rb
204
+ - lib/apple-news/styles/component_text.rb
205
+ - lib/apple-news/styles/document.rb
206
+ - lib/apple-news/styles/drop_cap.rb
207
+ - lib/apple-news/styles/fill.rb
208
+ - lib/apple-news/styles/gradient_fill.rb
209
+ - lib/apple-news/styles/image_fill.rb
210
+ - lib/apple-news/styles/inline_text.rb
211
+ - lib/apple-news/styles/linear_gradient_fill.rb
212
+ - lib/apple-news/styles/shadow.rb
213
+ - lib/apple-news/styles/stroke.rb
214
+ - lib/apple-news/styles/text.rb
215
+ - lib/apple-news/styles/text_stroke.rb
216
+ - lib/apple-news/styles/video_fill.rb
217
+ - lib/apple-news/version.rb
218
+ homepage: https://github.com/hodinkee/apple-news-rb
219
+ licenses: []
220
+ metadata: {}
221
+ post_install_message:
222
+ rdoc_options: []
223
+ require_paths:
224
+ - lib
225
+ required_ruby_version: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ required_rubygems_version: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ requirements: []
236
+ rubyforge_project:
237
+ rubygems_version: 2.5.1
238
+ signing_key:
239
+ specification_version: 4
240
+ summary: Fully-featured library for working with the Apple News API.
241
+ test_files: []