infogram-ruby 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 730e604ebd01a18f4a95bed79f71d87f899148e7
4
- data.tar.gz: f180b6d0d90ef30188ecf6f976e72865f9495266
3
+ metadata.gz: c506de4569cbef7cc17a74fe6e23eaf9c027ae4a
4
+ data.tar.gz: e0206530c3695c98f4460391bb0ff471218da4c2
5
5
  SHA512:
6
- metadata.gz: 9246c407594fe0eca9ba96d5f475729254d382d38e94f741eeccbcfbe0c54940fb48279e0cdf2e8169435ee55a066db32b8ebaa1d99378da15943318ebd8a608
7
- data.tar.gz: ece68ceaa4130fa96d7b51bf469ca479cd51a6175c1da8ff35f2763f30ea548ff4127b40c789a3517c156f212598740757ef6494722b60ca615fbe3f8c8c5301
6
+ metadata.gz: f9194557c5bf6e8b65bb73855e8e76cd03ec05e0119dda542d15979894e2146e06d3d13f45906adcca4c26390c66cef5547ce4918937cd9615bd16b871c906bd
7
+ data.tar.gz: 60921e4df0f4645806a893a6549ca161cbf044c14bb86336b1c548afca5f31e6f4481eddd0cecf3c695752d59dd1a7b06eb9b8c2b89110c21997ec56dd1547c5
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
@@ -4,7 +4,7 @@ $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.1'
7
+ s.version = '0.0.2'
8
8
  s.authors = ['Maksim Berjoza']
9
9
  s.email = ['torbjon@gmail.com']
10
10
  s.summary = %q{Infogr.am Ruby SDK}
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
 
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.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maksim Berjoza
@@ -81,12 +81,10 @@ files:
81
81
  - README.md
82
82
  - Rakefile
83
83
  - infogram-ruby.gemspec
84
- - lib/infogram.rb
85
84
  - spec/fixtures/infographic.json
86
85
  - spec/fixtures/infographics.json
87
86
  - spec/fixtures/themes.json
88
87
  - spec/helper.rb
89
- - spec/infogram_spec.rb
90
88
  homepage: ''
91
89
  licenses:
92
90
  - MIT
@@ -116,4 +114,3 @@ test_files:
116
114
  - spec/fixtures/infographics.json
117
115
  - spec/fixtures/themes.json
118
116
  - spec/helper.rb
119
- - spec/infogram_spec.rb
data/lib/infogram.rb DELETED
@@ -1,59 +0,0 @@
1
- require 'httparty'
2
- require 'json'
3
- require 'cgi'
4
-
5
- class Infogram
6
- API_URL = 'https://infogr.am/service/v1'
7
-
8
- attr_accessor :api_key, :api_secret, :api_url
9
-
10
- def initialize(api_key, api_secret)
11
- @api_key = api_key
12
- @api_secret = api_secret
13
- @api_url = API_URL
14
- end
15
-
16
- def decode_params(params)
17
- params.keys.sort.map{ |k|
18
- value = (k.to_s == 'content') ? url_escaping(params[k].to_json) : params[k]
19
- "#{k}=#{value}"
20
- }.join('&')
21
- end
22
-
23
- def signature(method, path, params)
24
- string_to_sign = [method.upcase, url_escaping("#{api_url}/#{path}"), url_escaping(decode_params(params))].compact.join('&')
25
- raw_hmac = OpenSSL::HMAC.digest('sha1', api_secret, string_to_sign)
26
- Base64.encode64(raw_hmac)[0..-2]
27
- end
28
-
29
- def url_escaping(string)
30
- CGI.escape(string).gsub('+', '%20')
31
- end
32
-
33
- # themes
34
- def get_themes(opts={})
35
- opts[:api_key] = @api_key
36
- opts[:api_sig] = signature('GET', 'themes', opts)
37
- HTTParty.get("#{@api_url}/themes", query: opts)
38
- end
39
-
40
- # infographics
41
- def get_infographics(opts={})
42
- opts[:api_key] = @api_key
43
- opts[:api_sig] = signature('GET', "infographics", opts)
44
- HTTParty.get("#{@api_url}/infographics", query: opts)
45
- end
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
-
53
- def create_infographic(opts={})
54
- opts[:api_key] = @api_key
55
- opts[:api_sig] = signature('POST', 'infographics', opts)
56
- opts[:content] = opts[:content].to_json
57
- HTTParty.post("#{@api_url}/infographics", body: opts)
58
- end
59
- end
@@ -1,63 +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 (: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