voog_api 0.0.7

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 (90) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +3 -0
  5. data/Guardfile +5 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.markdown +55 -0
  8. data/Rakefile +1 -0
  9. data/lib/voog_api/api/articles.rb +77 -0
  10. data/lib/voog_api/api/assets.rb +31 -0
  11. data/lib/voog_api/api/comments.rb +36 -0
  12. data/lib/voog_api/api/content_partials.rb +21 -0
  13. data/lib/voog_api/api/contents.rb +38 -0
  14. data/lib/voog_api/api/element_definitions.rb +31 -0
  15. data/lib/voog_api/api/elements.rb +63 -0
  16. data/lib/voog_api/api/forms.rb +21 -0
  17. data/lib/voog_api/api/languages.rb +68 -0
  18. data/lib/voog_api/api/layout_assets.rb +39 -0
  19. data/lib/voog_api/api/layouts.rb +31 -0
  20. data/lib/voog_api/api/media_sets.rb +36 -0
  21. data/lib/voog_api/api/nodes.rb +26 -0
  22. data/lib/voog_api/api/pages.rb +77 -0
  23. data/lib/voog_api/api/people.rb +16 -0
  24. data/lib/voog_api/api/site.rb +35 -0
  25. data/lib/voog_api/api/tags.rb +26 -0
  26. data/lib/voog_api/api/texts.rb +21 -0
  27. data/lib/voog_api/api/tickets.rb +26 -0
  28. data/lib/voog_api/client.rb +140 -0
  29. data/lib/voog_api/version.rb +3 -0
  30. data/lib/voog_api.rb +46 -0
  31. data/spec/fixtures/articles/article.json +37 -0
  32. data/spec/fixtures/articles/articles.json +75 -0
  33. data/spec/fixtures/assets/asset.json +24 -0
  34. data/spec/fixtures/assets/assets.json +29 -0
  35. data/spec/fixtures/comments/comment.json +21 -0
  36. data/spec/fixtures/comments/comments.json +35 -0
  37. data/spec/fixtures/content_partials/content_partial.json +27 -0
  38. data/spec/fixtures/content_partials/content_partials.json +47 -0
  39. data/spec/fixtures/contents/content.json +31 -0
  40. data/spec/fixtures/contents/contents.json +63 -0
  41. data/spec/fixtures/element_definitions/element_definition.json +31 -0
  42. data/spec/fixtures/element_definitions/element_definitions.json +15 -0
  43. data/spec/fixtures/elements/element.json +35 -0
  44. data/spec/fixtures/elements/elements.json +57 -0
  45. data/spec/fixtures/forms/form.json +104 -0
  46. data/spec/fixtures/forms/forms.json +43 -0
  47. data/spec/fixtures/languages/language.json +13 -0
  48. data/spec/fixtures/languages/languages.json +27 -0
  49. data/spec/fixtures/layout_assets/layout_asset.json +14 -0
  50. data/spec/fixtures/layout_assets/layout_assets.json +29 -0
  51. data/spec/fixtures/layouts/layout.json +11 -0
  52. data/spec/fixtures/layouts/layouts.json +23 -0
  53. data/spec/fixtures/media_sets/media_set.json +23 -0
  54. data/spec/fixtures/media_sets/media_sets.json +32 -0
  55. data/spec/fixtures/nodes/node.json +11 -0
  56. data/spec/fixtures/nodes/nodes.json +23 -0
  57. data/spec/fixtures/pages/page.json +73 -0
  58. data/spec/fixtures/pages/pages.json +104 -0
  59. data/spec/fixtures/people/people.json +29 -0
  60. data/spec/fixtures/people/person.json +14 -0
  61. data/spec/fixtures/site/site.json +30 -0
  62. data/spec/fixtures/tags/tag.json +20 -0
  63. data/spec/fixtures/tags/tags.json +31 -0
  64. data/spec/fixtures/texts/text.json +23 -0
  65. data/spec/fixtures/texts/texts.json +45 -0
  66. data/spec/fixtures/tickets/ticket.json +26 -0
  67. data/spec/fixtures/tickets/tickets.json +29 -0
  68. data/spec/spec_helper.rb +46 -0
  69. data/spec/voog_api/api/articles_spec.rb +89 -0
  70. data/spec/voog_api/api/assets_spec.rb +53 -0
  71. data/spec/voog_api/api/comments_spec.rb +66 -0
  72. data/spec/voog_api/api/content_partials_spec.rb +41 -0
  73. data/spec/voog_api/api/contents_spec.rb +53 -0
  74. data/spec/voog_api/api/element_definitions_spec.rb +53 -0
  75. data/spec/voog_api/api/elements_spec.rb +78 -0
  76. data/spec/voog_api/api/forms_spec.rb +41 -0
  77. data/spec/voog_api/api/languages_spec.rb +89 -0
  78. data/spec/voog_api/api/layout_assets_spec.rb +54 -0
  79. data/spec/voog_api/api/layouts_spec.rb +53 -0
  80. data/spec/voog_api/api/media_sets_spec.rb +64 -0
  81. data/spec/voog_api/api/nodes_spec.rb +52 -0
  82. data/spec/voog_api/api/pages_spec.rb +89 -0
  83. data/spec/voog_api/api/people_spec.rb +30 -0
  84. data/spec/voog_api/api/site_spec.rb +53 -0
  85. data/spec/voog_api/api/tags_spec.rb +53 -0
  86. data/spec/voog_api/api/texts_spec.rb +41 -0
  87. data/spec/voog_api/api/tickets_spec.rb +54 -0
  88. data/spec/voog_spec.rb +38 -0
  89. data/voog_api.gemspec +27 -0
  90. metadata +278 -0
@@ -0,0 +1,77 @@
1
+ module Voog
2
+ class API
3
+ module Pages
4
+
5
+ # List pages
6
+ def pages(params = {})
7
+ get 'pages', {query: params}
8
+ end
9
+
10
+ # Get a single page
11
+ def page(id, params = {})
12
+ get "pages/#{id}", {query: params}
13
+ end
14
+
15
+ # Create a page
16
+ def create_page(data)
17
+ post 'pages', data
18
+ end
19
+
20
+ # Update a page
21
+ def update_page(id, data)
22
+ put "pages/#{id}", data
23
+ end
24
+
25
+ # Patch a page
26
+ def patch_page(id, data)
27
+ patch "pages/#{id}", data
28
+ end
29
+
30
+ # Delete a page
31
+ def delete_page(id)
32
+ delete "pages/#{id}"
33
+ end
34
+
35
+ # Update/create a key in page data field
36
+ #
37
+ # @params id [String] key in data field
38
+ def update_page_data(page_id, id, data)
39
+ put "pages/#{page_id}/data/#{id}", {value: data}
40
+ end
41
+
42
+ # Delete a key from page data field
43
+ #
44
+ # @params id [String] key in data field
45
+ def delete_page_data(page_id, id)
46
+ delete "pages/#{page_id}/data/#{id}"
47
+ end
48
+
49
+ # Page contents
50
+
51
+ # List contents for page
52
+ def page_contents(id, params = {})
53
+ contents(Voog::API::Contents::ParentKind::Page, id, params)
54
+ end
55
+
56
+ # Get a single content for page
57
+ def page_content(page_id, id, params = {})
58
+ content(Voog::API::Contents::ParentKind::Page, page_id, id, params)
59
+ end
60
+
61
+ # Create a page content for page
62
+ def create_page_content(page_id, data)
63
+ create_content(Voog::API::Contents::ParentKind::Page, page_id, data)
64
+ end
65
+
66
+ # Delete a content from page
67
+ def delete_page_content(page_id, id)
68
+ delete_content(Voog::API::Contents::ParentKind::Page, page_id, id)
69
+ end
70
+
71
+ # Reorder/move page content inside/between content areas and parent objects
72
+ def move_page_content(page_id, id, params = {})
73
+ move_content(Voog::API::Contents::ParentKind::Page, page_id, id, params)
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,16 @@
1
+ module Voog
2
+ class API
3
+ module People
4
+
5
+ # List people
6
+ def people(params = {})
7
+ get 'people', {query: params}
8
+ end
9
+
10
+ # Get a single person
11
+ def person(id, params = {})
12
+ get "people/#{id}", {query: params}
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,35 @@
1
+ module Voog
2
+ class API
3
+ module Site
4
+
5
+ # Get site attributes
6
+ def site(params = {})
7
+ get 'site', {query: params}
8
+ end
9
+
10
+ # Update a site
11
+ def update_site(data)
12
+ put "site", data
13
+ end
14
+
15
+ # Patch a site
16
+ def patch_site(data)
17
+ patch "site", data
18
+ end
19
+
20
+ # Update/create a key in site data field
21
+ #
22
+ # @params id [String] key in data field
23
+ def update_site_data(id, data)
24
+ put "site/data/#{id}", {value: data}
25
+ end
26
+
27
+ # Delete a key from site data field
28
+ #
29
+ # @params id [String] key in data field
30
+ def delete_site_data(id)
31
+ delete "site/data/#{id}"
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,26 @@
1
+ module Voog
2
+ class API
3
+ module Tags
4
+
5
+ # List tags
6
+ def tags(params = {})
7
+ get 'tags', {query: params}
8
+ end
9
+
10
+ # Get a single tag
11
+ def tag(id, params = {})
12
+ get "tags/#{id}", {query: params}
13
+ end
14
+
15
+ # Update a tag
16
+ def update_tag(id, data)
17
+ put "tags/#{id}", data
18
+ end
19
+
20
+ # Delete a tag
21
+ def delete_tag(id)
22
+ delete "tags/#{id}"
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ module Voog
2
+ class API
3
+ module Texts
4
+
5
+ # List text contents
6
+ def texts(params = {})
7
+ get 'texts', {query: params}
8
+ end
9
+
10
+ # Get a single text content
11
+ def text(id, params = {})
12
+ get "texts/#{id}", {query: params}
13
+ end
14
+
15
+ # Update a text content
16
+ def update_text(id, data)
17
+ put "texts/#{id}", data
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ module Voog
2
+ class API
3
+ module Tickets
4
+
5
+ # List form tickets
6
+ def tickets(form_id, params = {})
7
+ get "forms/#{form_id}/tickets", {query: params}
8
+ end
9
+
10
+ # Get a single ticket for form
11
+ def ticket(form_id, id, params = {})
12
+ get "forms/#{form_id}/tickets/#{id}", {query: params}
13
+ end
14
+
15
+ # Delete a form ticket
16
+ def delete_ticket(form_id, id)
17
+ delete "forms/#{form_id}/tickets/#{id}"
18
+ end
19
+
20
+ # Delete all spam ticket for form
21
+ def delete_spam_tickets(form_id)
22
+ delete "forms/#{form_id}/tickets/delete_spam"
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,140 @@
1
+ require 'json'
2
+ require 'sawyer'
3
+
4
+ require 'voog_api/api/articles'
5
+ require 'voog_api/api/assets'
6
+ require 'voog_api/api/comments'
7
+ require 'voog_api/api/content_partials'
8
+ require 'voog_api/api/contents'
9
+ require 'voog_api/api/element_definitions'
10
+ require 'voog_api/api/elements'
11
+ require 'voog_api/api/forms'
12
+ require 'voog_api/api/languages'
13
+ require 'voog_api/api/layouts'
14
+ require 'voog_api/api/layout_assets'
15
+ require 'voog_api/api/media_sets'
16
+ require 'voog_api/api/nodes'
17
+ require 'voog_api/api/site'
18
+ require 'voog_api/api/pages'
19
+ require 'voog_api/api/people'
20
+ require 'voog_api/api/tags'
21
+ require 'voog_api/api/texts'
22
+ require 'voog_api/api/tickets'
23
+
24
+ module Voog
25
+
26
+ class Client
27
+
28
+ include Voog::API::Articles
29
+ include Voog::API::Assets
30
+ include Voog::API::Comments
31
+ include Voog::API::ContentPartials
32
+ include Voog::API::Contents
33
+ include Voog::API::ElementDefinitions
34
+ include Voog::API::Elements
35
+ include Voog::API::Forms
36
+ include Voog::API::Languages
37
+ include Voog::API::Layouts
38
+ include Voog::API::LayoutAssets
39
+ include Voog::API::MediaSets
40
+ include Voog::API::Nodes
41
+ include Voog::API::Pages
42
+ include Voog::API::People
43
+ include Voog::API::Site
44
+ include Voog::API::Tags
45
+ include Voog::API::Texts
46
+ include Voog::API::Tickets
47
+
48
+ attr_reader :api_token, :host
49
+
50
+ def initialize(host = Voog.host, api_token = Voog.api_token, options = {})
51
+ @host = host
52
+ @api_token = api_token
53
+ @options = options
54
+ @raise_on_error = options.fetch(:raise_on_error, true)
55
+ end
56
+
57
+ def get(url, options = {})
58
+ request :get, url, nil, options
59
+ end
60
+
61
+ def post(url, data, options = {})
62
+ request :post, url, data, options
63
+ end
64
+
65
+ def put(url, data, options = {})
66
+ request :put, url, data, options
67
+ end
68
+
69
+ def patch(url, data, options = {})
70
+ request :patch, url, data, options
71
+ end
72
+
73
+ def delete(url, options = {})
74
+ request :delete, url, nil, options
75
+ end
76
+
77
+ def head(url, options = {})
78
+ request :head, url, nil, options
79
+ end
80
+
81
+ def api_endpoint
82
+ "http://#{host}/admin/api"
83
+ end
84
+
85
+ def agent
86
+ @agent ||= Sawyer::Agent.new(api_endpoint, sawyer_options) do |http|
87
+ http.headers[:content_type] = 'application/json'
88
+ http.headers[:accept] = 'application/json'
89
+ http.headers[:user_agent] = 'Voog.rb Ruby wrapper'
90
+ http.headers[:x_api_token] = @api_token
91
+ end
92
+ end
93
+
94
+ def multipart_agent
95
+ Faraday.new do |faraday|
96
+ faraday.request :multipart
97
+ faraday.response :raise_error if @raise_on_error
98
+ faraday.adapter :net_http
99
+
100
+ faraday.headers['X_API_TOKEN'] = @api_token
101
+ faraday.headers['User-Agent'] = 'Voog.rb Ruby wrapper'
102
+ end
103
+ end
104
+
105
+ def last_response
106
+ @last_response
107
+ end
108
+
109
+ def parse_response(response)
110
+ JSON.parse(response).inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
111
+ end
112
+
113
+ private
114
+
115
+ def request(method, path, data, options = {})
116
+ multipart = options.fetch(:multipart, false) && (method == :post)
117
+
118
+ @last_response = response = multipart ? \
119
+ multipart_agent.post("#{api_endpoint}/#{path}", data) : \
120
+ agent.call(method, URI.encode(path.to_s), data, options)
121
+ if multipart
122
+ parse_response(response.body)
123
+ else
124
+ response.data
125
+ end
126
+ end
127
+
128
+ def sawyer_options(multipart = false)
129
+ faraday = Faraday.new do |faraday|
130
+ faraday.response :raise_error if @raise_on_error
131
+ faraday.adapter :net_http
132
+ end
133
+ opts = {
134
+ links_parser: Sawyer::LinkParsers::Simple.new,
135
+ faraday: faraday
136
+ }
137
+ opts
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,3 @@
1
+ module Voog
2
+ VERSION = '0.0.7'
3
+ end
data/lib/voog_api.rb ADDED
@@ -0,0 +1,46 @@
1
+ require 'voog_api/version'
2
+ require 'voog_api/client'
3
+
4
+ module Voog
5
+
6
+ class << self
7
+
8
+ attr_accessor :host, :api_token
9
+
10
+ def client(options = {})
11
+ unless host.nil? && api_token.nil?
12
+ Voog::Client.new(host, api_token, options)
13
+ else
14
+ nil
15
+ end
16
+ end
17
+
18
+ def configure
19
+ yield self
20
+ true
21
+ end
22
+
23
+ if RUBY_VERSION >= '1.9'
24
+
25
+ def respond_to_missing?(method_name, include_private = false)
26
+ client.respond_to?(method_name, include_private)
27
+ end
28
+
29
+ end
30
+
31
+ if RUBY_VERSION < '1.9'
32
+
33
+ def respond_to?(method_name, include_private = false)
34
+ client.respond_to?(method_name, include_private) || super
35
+ end
36
+
37
+ end
38
+
39
+ private
40
+
41
+ def method_missing(method_name, *args, &block)
42
+ return super unless client.respond_to?(method_name)
43
+ client.send(method_name, *args, &block)
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,37 @@
1
+ {
2
+ "id": 2,
3
+ "title": "How I wrote my first article",
4
+ "path": "how-i-wrote-my-first-article",
5
+ "comments_count": 0,
6
+ "publishing": true,
7
+ "published": true,
8
+ "data": {},
9
+ "created_at": "2014-01-23T09:22:04.000Z",
10
+ "updated_at": "2014-01-23T09:22:04.000Z",
11
+ "published_at": "2014-01-23T09:22:04.000Z",
12
+ "url": "http://voog.test/admin/api/articles/2",
13
+ "public_url": "http://voog.test/blog/how-i-wrote-my-first-article",
14
+ "contents_url": "http://voog.test/admin/api/articles/2/contents",
15
+ "comments_url": "http://voog.test/admin/api/site/articles/2/comments",
16
+ "page": {
17
+ "id": 3,
18
+ "content_type": "blog",
19
+ "created_at": "2014-01-23T09:19:04.000Z",
20
+ "updated_at": "2014-01-23T09:19:04.000Z",
21
+ "published_at": "2014-01-23T09:19:04.000Z",
22
+ "url": "http://voog.test/admin/api/pages/3"
23
+ },
24
+ "language": {
25
+ "id": 1,
26
+ "code": "en",
27
+ "title": "ENG",
28
+ "created_at": "2014-01-23T09:19:04.000Z",
29
+ "updated_at": "2014-01-23T09:19:04.000Z",
30
+ "url": "http://voog.test/admin/api/languages/1"
31
+ },
32
+ "author": {
33
+ "id": 1,
34
+ "name": "John Smith",
35
+ "url": "http://voog.test/admin/api/people/1"
36
+ }
37
+ }
@@ -0,0 +1,75 @@
1
+ [
2
+ {
3
+ "id": 2,
4
+ "title": "How I wrote my first article",
5
+ "path": "how-i-wrote-my-first-article",
6
+ "comments_count": 0,
7
+ "publishing": true,
8
+ "published": true,
9
+ "data": {},
10
+ "created_at": "2014-01-23T09:22:04.000Z",
11
+ "updated_at": "2014-01-23T09:22:04.000Z",
12
+ "published_at": "2014-01-23T09:22:04.000Z",
13
+ "url": "http://voog.test/admin/api/articles/2",
14
+ "public_url": "http://voog.test/blog/how-i-wrote-my-first-article",
15
+ "contents_url": "http://voog.test/admin/api/articles/2/contents",
16
+ "comments_url": "http://voog.test/admin/api/site/articles/2/comments",
17
+ "page": {
18
+ "id": 3,
19
+ "content_type": "blog",
20
+ "created_at": "2014-01-23T09:19:04.000Z",
21
+ "updated_at": "2014-01-23T09:19:04.000Z",
22
+ "published_at": "2014-01-23T09:19:04.000Z",
23
+ "url": "http://voog.test/admin/api/pages/3"
24
+ },
25
+ "language": {
26
+ "id": 1,
27
+ "code": "en",
28
+ "title": "ENG",
29
+ "created_at": "2014-01-23T09:19:04.000Z",
30
+ "updated_at": "2014-01-23T09:19:04.000Z",
31
+ "url": "http://voog.test/admin/api/languages/1"
32
+ },
33
+ "author": {
34
+ "id": 1,
35
+ "name": "John Smith",
36
+ "url": "http://voog.test/admin/api/people/1"
37
+ }
38
+ }, {
39
+ "id": 1,
40
+ "title": "Having sample news pieces?",
41
+ "path": "having-sample-news-pieces",
42
+ "comments_count": 0,
43
+ "publishing": true,
44
+ "published": true,
45
+ "data": {},
46
+ "created_at": "2014-01-23T09:19:04.000Z",
47
+ "updated_at": "2014-01-23T09:19:04.000Z",
48
+ "published_at": "2014-01-23T09:19:04.000Z",
49
+ "url": "http://voog.test/admin/api/articles/1",
50
+ "public_url": "http://voog.test/blog/having-sample-news-pieces",
51
+ "contents_url": "http://voog.test/admin/api/articles/1/contents",
52
+ "comments_url": "http://voog.test/admin/api/site/articles/1/comments",
53
+ "page": {
54
+ "id": 3,
55
+ "content_type": "blog",
56
+ "created_at": "2014-01-23T09:19:04.000Z",
57
+ "updated_at": "2014-01-23T09:19:04.000Z",
58
+ "published_at": "2014-01-23T09:19:04.000Z",
59
+ "url": "http://voog.test/admin/api/pages/3"
60
+ },
61
+ "language": {
62
+ "id": 1,
63
+ "code": "en",
64
+ "title": "ENG",
65
+ "created_at": "2014-01-23T09:19:04.000Z",
66
+ "updated_at": "2014-01-23T09:19:04.000Z",
67
+ "url": "http://voog.test/admin/api/languages/1"
68
+ },
69
+ "author": {
70
+ "id": 1,
71
+ "name": "John Smith",
72
+ "url": "http://voog.test/admin/api/people/1"
73
+ }
74
+ }
75
+ ]
@@ -0,0 +1,24 @@
1
+ {
2
+ "id": 1,
3
+ "filename": "Screen Shot 2014-01-28 at 10.53.26.png",
4
+ "content_type": "image/png",
5
+ "size": 95708,
6
+ "extension": "png",
7
+ "type": "image",
8
+ "created_at": "2014-02-04T10:55:28.000Z",
9
+ "updated_at": "2014-02-04T10:55:30.000Z",
10
+ "url": "http://voog.test/admin/api/assets/1",
11
+ "original_url": "http://media.voog.com/0000/0000/0001/photos/Screen%20Shot%202014-01-28%20at%2010.53.26.png",
12
+ "thumbnail_url": "http://media.voog.com/0000/0000/0001/photos/Screen%20Shot%202014-01-28%20at%2010.53.26_large.jpg",
13
+ "medium_thumbnail_url": "http://media.voog.com/0000/0000/0001/photos/Screen%20Shot%202014-01-28%20at%2010.53.26_medium.jpg",
14
+ "width": 999,
15
+ "height": 569,
16
+ "media_sets": [{
17
+ "id": 1,
18
+ "title": "",
19
+ "created_at": "2014-01-16T08:04:27.000Z",
20
+ "updated_at": "2014-01-16T08:04:27.000Z",
21
+ "url": "http://media.voog.com/admin/api/media_sets/1",
22
+ "add_assets_url": "http://media.voog.com/admin/api/media_sets/1/add_assets"
23
+ }]
24
+ }
@@ -0,0 +1,29 @@
1
+ [
2
+ {
3
+ "id": 2,
4
+ "filename": "report.pdf",
5
+ "content_type": "application/pdf",
6
+ "size": 36657,
7
+ "extension": "pdf",
8
+ "type": "document",
9
+ "created_at": "2014-02-04T14:37:41.000Z",
10
+ "updated_at": "2014-02-04T14:37:41.000Z",
11
+ "url": "http://voog.test/admin/api/assets/2",
12
+ "original_url": "http://media.voog.com/0000/0000/0001/files/report.pdf"
13
+ }, {
14
+ "id": 1,
15
+ "filename": "Screen Shot 2014-01-28 at 10.53.26.png",
16
+ "content_type": "image/png",
17
+ "size": 95708,
18
+ "extension": "png",
19
+ "type": "image",
20
+ "created_at": "2014-02-04T10:55:28.000Z",
21
+ "updated_at": "2014-02-04T10:55:30.000Z",
22
+ "url": "http://voog.test/admin/api/assets/1",
23
+ "original_url": "http://media.voog.com/0000/0000/0001/photos/Screen%20Shot%202014-01-28%20at%2010.53.26.png",
24
+ "thumbnail_url": "http://media.voog.com/0000/0000/0001/photos/Screen%20Shot%202014-01-28%20at%2010.53.26_large.jpg",
25
+ "medium_thumbnail_url": "http://media.voog.com/0000/0000/0001/photos/Screen%20Shot%202014-01-28%20at%2010.53.26_medium.jpg",
26
+ "width": 999,
27
+ "height": 569
28
+ }
29
+ ]
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": 2,
3
+ "author": "I'm a Spammer!",
4
+ "body": "Buy something!",
5
+ "spam": false,
6
+ "created_at": "2014-02-07T10:54:08.000Z",
7
+ "updated_at": "2014-02-07T10:54:08.000Z",
8
+ "url": "http://voog.test/admin/api/articles/1/comments/2",
9
+ "article": {
10
+ "id": 1,
11
+ "title": "How I wrote my first article",
12
+ "created_at": "2014-02-07T10:56:07.000Z",
13
+ "updated_at": "2014-02-07T10:56:07.000Z",
14
+ "url": "http://voog.test/admin/api/articles/1",
15
+ "public_url": "http://voog.test/blog/how-i-wrote-my-first-article"
16
+ },
17
+ "author_email": "spam@spam.com",
18
+ "user_ip": "23.81.71.154",
19
+ "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:27.0) Gecko/20100101 Firefox/27.0",
20
+ "referrer": "http://voog.test/blog/how-i-wrote-my-first-article"
21
+ }
@@ -0,0 +1,35 @@
1
+ [
2
+ {
3
+ "id": 2,
4
+ "author": "I'm a Spammer!",
5
+ "body": "Buy something!",
6
+ "spam": false,
7
+ "created_at": "2014-02-07T10:54:08.000Z",
8
+ "updated_at": "2014-02-07T10:56:07.000Z",
9
+ "url": "http://voog.test/admin/api/articles/1/comments/2",
10
+ "article": {
11
+ "id": 1,
12
+ "title": "How I wrote my first article",
13
+ "created_at": "2014-02-07T10:56:07.000Z",
14
+ "updated_at": "2014-02-07T10:56:07.000Z",
15
+ "url": "http://voog.test/admin/api/articles/1",
16
+ "public_url": "http://voog.test/blog/how-i-wrote-my-first-article"
17
+ }
18
+ }, {
19
+ "id": 1,
20
+ "author": "Me",
21
+ "body": "Hi!\r\n\r\nThis is a comment!!",
22
+ "spam": false,
23
+ "created_at": "2014-02-06T15:53:01.000Z",
24
+ "updated_at": "2014-02-06T15:53:01.000Z",
25
+ "url": "http://voog.test/admin/api/articles/1/comments/1",
26
+ "article": {
27
+ "id": 1,
28
+ "title": "How I wrote my first article",
29
+ "created_at": "2014-02-07T10:56:07.000Z",
30
+ "updated_at": "2014-02-07T10:56:07.000Z",
31
+ "url": "http://voog.test/admin/api/articles/1",
32
+ "public_url": "http://voog.test/blog/how-i-wrote-my-first-article"
33
+ }
34
+ }
35
+ ]
@@ -0,0 +1,27 @@
1
+ {
2
+ "id": 2,
3
+ "content_type": "video",
4
+ "created_at": "2014-05-30T10:22:04.000Z",
5
+ "updated_at": "2014-05-30T10:22:04.000Z",
6
+ "url": "http://voog.test/admin/api/content_partials/2",
7
+ "content": {
8
+ "id": 3,
9
+ "name": "body",
10
+ "position": 1,
11
+ "created_at": "2014-05-30T10:22:04.000Z",
12
+ "updated_at": "2014-05-30T10:22:04.000Z",
13
+ "url": "http://voog.test/admin/api/pages/1/contents/3"
14
+ },
15
+ "parent": {
16
+ "id": 1,
17
+ "title": "Home page",
18
+ "type": "page",
19
+ "created_at": "2014-01-13T09:19:04.000Z",
20
+ "updated_at": "2014-01-13T09:19:04.000Z",
21
+ "url": "http://voog.test/admin/api/pages/1"
22
+ },
23
+ "body": "<iframe></iframe>",
24
+ "metainfo": {
25
+ "type": "video"
26
+ }
27
+ }