infogram-ruby 0.0.4 → 0.0.5

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
2
  SHA1:
3
- metadata.gz: 673b209eab1d0ab5e1cbc5e37c1a0920718e7ca4
4
- data.tar.gz: a21a7942c9f0371b6ae3a4287a14d136949e6463
3
+ metadata.gz: 0a23c1315dba87443649183c1d56c7131b87a9ec
4
+ data.tar.gz: 61fb6428f5166f7bc551bf8c8a8a50558ac54e4b
5
5
  SHA512:
6
- metadata.gz: 42c6e5cbe3ebef37551ed03144061ffadb3bb71177fd32c9002ac9c4097cd6491391e44ba45d020dc54c31e11aed435106b943fbc81b8e569d0c43817d5425d7
7
- data.tar.gz: 0dd4da9af12eff3b18dc916546208709934d8585dd296eb213d790b8ba8e23adc3da5d5c158d9110768155d0fc684dd0cccaa3b9fa525e26eb1968bf56d7a9d6
6
+ metadata.gz: 5c6928409104494f998b9711bb655fc63f5668cb396bb1e7c64ed8a19635c65e7a8ae818abd215f89ff7e0130b1c56ed9c07425ca1f97a4e97e6e43941a1d4f0
7
+ data.tar.gz: f6cc7bd51b25d90e05e994e46e276d249755066677486da4540b5129b1134bcf0f2d90c4e148291d6c7f7c2c481424befcb44f7881ad101a5f265604a0a90119
data/.gitignore CHANGED
@@ -1,14 +1,7 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
13
- *.a
14
- mkmf.log
1
+ *~
2
+ .*
3
+ pkg/*
4
+ doc/*
5
+ Gemfile.lock
6
+ *.gem
7
+ docs/_build
data/README.md CHANGED
@@ -4,25 +4,16 @@ Ruby library for Infogr.am
4
4
 
5
5
  ## Installation
6
6
 
7
- Add this line to your application's Gemfile:
8
-
9
- ```ruby
10
- gem 'infogram-ruby'
11
- ```
12
-
13
- And then execute:
14
-
15
- $ bundle
16
-
17
- Or install it yourself as:
18
-
19
7
  $ gem install infogram-ruby
20
8
 
21
9
  ## Usage
22
10
  ```ruby
11
+ require 'infogram-ruby'
12
+
23
13
  infogram = Infogram.new('API_KEY', 'API_SECRET')
24
14
  infogram.get_themes
25
15
  ```
16
+
26
17
  ## Example response
27
18
  ```json
28
19
  [
@@ -31,6 +22,11 @@ infogram.get_themes
31
22
  "title": "twitter",
32
23
  "thumb": "https://infogr.am/i/templates/61/twitter-thumbnail-small.png"
33
24
  },
25
+ {
26
+ "id": 44,
27
+ "title": "Megaphone",
28
+ "thumb": "https://infogr.am/i/templates/S/PRO-megaphone.png"
29
+ },
34
30
  {
35
31
  "id": 34,
36
32
  "title": "Asketic-new",
@@ -4,9 +4,9 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'infogram-ruby'
7
- s.version = '0.0.4'
7
+ s.version = '0.0.5'
8
8
  s.authors = ['Maksim Berjoza']
9
- s.email = ['maksim@infogr.am']
9
+ s.email = ['torbjon@gmail.com']
10
10
  s.summary = %q{Infogr.am Ruby SDK}
11
11
  s.description = %q{Ruby library for Infogr.am}
12
12
  s.homepage = 'https://github.com/infogram/infogram-ruby'
@@ -3,18 +3,20 @@ require 'json'
3
3
  require 'cgi'
4
4
 
5
5
  class Infogram
6
+ API_URL = 'https://infogr.am/service/v1'
7
+
6
8
  attr_accessor :api_key, :api_secret, :api_url
7
9
 
8
10
  def initialize(api_key, api_secret)
9
11
  @api_key = api_key
10
12
  @api_secret = api_secret
11
- @api_url = 'https://infogr.am/service/v1'
13
+ @api_url = API_URL
12
14
  end
13
15
 
14
16
  def decode_params(params)
15
17
  params.keys.sort.map{ |k|
16
- value = ("#{k}" == 'content') ? params[k].to_json : params[k]
17
- "#{k}=#{url_escaping(value)}"
18
+ value = (k.to_s == 'content') ? url_escaping(params[k].to_json) : params[k]
19
+ "#{k}=#{value}"
18
20
  }.join('&')
19
21
  end
20
22
 
@@ -25,21 +27,29 @@ class Infogram
25
27
  end
26
28
 
27
29
  def url_escaping(string)
28
- CGI.escape(string.to_s).gsub('+', '%20')
30
+ CGI.escape(string).gsub('+', '%20')
29
31
  end
30
32
 
33
+ # themes
31
34
  def get_themes(opts={})
32
35
  opts[:api_key] = @api_key
33
36
  opts[:api_sig] = signature('GET', 'themes', opts)
34
37
  HTTParty.get("#{@api_url}/themes", query: opts)
35
38
  end
36
39
 
40
+ # infographics
37
41
  def get_infographics(opts={})
38
42
  opts[:api_key] = @api_key
39
- opts[:api_sig] = signature('GET', 'infographics', opts)
43
+ opts[:api_sig] = signature('GET', "infographics", opts)
40
44
  HTTParty.get("#{@api_url}/infographics", query: opts)
41
45
  end
42
46
 
47
+ def get_infographic(id, opts={})
48
+ opts[:api_key] = @api_key
49
+ opts[:api_sig] = signature('GET', "infographics/#{id}", opts)
50
+ HTTParty.get("#{@api_url}/infographics/#{id}", query: opts)
51
+ end
52
+
43
53
  def create_infographic(opts={})
44
54
  opts[:api_key] = @api_key
45
55
  opts[:api_sig] = signature('POST', 'infographics', opts)
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "d819d9b7-67fb-40ec-9400-d63cc209aea8",
3
+ "title": "sample infographic 2",
4
+ "theme_id": 32,
5
+ "published": true,
6
+ "thumbnail_url": "https://s3-eu-west-1.amazonaws.com/infogram-thumbs-200/d819d9b7-67fb-40ec-9400-d63cc209aea8.jpg",
7
+ "date_modified": "2014-12-19T09:32:52.000Z",
8
+ "url": "https://infogr.am/sample-infographic-28",
9
+ "embed_responsive": "<script id=\"infogram_0_sample-infographic-28\" src=\"//e.infogr.am/js/embed.js?zni\" type=\"text/javascript\"></script><div style=\"width:100%;border-top:1px solid #acacac;padding-top:3px;font-family:Arial;font-size:10px;text-align:center;\"><a target=\"_blank\" href=\"https://infogr.am/sample-infographic-28\" style=\"color:#acacac;text-decoration:none;\">sample infographic 2</a> |<a style=\"color:#acacac;text-decoration:none;\" href=\"https://infogr.am\" target=\"_blank\">Create infographics</a></div>"
10
+ }
@@ -0,0 +1,21 @@
1
+ [
2
+ {
3
+ "id": "309b6f66-83d2-437e-84d3-edb76035b771",
4
+ "title": "Sample infographic 1",
5
+ "theme_id": 29,
6
+ "published": false,
7
+ "thumbnail_url": "https://s3-eu-west-1.amazonaws.com/infogram-thumbs-200/309b6f66-83d2-437e-84d3-edb76035b771.jpg",
8
+ "date_modified": "2014-12-09T13:28:36.000Z",
9
+ "user_profile": "infogram_demo"
10
+ }, {
11
+ "id": "d819d9b7-67fb-40ec-9400-d63cc209aea8",
12
+ "title": "sample infographic 2",
13
+ "theme_id": 32,
14
+ "published": true,
15
+ "thumbnail_url": "https://s3-eu-west-1.amazonaws.com/infogram-thumbs-200/d819d9b7-67fb-40ec-9400-d63cc209aea8.jpg",
16
+ "date_modified": "2014-12-19T09:32:52.000Z",
17
+ "user_profile": "infogram_demo",
18
+ "url": "https://infogr.am/sample-infographic-28",
19
+ "embed_responsive": "<script id=\"infogram_0_sample-infographic-28\" src=\"//e.infogr.am/js/embed.js?xvj\" type=\"text/javascript\"></script><div style=\"width:100%;border-top:1px solid #acacac;padding-top:3px;font-family:Arial;font-size:10px;text-align:center;\"><a target=\"_blank\" href=\"https://infogr.am/sample-infographic-28\" style=\"color:#acacac;text-decoration:none;\">sample infographic 2</a> |<a style=\"color:#acacac;text-decoration:none;\" href=\"https://infogr.am\" target=\"_blank\">Create infographics</a></div>"
20
+ }
21
+ ]
@@ -0,0 +1,17 @@
1
+ [
2
+ {
3
+ "id":61,
4
+ "title":"twitter",
5
+ "thumbnail_url":"https://infogr.am/i/templates/61/twitter-thumbnail-small.png"
6
+ },
7
+ {
8
+ "id":44,
9
+ "title":"Megaphone",
10
+ "thumbnail_url":"https://infogr.am/i/templates/S/PRO-megaphone.png"
11
+ },
12
+ {
13
+ "id":34,
14
+ "title":"Asketic-new",
15
+ "thumbnail_url":"https://infogr.am/i/templates/S/asketic-black.png"
16
+ }
17
+ ]
data/spec/helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'infogram'
1
+ require 'infogram-ruby'
2
2
  require 'rspec'
3
3
  require 'webmock/rspec'
4
4
 
@@ -13,3 +13,19 @@ end
13
13
  def infogram_client(key, secret)
14
14
  Infogram.new(key, secret)
15
15
  end
16
+
17
+ def fixture(file)
18
+ File.read('spec/fixtures/' + file)
19
+ end
20
+
21
+ def with_fixture(file)
22
+ { body: fixture(file), headers: { content_type: 'application/json; charset=utf-8' } }
23
+ end
24
+
25
+ def stub_get(path)
26
+ stub_request(:get, /.*#{Infogram::API_URL + '/' + path}*/)
27
+ end
28
+
29
+ def stub_post(path)
30
+ stub_request(:post, /.*#{Infogram::API_URL + '/' + path}*/)
31
+ end
@@ -0,0 +1,63 @@
1
+ require 'helper'
2
+
3
+ describe 'Infogram' do
4
+ let (:api_key) { 'nMECGhmHe9' }
5
+ let (:api_secret) { 'da5xoLrCCx' }
6
+ let (:client) { infogram_client(api_key, api_secret) }
7
+ let (:params) { {
8
+ content: [
9
+ {
10
+ type: 'h1',
11
+ text: 'Hello infogr.am'
12
+ }
13
+ ],
14
+ theme_id: 45,
15
+ publish: false,
16
+ title: 'Hello'
17
+ }
18
+ }
19
+
20
+ context 'Signature' do
21
+ let (:encoded_params) { 'api_key=nMECGhmHe9&content=%5B%7B%22type%22%3A%22h1%22%2C%22text%22%3A%22Hello%20infogr.am%22%7D%5D&publish=false&theme_id=45&title=Hello' }
22
+
23
+ it 'should encode params' do
24
+ params[:api_key] = api_key
25
+ expect(client.decode_params(params)).to eq(encoded_params)
26
+ end
27
+
28
+ it 'should generate signature' do
29
+ params[:api_key] = api_key
30
+ signature = client.signature('post', 'infographics', params)
31
+ expect(signature).to eq('bqwCqAk1TWDYNy3eqV0BiNuIERQ=')
32
+ end
33
+ end
34
+
35
+ context 'Themes' do
36
+ it 'should return themes list' do
37
+ stub_get('themes').to_return(with_fixture('themes.json'))
38
+ themes = client.get_themes()
39
+ expect(themes[0]['id']).to eq(61)
40
+ expect(themes[1]['title']).to eq('Megaphone')
41
+ end
42
+ end
43
+
44
+ context 'Infographic' do
45
+ it 'GET infographics' do
46
+ stub_get('infographics').to_return(with_fixture('infographics.json'))
47
+ ig = client.get_infographics
48
+ expect(ig[1]['id']).to eq('d819d9b7-67fb-40ec-9400-d63cc209aea8')
49
+ end
50
+
51
+ it 'GET infographics/:id' do
52
+ stub_get('infographics').to_return(with_fixture('infographic.json'))
53
+ ig = client.get_infographic('d819d9b7-67fb-40ec-9400-d63cc209aea8')
54
+ expect(ig['title']).to eq('sample infographic 2')
55
+ end
56
+
57
+ it 'POST infographics' do
58
+ stub_post('infographics').to_return(with_fixture('infographic.json'))
59
+ ig = client.create_infographic(params)
60
+ expect(ig['title']).to eq('sample infographic 2')
61
+ end
62
+ end
63
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infogram-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maksim Berjoza
@@ -68,7 +68,7 @@ dependencies:
68
68
  version: '1.8'
69
69
  description: Ruby library for Infogr.am
70
70
  email:
71
- - maksim@infogr.am
71
+ - torbjon@gmail.com
72
72
  executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
@@ -81,9 +81,12 @@ files:
81
81
  - README.md
82
82
  - Rakefile
83
83
  - infogram-ruby.gemspec
84
- - lib/infogram.rb
84
+ - lib/infogram-ruby.rb
85
+ - spec/fixtures/infographic.json
86
+ - spec/fixtures/infographics.json
87
+ - spec/fixtures/themes.json
85
88
  - spec/helper.rb
86
- - spec/infogram_spec.rb
89
+ - spec/infogram-ruby_spec.rb
87
90
  homepage: https://github.com/infogram/infogram-ruby
88
91
  licenses:
89
92
  - MIT
@@ -109,5 +112,8 @@ signing_key:
109
112
  specification_version: 4
110
113
  summary: Infogr.am Ruby SDK
111
114
  test_files:
115
+ - spec/fixtures/infographic.json
116
+ - spec/fixtures/infographics.json
117
+ - spec/fixtures/themes.json
112
118
  - spec/helper.rb
113
- - spec/infogram_spec.rb
119
+ - spec/infogram-ruby_spec.rb
@@ -1,34 +0,0 @@
1
- require 'helper'
2
-
3
- describe 'Infogram' do
4
- let (:api_key) { 'nMECGhmHe9' }
5
- let (:api_secret) { 'da5xoLrCCx' }
6
- let (:client) { infogram_client(api_key, api_secret) }
7
- let (:encoded_params) { 'content=%5B%7B%22type%22%3A%22h1%22%2C%22text%22%3A%22Hello%20infogr.am%22%7D%5D&key=nMECGhmHe9&publish=false&template=45&title=Hello' }
8
- let (:params) { {
9
- template: 45,
10
- content: [
11
- {
12
- type: 'h1',
13
- text: 'Hello infogr.am'
14
- }
15
- ],
16
- key: api_key,
17
- publish: false,
18
- title: 'Hello'
19
- }
20
- }
21
-
22
- it 'should encode params' do
23
- expect(client.decode_params(params)).to eq(encoded_params)
24
- end
25
-
26
- it 'should generate signature' do
27
- signature = client.signature('post', 'infographics', params)
28
- expect(signature).to eq('nI2LXdDhKNf7mtdgCHflrcMSluY=')
29
- end
30
-
31
- # it 'should return themes list' do
32
- # client.get_themes()
33
- # end
34
- end