hotchoc 0.3.1 → 0.4.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/CHANGELOG.md +12 -0
- data/README.md +3 -3
- data/lib/hotchoc.rb +10 -10
- data/lib/hotchoc/album.rb +55 -0
- data/lib/hotchoc/base.rb +20 -0
- data/lib/hotchoc/{presenters/topic.rb → blocks/base.rb} +6 -10
- data/lib/hotchoc/blocks/image.rb +17 -0
- data/lib/hotchoc/blocks/text.rb +17 -0
- data/lib/hotchoc/client.rb +1 -1
- data/lib/hotchoc/client/api.rb +4 -4
- data/lib/hotchoc/client/version.rb +1 -1
- data/lib/hotchoc/file.rb +56 -0
- data/lib/hotchoc/page.rb +63 -0
- data/lib/hotchoc/post.rb +47 -0
- data/lib/hotchoc/thumbnail.rb +31 -0
- data/lib/hotchoc/topic.rb +27 -0
- data/spec/hotchoc/{presenters/album_spec.rb → album_spec.rb} +4 -4
- data/spec/hotchoc/{presenters/blocks → blocks}/image_spec.rb +2 -2
- data/spec/hotchoc/{presenters/blocks → blocks}/text_spec.rb +1 -1
- data/spec/hotchoc/client/api_spec.rb +4 -4
- data/spec/hotchoc/{presenters/file_spec.rb → file_spec.rb} +3 -3
- data/spec/hotchoc/{presenters/page_spec.rb → page_spec.rb} +3 -3
- data/spec/hotchoc/{presenters/post_spec.rb → post_spec.rb} +3 -3
- data/spec/hotchoc/{presenters/thumbnail_spec.rb → thumbnail_spec.rb} +2 -2
- data/spec/hotchoc/{presenters/topic_spec.rb → topic_spec.rb} +2 -2
- metadata +28 -28
- data/lib/hotchoc/presenters/album.rb +0 -57
- data/lib/hotchoc/presenters/base.rb +0 -22
- data/lib/hotchoc/presenters/blocks/base.rb +0 -27
- data/lib/hotchoc/presenters/blocks/image.rb +0 -19
- data/lib/hotchoc/presenters/blocks/text.rb +0 -19
- data/lib/hotchoc/presenters/file.rb +0 -58
- data/lib/hotchoc/presenters/page.rb +0 -65
- data/lib/hotchoc/presenters/post.rb +0 -49
- data/lib/hotchoc/presenters/thumbnail.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 906bf6c641ca369e29effabcc2238b7d6143befe
|
4
|
+
data.tar.gz: 20a9b7fc5bcb94186a9d92c9fd029726c52a2e19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d99f1414b96f84ffe1bb7bcadd57d7d4ba357a1f2b2d944925c2b359914eb57381d036904820297ea2a4ede6a2b00b14456eb873a07e3668d5377caf7298a1d
|
7
|
+
data.tar.gz: dca562a26a8e584c55471aded8d35c41ce1e1ec1e04490f308237c931a79acd47c5da01bde1a102e974e09050e30f01213a4c5da0a326560fa6a137bba3c3f04
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,18 @@
|
|
2
2
|
|
3
3
|
## Master
|
4
4
|
|
5
|
+
## 0.4.0
|
6
|
+
|
7
|
+
[Full changelog](https://github.com/choc/hotchoc-ruby/compare/v0.3.1...v0.4.0)
|
8
|
+
|
9
|
+
Changes:
|
10
|
+
|
11
|
+
* Removed presenter namespace
|
12
|
+
|
13
|
+
Bugfixes:
|
14
|
+
|
15
|
+
* Client options merging fixed (this time for real)
|
16
|
+
|
5
17
|
## 0.3.1
|
6
18
|
|
7
19
|
[Full changelog](https://github.com/choc/hotchoc-ruby/compare/v0.3.0...v0.3.1)
|
data/README.md
CHANGED
@@ -31,15 +31,15 @@ Or install it manually as:
|
|
31
31
|
|
32
32
|
# Get single album by ID
|
33
33
|
client.get_albums(id: '77774dc8-4edf-4b3a-8571-a6b64c8adace')
|
34
|
-
=> [#<Hotchoc::
|
34
|
+
=> [#<Hotchoc::Album: title="Test album 1">]
|
35
35
|
|
36
36
|
# Get all albums
|
37
37
|
client.get_albums
|
38
|
-
=> [#<Hotchoc::
|
38
|
+
=> [#<Hotchoc::Album: title="Test album 2">, #<Hotchoc::Album: title="Test album 1">]
|
39
39
|
|
40
40
|
# Get only first 10 albums
|
41
41
|
client.get_albums(limit: 10)
|
42
|
-
=> [#<Hotchoc::
|
42
|
+
=> [#<Hotchoc::Album: title="Test album 2">, #<Hotchoc::Album: title="Test album 1">]
|
43
43
|
|
44
44
|
## API
|
45
45
|
|
data/lib/hotchoc.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
require 'hotchoc/
|
2
|
-
require 'hotchoc/
|
3
|
-
require 'hotchoc/
|
4
|
-
require 'hotchoc/
|
5
|
-
require 'hotchoc/
|
6
|
-
require 'hotchoc/
|
7
|
-
require 'hotchoc/
|
8
|
-
require 'hotchoc/
|
9
|
-
require 'hotchoc/
|
10
|
-
require 'hotchoc/
|
1
|
+
require 'hotchoc/base'
|
2
|
+
require 'hotchoc/album'
|
3
|
+
require 'hotchoc/blocks/base'
|
4
|
+
require 'hotchoc/blocks/image'
|
5
|
+
require 'hotchoc/blocks/text'
|
6
|
+
require 'hotchoc/file'
|
7
|
+
require 'hotchoc/page'
|
8
|
+
require 'hotchoc/post'
|
9
|
+
require 'hotchoc/thumbnail'
|
10
|
+
require 'hotchoc/topic'
|
11
11
|
|
12
12
|
require 'hotchoc/client/version'
|
13
13
|
require 'hotchoc/client/errors'
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Hotchoc
|
2
|
+
class Album < Hotchoc::Base
|
3
|
+
def id
|
4
|
+
@item['id']
|
5
|
+
end
|
6
|
+
|
7
|
+
def title
|
8
|
+
@item['title']
|
9
|
+
end
|
10
|
+
|
11
|
+
def subtitle
|
12
|
+
@item['subtitle']
|
13
|
+
end
|
14
|
+
|
15
|
+
def description
|
16
|
+
@item['description']
|
17
|
+
end
|
18
|
+
|
19
|
+
def identifier
|
20
|
+
@item['identifier']
|
21
|
+
end
|
22
|
+
|
23
|
+
def status
|
24
|
+
@item['status']
|
25
|
+
end
|
26
|
+
|
27
|
+
def publish_date
|
28
|
+
Time.parse(@item['publish_date'])
|
29
|
+
end
|
30
|
+
|
31
|
+
def cover
|
32
|
+
@item['cover'] ? block_for(@item['cover']) : nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def blocks
|
36
|
+
@item['blocks'].to_a.map { |block| block_for(block) }
|
37
|
+
end
|
38
|
+
|
39
|
+
def topics
|
40
|
+
@item['topics'].to_a.map { |topic| Hotchoc::Topic.new(topic) }
|
41
|
+
end
|
42
|
+
|
43
|
+
def created_at
|
44
|
+
Time.parse(@item['created_at'])
|
45
|
+
end
|
46
|
+
|
47
|
+
def updated_at
|
48
|
+
Time.parse(@item['updated_at'])
|
49
|
+
end
|
50
|
+
|
51
|
+
def inspect
|
52
|
+
%(#<Hotchoc::Album: title="#{title}">)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/hotchoc/base.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Hotchoc
|
2
|
+
class Base
|
3
|
+
attr_reader :item
|
4
|
+
|
5
|
+
def initialize(item = {})
|
6
|
+
@item = item
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def block_for(block)
|
12
|
+
case block['type']
|
13
|
+
when 'text'
|
14
|
+
Hotchoc::Blocks::Text.new(block)
|
15
|
+
when 'image'
|
16
|
+
Hotchoc::Blocks::Image.new(block)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module Hotchoc
|
2
|
-
module
|
3
|
-
class
|
2
|
+
module Blocks
|
3
|
+
class Base < Hotchoc::Base
|
4
4
|
def id
|
5
5
|
@item['id']
|
6
6
|
end
|
7
7
|
|
8
|
-
def
|
9
|
-
@item['
|
8
|
+
def type
|
9
|
+
@item['type']
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
@item['
|
12
|
+
def position
|
13
|
+
@item['position']
|
14
14
|
end
|
15
15
|
|
16
16
|
def created_at
|
@@ -20,10 +20,6 @@ module Hotchoc
|
|
20
20
|
def updated_at
|
21
21
|
Time.parse(@item['updated_at'])
|
22
22
|
end
|
23
|
-
|
24
|
-
def inspect
|
25
|
-
%(#<Hotchoc::Presenters::Topic: name="#{name}">)
|
26
|
-
end
|
27
23
|
end
|
28
24
|
end
|
29
25
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Hotchoc
|
2
|
+
module Blocks
|
3
|
+
class Image < Hotchoc::Blocks::Base
|
4
|
+
def title
|
5
|
+
@item['content']['title']
|
6
|
+
end
|
7
|
+
|
8
|
+
def image
|
9
|
+
@item['content']['image'] ? Hotchoc::File.new(@item['content']['image']) : nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def inspect
|
13
|
+
%(#<Hotchoc::Blocks::Image: title="#{title}" position="#{position}">)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Hotchoc
|
2
|
+
module Blocks
|
3
|
+
class Text < Hotchoc::Blocks::Base
|
4
|
+
def markdown
|
5
|
+
@item['content']['markdown']
|
6
|
+
end
|
7
|
+
|
8
|
+
def html
|
9
|
+
@item['content']['html']
|
10
|
+
end
|
11
|
+
|
12
|
+
def inspect
|
13
|
+
%(#<Hotchoc::Blocks::Text: position="#{position}">)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/hotchoc/client.rb
CHANGED
@@ -8,7 +8,7 @@ module Hotchoc
|
|
8
8
|
attr_accessor(*Configuration::VALID_CONFIG_KEYS)
|
9
9
|
|
10
10
|
def initialize(opts = {})
|
11
|
-
options = Hotchoc.options.merge(opts) { |
|
11
|
+
options = Hotchoc.options.merge(opts) { |_key, oldval, newval| newval.nil? ? oldval : newval }
|
12
12
|
|
13
13
|
fail ArgumentError, 'API key is required' unless options[:api_key]
|
14
14
|
fail ArgumentError, 'Site name is required' unless options[:site]
|
data/lib/hotchoc/client/api.rb
CHANGED
@@ -2,19 +2,19 @@ module Hotchoc
|
|
2
2
|
class Client
|
3
3
|
module API
|
4
4
|
def get_albums(opts = {})
|
5
|
-
get('albums', opts)['albums'].map { |album| Hotchoc::
|
5
|
+
get('albums', opts)['albums'].map { |album| Hotchoc::Album.new(album) }
|
6
6
|
end
|
7
7
|
|
8
8
|
def get_pages(opts = {})
|
9
|
-
get('pages', opts)['pages'].map { |page| Hotchoc::
|
9
|
+
get('pages', opts)['pages'].map { |page| Hotchoc::Page.new(page) }
|
10
10
|
end
|
11
11
|
|
12
12
|
def get_posts(opts = {})
|
13
|
-
get('posts', opts)['posts'].map { |post| Hotchoc::
|
13
|
+
get('posts', opts)['posts'].map { |post| Hotchoc::Post.new(post) }
|
14
14
|
end
|
15
15
|
|
16
16
|
def get_topics(opts = {})
|
17
|
-
get('topics', opts)['topics'].map { |topic| Hotchoc::
|
17
|
+
get('topics', opts)['topics'].map { |topic| Hotchoc::Topic.new(topic) }
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/lib/hotchoc/file.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
module Hotchoc
|
2
|
+
class File < Hotchoc::Base
|
3
|
+
def id
|
4
|
+
@item['id']
|
5
|
+
end
|
6
|
+
|
7
|
+
def name
|
8
|
+
@item['name']
|
9
|
+
end
|
10
|
+
|
11
|
+
def url
|
12
|
+
@item['url']
|
13
|
+
end
|
14
|
+
|
15
|
+
def width
|
16
|
+
@item['width']
|
17
|
+
end
|
18
|
+
|
19
|
+
def height
|
20
|
+
@item['height']
|
21
|
+
end
|
22
|
+
|
23
|
+
def size
|
24
|
+
@item['size']
|
25
|
+
end
|
26
|
+
|
27
|
+
def content_type
|
28
|
+
@item['content_type']
|
29
|
+
end
|
30
|
+
|
31
|
+
def thumbnails
|
32
|
+
if @item['thumbnails']
|
33
|
+
@item['thumbnails']['original'].map { |thumbnail| Hotchoc::Thumbnail.new(thumbnail) } +
|
34
|
+
@item['thumbnails']['square'].map { |thumbnail| Hotchoc::Thumbnail.new(thumbnail) }
|
35
|
+
else
|
36
|
+
[]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def exif
|
41
|
+
@item['exif']
|
42
|
+
end
|
43
|
+
|
44
|
+
def created_at
|
45
|
+
Time.parse(@item['created_at'])
|
46
|
+
end
|
47
|
+
|
48
|
+
def updated_at
|
49
|
+
Time.parse(@item['updated_at'])
|
50
|
+
end
|
51
|
+
|
52
|
+
def inspect
|
53
|
+
%(#<Hotchoc::File: name="#{name}">)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/hotchoc/page.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
module Hotchoc
|
2
|
+
class Page < Hotchoc::Base
|
3
|
+
def id
|
4
|
+
@item['id']
|
5
|
+
end
|
6
|
+
|
7
|
+
def title
|
8
|
+
@item['title']
|
9
|
+
end
|
10
|
+
|
11
|
+
def subtitle
|
12
|
+
@item['subtitle']
|
13
|
+
end
|
14
|
+
|
15
|
+
def identifier
|
16
|
+
@item['identifier']
|
17
|
+
end
|
18
|
+
|
19
|
+
def status
|
20
|
+
@item['status']
|
21
|
+
end
|
22
|
+
|
23
|
+
def path
|
24
|
+
@item['path']
|
25
|
+
end
|
26
|
+
|
27
|
+
def parent_id
|
28
|
+
@item['parent_id']
|
29
|
+
end
|
30
|
+
|
31
|
+
def position
|
32
|
+
@item['position']
|
33
|
+
end
|
34
|
+
|
35
|
+
def level
|
36
|
+
@item['level']
|
37
|
+
end
|
38
|
+
|
39
|
+
def publish_date
|
40
|
+
Time.parse(@item['publish_date'])
|
41
|
+
end
|
42
|
+
|
43
|
+
def blocks
|
44
|
+
@item['blocks'].to_a.map { |block| block_for(block) }
|
45
|
+
end
|
46
|
+
|
47
|
+
def topics
|
48
|
+
@item['topics'].to_a.map { |topic| Hotchoc::Topic.new(topic) }
|
49
|
+
end
|
50
|
+
|
51
|
+
def created_at
|
52
|
+
Time.parse(@item['created_at'])
|
53
|
+
end
|
54
|
+
|
55
|
+
def updated_at
|
56
|
+
Time.parse(@item['updated_at'])
|
57
|
+
end
|
58
|
+
|
59
|
+
def inspect
|
60
|
+
%(#<Hotchoc::Page: title="#{title}">)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/hotchoc/post.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
module Hotchoc
|
2
|
+
class Post < Hotchoc::Base
|
3
|
+
def id
|
4
|
+
@item['id']
|
5
|
+
end
|
6
|
+
|
7
|
+
def title
|
8
|
+
@item['title']
|
9
|
+
end
|
10
|
+
|
11
|
+
def subtitle
|
12
|
+
@item['subtitle']
|
13
|
+
end
|
14
|
+
|
15
|
+
def identifier
|
16
|
+
@item['identifier']
|
17
|
+
end
|
18
|
+
|
19
|
+
def status
|
20
|
+
@item['status']
|
21
|
+
end
|
22
|
+
|
23
|
+
def publish_date
|
24
|
+
Time.parse(@item['publish_date'])
|
25
|
+
end
|
26
|
+
|
27
|
+
def blocks
|
28
|
+
@item['blocks'].to_a.map { |block| block_for(block) }
|
29
|
+
end
|
30
|
+
|
31
|
+
def topics
|
32
|
+
@item['topics'].to_a.map { |topic| Hotchoc::Topic.new(topic) }
|
33
|
+
end
|
34
|
+
|
35
|
+
def created_at
|
36
|
+
Time.parse(@item['created_at'])
|
37
|
+
end
|
38
|
+
|
39
|
+
def updated_at
|
40
|
+
Time.parse(@item['updated_at'])
|
41
|
+
end
|
42
|
+
|
43
|
+
def inspect
|
44
|
+
%(#<Hotchoc::Post: title="#{title}">)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Hotchoc
|
2
|
+
class Thumbnail < Hotchoc::Base
|
3
|
+
def name
|
4
|
+
@item['name']
|
5
|
+
end
|
6
|
+
|
7
|
+
def width
|
8
|
+
@item['width']
|
9
|
+
end
|
10
|
+
|
11
|
+
def height
|
12
|
+
@item['height']
|
13
|
+
end
|
14
|
+
|
15
|
+
def square?
|
16
|
+
width == height
|
17
|
+
end
|
18
|
+
|
19
|
+
def size
|
20
|
+
@item['size']
|
21
|
+
end
|
22
|
+
|
23
|
+
def url
|
24
|
+
@item['url']
|
25
|
+
end
|
26
|
+
|
27
|
+
def inspect
|
28
|
+
%(#<Hotchoc::Thumbnail:>)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Hotchoc
|
2
|
+
class Topic < Hotchoc::Base
|
3
|
+
def id
|
4
|
+
@item['id']
|
5
|
+
end
|
6
|
+
|
7
|
+
def name
|
8
|
+
@item['name']
|
9
|
+
end
|
10
|
+
|
11
|
+
def identifier
|
12
|
+
@item['identifier']
|
13
|
+
end
|
14
|
+
|
15
|
+
def created_at
|
16
|
+
Time.parse(@item['created_at'])
|
17
|
+
end
|
18
|
+
|
19
|
+
def updated_at
|
20
|
+
Time.parse(@item['updated_at'])
|
21
|
+
end
|
22
|
+
|
23
|
+
def inspect
|
24
|
+
%(#<Hotchoc::Topic: name="#{name}">)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Hotchoc::
|
3
|
+
describe Hotchoc::Album do
|
4
4
|
let(:data) do
|
5
5
|
JSON.parse(File.read(response_stub('albums')))['albums'].first
|
6
6
|
end
|
@@ -38,17 +38,17 @@ describe Hotchoc::Presenters::Album do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'has a cover' do
|
41
|
-
expect(album.cover).to be_a(Hotchoc::
|
41
|
+
expect(album.cover).to be_a(Hotchoc::Blocks::Image)
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'has blocks' do
|
45
45
|
expect(album.blocks).to_not be_empty
|
46
|
-
expect(album.blocks.first).to be_a(Hotchoc::
|
46
|
+
expect(album.blocks.first).to be_a(Hotchoc::Blocks::Image)
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'has topics' do
|
50
50
|
expect(album.topics).to_not be_empty
|
51
|
-
expect(album.topics.first).to be_a(Hotchoc::
|
51
|
+
expect(album.topics.first).to be_a(Hotchoc::Topic)
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'has a created_at' do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Hotchoc::
|
3
|
+
describe Hotchoc::Blocks::Image do
|
4
4
|
let(:data) do
|
5
5
|
JSON.parse(File.read(response_stub('albums')))['albums'].first['blocks'].first
|
6
6
|
end
|
@@ -14,6 +14,6 @@ describe Hotchoc::Presenters::Blocks::Image do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'has an image' do
|
17
|
-
expect(block.image).to be_a(Hotchoc::
|
17
|
+
expect(block.image).to be_a(Hotchoc::File)
|
18
18
|
end
|
19
19
|
end
|
@@ -11,7 +11,7 @@ describe Hotchoc::Client::API do
|
|
11
11
|
describe 'Albums' do
|
12
12
|
context 'GET collection' do
|
13
13
|
let(:albums) do
|
14
|
-
JSON.parse(File.read(response_stub('albums')))['albums'].map { |album| Hotchoc::
|
14
|
+
JSON.parse(File.read(response_stub('albums')))['albums'].map { |album| Hotchoc::Album.new(album) }
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'returns an array with the albums' do
|
@@ -23,7 +23,7 @@ describe Hotchoc::Client::API do
|
|
23
23
|
describe 'Pages' do
|
24
24
|
context 'GET collection' do
|
25
25
|
let(:pages) do
|
26
|
-
JSON.parse(File.read(response_stub('pages')))['pages'].map { |page| Hotchoc::
|
26
|
+
JSON.parse(File.read(response_stub('pages')))['pages'].map { |page| Hotchoc::Page.new(page) }
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'returns an array with the pages' do
|
@@ -35,7 +35,7 @@ describe Hotchoc::Client::API do
|
|
35
35
|
describe 'Posts' do
|
36
36
|
context 'GET collection' do
|
37
37
|
let(:posts) do
|
38
|
-
JSON.parse(File.read(response_stub('posts')))['posts'].map { |post| Hotchoc::
|
38
|
+
JSON.parse(File.read(response_stub('posts')))['posts'].map { |post| Hotchoc::Post.new(post) }
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'returns an array with the posts' do
|
@@ -47,7 +47,7 @@ describe Hotchoc::Client::API do
|
|
47
47
|
describe 'Topics' do
|
48
48
|
context 'GET collection' do
|
49
49
|
let(:topics) do
|
50
|
-
JSON.parse(File.read(response_stub('topics')))['topics'].map { |topic| Hotchoc::
|
50
|
+
JSON.parse(File.read(response_stub('topics')))['topics'].map { |topic| Hotchoc::Topic.new(topic) }
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'returns an array with the topics' do
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Hotchoc::
|
3
|
+
describe Hotchoc::File do
|
4
4
|
let(:data) do
|
5
5
|
JSON.parse(File.read(response_stub('albums')))['albums'].first['blocks'].first
|
6
6
|
end
|
7
7
|
|
8
8
|
let(:file) do
|
9
|
-
Hotchoc::
|
9
|
+
Hotchoc::Blocks::Image.new(data).image
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'has an id' do
|
@@ -39,7 +39,7 @@ describe Hotchoc::Presenters::File do
|
|
39
39
|
|
40
40
|
it 'has thumbnails' do
|
41
41
|
expect(file.thumbnails).to_not be_empty
|
42
|
-
expect(file.thumbnails.first).to be_a(Hotchoc::
|
42
|
+
expect(file.thumbnails.first).to be_a(Hotchoc::Thumbnail)
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'has exif info' do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Hotchoc::
|
3
|
+
describe Hotchoc::Page do
|
4
4
|
let(:data) do
|
5
5
|
JSON.parse(File.read(response_stub('pages')))['pages'].first
|
6
6
|
end
|
@@ -51,12 +51,12 @@ describe Hotchoc::Presenters::Page do
|
|
51
51
|
|
52
52
|
it 'has blocks' do
|
53
53
|
expect(page.blocks).to_not be_empty
|
54
|
-
expect(page.blocks.first).to be_a(Hotchoc::
|
54
|
+
expect(page.blocks.first).to be_a(Hotchoc::Blocks::Text)
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'has topics' do
|
58
58
|
expect(page.topics).to_not be_empty
|
59
|
-
expect(page.topics.first).to be_a(Hotchoc::
|
59
|
+
expect(page.topics.first).to be_a(Hotchoc::Topic)
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'has a created_at' do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Hotchoc::
|
3
|
+
describe Hotchoc::Post do
|
4
4
|
let(:data) do
|
5
5
|
JSON.parse(File.read(response_stub('posts')))['posts'].first
|
6
6
|
end
|
@@ -35,12 +35,12 @@ describe Hotchoc::Presenters::Post do
|
|
35
35
|
|
36
36
|
it 'has blocks' do
|
37
37
|
expect(post.blocks).to_not be_empty
|
38
|
-
expect(post.blocks.first).to be_a(Hotchoc::
|
38
|
+
expect(post.blocks.first).to be_a(Hotchoc::Blocks::Text)
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'has topics' do
|
42
42
|
expect(post.topics).to_not be_empty
|
43
|
-
expect(post.topics.first).to be_a(Hotchoc::
|
43
|
+
expect(post.topics.first).to be_a(Hotchoc::Topic)
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'has a created_at' do
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Hotchoc::
|
3
|
+
describe Hotchoc::Thumbnail do
|
4
4
|
let(:data) do
|
5
5
|
JSON.parse(File.read(response_stub('albums')))['albums'].first['blocks'].first
|
6
6
|
end
|
7
7
|
|
8
8
|
let(:thumbnail) do
|
9
|
-
Hotchoc::
|
9
|
+
Hotchoc::Blocks::Image.new(data).image.thumbnails.first
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'has a name' do
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Hotchoc::
|
3
|
+
describe Hotchoc::Topic do
|
4
4
|
let(:data) do
|
5
5
|
JSON.parse(File.read(response_stub('posts')))['posts'].first
|
6
6
|
end
|
7
7
|
|
8
8
|
let(:topic) do
|
9
|
-
Hotchoc::
|
9
|
+
Hotchoc::Post.new(data).topics.first
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'has an ID' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hotchoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthias Siegel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -140,34 +140,34 @@ files:
|
|
140
140
|
- Rakefile
|
141
141
|
- hotchoc.gemspec
|
142
142
|
- lib/hotchoc.rb
|
143
|
+
- lib/hotchoc/album.rb
|
144
|
+
- lib/hotchoc/base.rb
|
145
|
+
- lib/hotchoc/blocks/base.rb
|
146
|
+
- lib/hotchoc/blocks/image.rb
|
147
|
+
- lib/hotchoc/blocks/text.rb
|
143
148
|
- lib/hotchoc/client.rb
|
144
149
|
- lib/hotchoc/client/api.rb
|
145
150
|
- lib/hotchoc/client/configuration.rb
|
146
151
|
- lib/hotchoc/client/errors.rb
|
147
152
|
- lib/hotchoc/client/fetcher.rb
|
148
153
|
- lib/hotchoc/client/version.rb
|
149
|
-
- lib/hotchoc/
|
150
|
-
- lib/hotchoc/
|
151
|
-
- lib/hotchoc/
|
152
|
-
- lib/hotchoc/
|
153
|
-
- lib/hotchoc/
|
154
|
-
-
|
155
|
-
-
|
156
|
-
-
|
157
|
-
- lib/hotchoc/presenters/thumbnail.rb
|
158
|
-
- lib/hotchoc/presenters/topic.rb
|
154
|
+
- lib/hotchoc/file.rb
|
155
|
+
- lib/hotchoc/page.rb
|
156
|
+
- lib/hotchoc/post.rb
|
157
|
+
- lib/hotchoc/thumbnail.rb
|
158
|
+
- lib/hotchoc/topic.rb
|
159
|
+
- spec/hotchoc/album_spec.rb
|
160
|
+
- spec/hotchoc/blocks/image_spec.rb
|
161
|
+
- spec/hotchoc/blocks/text_spec.rb
|
159
162
|
- spec/hotchoc/client/api_spec.rb
|
160
163
|
- spec/hotchoc/client/configuration_spec.rb
|
161
164
|
- spec/hotchoc/client/main_spec.rb
|
162
165
|
- spec/hotchoc/client_spec.rb
|
163
|
-
- spec/hotchoc/
|
164
|
-
- spec/hotchoc/
|
165
|
-
- spec/hotchoc/
|
166
|
-
- spec/hotchoc/
|
167
|
-
- spec/hotchoc/
|
168
|
-
- spec/hotchoc/presenters/post_spec.rb
|
169
|
-
- spec/hotchoc/presenters/thumbnail_spec.rb
|
170
|
-
- spec/hotchoc/presenters/topic_spec.rb
|
166
|
+
- spec/hotchoc/file_spec.rb
|
167
|
+
- spec/hotchoc/page_spec.rb
|
168
|
+
- spec/hotchoc/post_spec.rb
|
169
|
+
- spec/hotchoc/thumbnail_spec.rb
|
170
|
+
- spec/hotchoc/topic_spec.rb
|
171
171
|
- spec/spec_helper.rb
|
172
172
|
- spec/support/helpers.rb
|
173
173
|
- spec/support/matchers.rb
|
@@ -201,18 +201,18 @@ signing_key:
|
|
201
201
|
specification_version: 4
|
202
202
|
summary: Ruby wrapper for the Hotchoc API.
|
203
203
|
test_files:
|
204
|
+
- spec/hotchoc/album_spec.rb
|
205
|
+
- spec/hotchoc/blocks/image_spec.rb
|
206
|
+
- spec/hotchoc/blocks/text_spec.rb
|
204
207
|
- spec/hotchoc/client/api_spec.rb
|
205
208
|
- spec/hotchoc/client/configuration_spec.rb
|
206
209
|
- spec/hotchoc/client/main_spec.rb
|
207
210
|
- spec/hotchoc/client_spec.rb
|
208
|
-
- spec/hotchoc/
|
209
|
-
- spec/hotchoc/
|
210
|
-
- spec/hotchoc/
|
211
|
-
- spec/hotchoc/
|
212
|
-
- spec/hotchoc/
|
213
|
-
- spec/hotchoc/presenters/post_spec.rb
|
214
|
-
- spec/hotchoc/presenters/thumbnail_spec.rb
|
215
|
-
- spec/hotchoc/presenters/topic_spec.rb
|
211
|
+
- spec/hotchoc/file_spec.rb
|
212
|
+
- spec/hotchoc/page_spec.rb
|
213
|
+
- spec/hotchoc/post_spec.rb
|
214
|
+
- spec/hotchoc/thumbnail_spec.rb
|
215
|
+
- spec/hotchoc/topic_spec.rb
|
216
216
|
- spec/spec_helper.rb
|
217
217
|
- spec/support/helpers.rb
|
218
218
|
- spec/support/matchers.rb
|
@@ -1,57 +0,0 @@
|
|
1
|
-
module Hotchoc
|
2
|
-
module Presenters
|
3
|
-
class Album < Hotchoc::Presenters::Base
|
4
|
-
def id
|
5
|
-
@item['id']
|
6
|
-
end
|
7
|
-
|
8
|
-
def title
|
9
|
-
@item['title']
|
10
|
-
end
|
11
|
-
|
12
|
-
def subtitle
|
13
|
-
@item['subtitle']
|
14
|
-
end
|
15
|
-
|
16
|
-
def description
|
17
|
-
@item['description']
|
18
|
-
end
|
19
|
-
|
20
|
-
def identifier
|
21
|
-
@item['identifier']
|
22
|
-
end
|
23
|
-
|
24
|
-
def status
|
25
|
-
@item['status']
|
26
|
-
end
|
27
|
-
|
28
|
-
def publish_date
|
29
|
-
Time.parse(@item['publish_date'])
|
30
|
-
end
|
31
|
-
|
32
|
-
def cover
|
33
|
-
@item['cover'] ? block_for(@item['cover']) : nil
|
34
|
-
end
|
35
|
-
|
36
|
-
def blocks
|
37
|
-
@item['blocks'].to_a.map { |block| block_for(block) }
|
38
|
-
end
|
39
|
-
|
40
|
-
def topics
|
41
|
-
@item['topics'].to_a.map { |topic| Hotchoc::Presenters::Topic.new(topic) }
|
42
|
-
end
|
43
|
-
|
44
|
-
def created_at
|
45
|
-
Time.parse(@item['created_at'])
|
46
|
-
end
|
47
|
-
|
48
|
-
def updated_at
|
49
|
-
Time.parse(@item['updated_at'])
|
50
|
-
end
|
51
|
-
|
52
|
-
def inspect
|
53
|
-
%(#<Hotchoc::Presenters::Album: title="#{title}">)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module Hotchoc
|
2
|
-
module Presenters
|
3
|
-
class Base
|
4
|
-
attr_reader :item
|
5
|
-
|
6
|
-
def initialize(item = {})
|
7
|
-
@item = item
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def block_for(block)
|
13
|
-
case block['type']
|
14
|
-
when 'text'
|
15
|
-
Hotchoc::Presenters::Blocks::Text.new(block)
|
16
|
-
when 'image'
|
17
|
-
Hotchoc::Presenters::Blocks::Image.new(block)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Hotchoc
|
2
|
-
module Presenters
|
3
|
-
module Blocks
|
4
|
-
class Base < Hotchoc::Presenters::Base
|
5
|
-
def id
|
6
|
-
@item['id']
|
7
|
-
end
|
8
|
-
|
9
|
-
def type
|
10
|
-
@item['type']
|
11
|
-
end
|
12
|
-
|
13
|
-
def position
|
14
|
-
@item['position']
|
15
|
-
end
|
16
|
-
|
17
|
-
def created_at
|
18
|
-
Time.parse(@item['created_at'])
|
19
|
-
end
|
20
|
-
|
21
|
-
def updated_at
|
22
|
-
Time.parse(@item['updated_at'])
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Hotchoc
|
2
|
-
module Presenters
|
3
|
-
module Blocks
|
4
|
-
class Image < Hotchoc::Presenters::Blocks::Base
|
5
|
-
def title
|
6
|
-
@item['content']['title']
|
7
|
-
end
|
8
|
-
|
9
|
-
def image
|
10
|
-
@item['content']['image'] ? Hotchoc::Presenters::File.new(@item['content']['image']) : nil
|
11
|
-
end
|
12
|
-
|
13
|
-
def inspect
|
14
|
-
%(#<Hotchoc::Presenters::Blocks::Image: title="#{title}" position="#{position}">)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Hotchoc
|
2
|
-
module Presenters
|
3
|
-
module Blocks
|
4
|
-
class Text < Hotchoc::Presenters::Blocks::Base
|
5
|
-
def markdown
|
6
|
-
@item['content']['markdown']
|
7
|
-
end
|
8
|
-
|
9
|
-
def html
|
10
|
-
@item['content']['html']
|
11
|
-
end
|
12
|
-
|
13
|
-
def inspect
|
14
|
-
%(#<Hotchoc::Presenters::Blocks::Text: position="#{position}">)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
module Hotchoc
|
2
|
-
module Presenters
|
3
|
-
class File < Hotchoc::Presenters::Base
|
4
|
-
def id
|
5
|
-
@item['id']
|
6
|
-
end
|
7
|
-
|
8
|
-
def name
|
9
|
-
@item['name']
|
10
|
-
end
|
11
|
-
|
12
|
-
def url
|
13
|
-
@item['url']
|
14
|
-
end
|
15
|
-
|
16
|
-
def width
|
17
|
-
@item['width']
|
18
|
-
end
|
19
|
-
|
20
|
-
def height
|
21
|
-
@item['height']
|
22
|
-
end
|
23
|
-
|
24
|
-
def size
|
25
|
-
@item['size']
|
26
|
-
end
|
27
|
-
|
28
|
-
def content_type
|
29
|
-
@item['content_type']
|
30
|
-
end
|
31
|
-
|
32
|
-
def thumbnails
|
33
|
-
if @item['thumbnails']
|
34
|
-
@item['thumbnails']['original'].map { |thumbnail| Hotchoc::Presenters::Thumbnail.new(thumbnail) } +
|
35
|
-
@item['thumbnails']['square'].map { |thumbnail| Hotchoc::Presenters::Thumbnail.new(thumbnail) }
|
36
|
-
else
|
37
|
-
[]
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def exif
|
42
|
-
@item['exif']
|
43
|
-
end
|
44
|
-
|
45
|
-
def created_at
|
46
|
-
Time.parse(@item['created_at'])
|
47
|
-
end
|
48
|
-
|
49
|
-
def updated_at
|
50
|
-
Time.parse(@item['updated_at'])
|
51
|
-
end
|
52
|
-
|
53
|
-
def inspect
|
54
|
-
%(#<Hotchoc::Presenters::File: name="#{name}">)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
module Hotchoc
|
2
|
-
module Presenters
|
3
|
-
class Page < Hotchoc::Presenters::Base
|
4
|
-
def id
|
5
|
-
@item['id']
|
6
|
-
end
|
7
|
-
|
8
|
-
def title
|
9
|
-
@item['title']
|
10
|
-
end
|
11
|
-
|
12
|
-
def subtitle
|
13
|
-
@item['subtitle']
|
14
|
-
end
|
15
|
-
|
16
|
-
def identifier
|
17
|
-
@item['identifier']
|
18
|
-
end
|
19
|
-
|
20
|
-
def status
|
21
|
-
@item['status']
|
22
|
-
end
|
23
|
-
|
24
|
-
def path
|
25
|
-
@item['path']
|
26
|
-
end
|
27
|
-
|
28
|
-
def parent_id
|
29
|
-
@item['parent_id']
|
30
|
-
end
|
31
|
-
|
32
|
-
def position
|
33
|
-
@item['position']
|
34
|
-
end
|
35
|
-
|
36
|
-
def level
|
37
|
-
@item['level']
|
38
|
-
end
|
39
|
-
|
40
|
-
def publish_date
|
41
|
-
Time.parse(@item['publish_date'])
|
42
|
-
end
|
43
|
-
|
44
|
-
def blocks
|
45
|
-
@item['blocks'].to_a.map { |block| block_for(block) }
|
46
|
-
end
|
47
|
-
|
48
|
-
def topics
|
49
|
-
@item['topics'].to_a.map { |topic| Hotchoc::Presenters::Topic.new(topic) }
|
50
|
-
end
|
51
|
-
|
52
|
-
def created_at
|
53
|
-
Time.parse(@item['created_at'])
|
54
|
-
end
|
55
|
-
|
56
|
-
def updated_at
|
57
|
-
Time.parse(@item['updated_at'])
|
58
|
-
end
|
59
|
-
|
60
|
-
def inspect
|
61
|
-
%(#<Hotchoc::Presenters::Page: title="#{title}">)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
module Hotchoc
|
2
|
-
module Presenters
|
3
|
-
class Post < Hotchoc::Presenters::Base
|
4
|
-
def id
|
5
|
-
@item['id']
|
6
|
-
end
|
7
|
-
|
8
|
-
def title
|
9
|
-
@item['title']
|
10
|
-
end
|
11
|
-
|
12
|
-
def subtitle
|
13
|
-
@item['subtitle']
|
14
|
-
end
|
15
|
-
|
16
|
-
def identifier
|
17
|
-
@item['identifier']
|
18
|
-
end
|
19
|
-
|
20
|
-
def status
|
21
|
-
@item['status']
|
22
|
-
end
|
23
|
-
|
24
|
-
def publish_date
|
25
|
-
Time.parse(@item['publish_date'])
|
26
|
-
end
|
27
|
-
|
28
|
-
def blocks
|
29
|
-
@item['blocks'].to_a.map { |block| block_for(block) }
|
30
|
-
end
|
31
|
-
|
32
|
-
def topics
|
33
|
-
@item['topics'].to_a.map { |topic| Hotchoc::Presenters::Topic.new(topic) }
|
34
|
-
end
|
35
|
-
|
36
|
-
def created_at
|
37
|
-
Time.parse(@item['created_at'])
|
38
|
-
end
|
39
|
-
|
40
|
-
def updated_at
|
41
|
-
Time.parse(@item['updated_at'])
|
42
|
-
end
|
43
|
-
|
44
|
-
def inspect
|
45
|
-
%(#<Hotchoc::Presenters::Post: title="#{title}">)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Hotchoc
|
2
|
-
module Presenters
|
3
|
-
class Thumbnail < Hotchoc::Presenters::Base
|
4
|
-
def name
|
5
|
-
@item['name']
|
6
|
-
end
|
7
|
-
|
8
|
-
def width
|
9
|
-
@item['width']
|
10
|
-
end
|
11
|
-
|
12
|
-
def height
|
13
|
-
@item['height']
|
14
|
-
end
|
15
|
-
|
16
|
-
def square?
|
17
|
-
width == height
|
18
|
-
end
|
19
|
-
|
20
|
-
def size
|
21
|
-
@item['size']
|
22
|
-
end
|
23
|
-
|
24
|
-
def url
|
25
|
-
@item['url']
|
26
|
-
end
|
27
|
-
|
28
|
-
def inspect
|
29
|
-
%(#<Hotchoc::Presenters::Thumbnail:>)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|