mores_marvel 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6b1215cbbacd7538805935b32f1798e0b13c2316
4
+ data.tar.gz: 2381438dc747df997a19fe469ea84d392208184e
5
+ SHA512:
6
+ metadata.gz: 2753ec524b3fa9cd2704903bd62c31cf811e380f28839e98fab3d2752f0a7b0301390b0c65ffae046f135ab5e84ce5b8bb5981cf0e9dc652459a3aa4bb6e780e
7
+ data.tar.gz: 1a6aecc6d777050820a21191dd40f5803be08c0ed176df302e5bd04c2a7dddce4b6c1bfcf68c7e7a598273f01d614b3b2e7b24796c399cd7c176e4fffd488984
@@ -0,0 +1,35 @@
1
+ require 'rest_client'
2
+ require 'digest/md5'
3
+ require 'json'
4
+ require_relative 'resource'
5
+
6
+ module MoresMarvel
7
+ class Client
8
+ include MoresMarvel::Resource
9
+
10
+ class ServiceClientError < StandardError; end
11
+ def initialize config
12
+ @public_key = config[:public_key]
13
+ @private_key = config[:private_key]
14
+ @base_uri = config[:base_uri]
15
+ end
16
+
17
+ def get_resource(resource, filters = {})
18
+ api_end_point = "#{@base_uri}#{resource}"
19
+ url_params = filters.empty? ? security_hash : security_hash.merge(filters)
20
+ restructure_response RestClient.get(api_end_point, { params: url_params })
21
+ end
22
+
23
+ private
24
+ def security_hash
25
+ timestamp = Time.now.to_i.to_s
26
+ oauth_hash = Digest::MD5.hexdigest(timestamp+@private_key+@public_key)
27
+ { ts: timestamp, apikey: @public_key, hash: oauth_hash }
28
+ end
29
+
30
+ def restructure_response raw_data
31
+ response = JSON.parse(raw_data)
32
+ { code: response['code'], status: response['status'], data: response['data'] }
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'client'
2
+
3
+ module MoresMarvel
4
+ MODELS = %w(characters creators comics events series stories).freeze
5
+ module Resource
6
+ # will be removed soon.
7
+ def get_characters
8
+ get_resource('/v1/public/characters')
9
+ end
10
+ # will be removed soon.
11
+ def get_character id
12
+ get_resource("/v1/public/characters/#{id}")
13
+ end
14
+
15
+ def fetch_all(model, filters = {})
16
+ get_resource("/v1/public/#{model}", filters) if MODELS.include?(model)
17
+ end
18
+
19
+ def fetch_by_id(model, id, filters = {})
20
+ get_resource("/v1/public/#{model}/#{id}", filters) if MODELS.include?(model)
21
+ end
22
+
23
+ def fetch_filtered_by(model_1, id, model_2, filters = {})
24
+ if MODELS.include?(model_1) && MODELS.include?(model_2) && !(model_1.eql?model_2)
25
+ get_resource("/v1/public/#{model_1}/#{id}/#{model_2}", filters)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ module MoresMarvel
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,10 @@
1
+ require "mores_marvel/version"
2
+ require_relative 'mores_marvel/client'
3
+
4
+ module MoresMarvel
5
+ class << self
6
+ def new config
7
+ @client ||= MoresMarvel::Client.new config
8
+ end
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mores_marvel
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Manoj more
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-05-20 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.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
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
+ description: Use this to play arround with Marvel resources
56
+ email:
57
+ - lettertomanojmore@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/mores_marvel.rb
63
+ - lib/mores_marvel/client.rb
64
+ - lib/mores_marvel/resource.rb
65
+ - lib/mores_marvel/version.rb
66
+ homepage: https://github.com/ManojmoreS/mores_marvel
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.4.5.1
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Ruby gem for Marvel API
90
+ test_files: []