shopapp 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8494b4dc6eddb32452ea7ee2068b9e0744e3a444
4
+ data.tar.gz: cc1e011c3ac085435b099420e81c4d4baf3e382e
5
+ SHA512:
6
+ metadata.gz: 1c7b1e7bed35f570e4687ffe15107b9b523d5177402736b97915d3702224be1f5df4795a00ada59a7f6d8ff0dfd8e51b276202edfc97863c1d523a3478ff3a45
7
+ data.tar.gz: ab8220fce2b3c0692fa4d336895b93990bedbbaf5881f738ad2173fb99ab8269facd2d4d3f568d6d111ef67e882b834a9ed0f69c0de00f9bde44e5ddef5d8ca9
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
@@ -0,0 +1,160 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ shopapp (0.0.1)
5
+ bootstrap (~> 4.0.0.beta)
6
+ bootstrap-will_paginate
7
+ font-awesome-rails
8
+ haml-rails
9
+ jquery-rails
10
+ oauth2
11
+ pry-rails
12
+ railties (~> 5.1, >= 3.1)
13
+ rest-client
14
+
15
+ GEM
16
+ remote: https://rubygems.org/
17
+ specs:
18
+ actionpack (5.1.4)
19
+ actionview (= 5.1.4)
20
+ activesupport (= 5.1.4)
21
+ rack (~> 2.0)
22
+ rack-test (>= 0.6.3)
23
+ rails-dom-testing (~> 2.0)
24
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
25
+ actionview (5.1.4)
26
+ activesupport (= 5.1.4)
27
+ builder (~> 3.1)
28
+ erubi (~> 1.4)
29
+ rails-dom-testing (~> 2.0)
30
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
31
+ activesupport (5.1.4)
32
+ concurrent-ruby (~> 1.0, >= 1.0.2)
33
+ i18n (~> 0.7)
34
+ minitest (~> 5.1)
35
+ tzinfo (~> 1.1)
36
+ autoprefixer-rails (7.1.5)
37
+ execjs
38
+ bootstrap (4.0.0.beta)
39
+ autoprefixer-rails (>= 6.0.3)
40
+ popper_js (~> 1.11.1)
41
+ sass (>= 3.4.19)
42
+ bootstrap-will_paginate (1.0.0)
43
+ will_paginate
44
+ builder (3.2.3)
45
+ coderay (1.1.2)
46
+ concurrent-ruby (1.0.5)
47
+ crass (1.0.2)
48
+ domain_name (0.5.20170404)
49
+ unf (>= 0.0.5, < 1.0.0)
50
+ erubi (1.7.0)
51
+ erubis (2.7.0)
52
+ execjs (2.7.0)
53
+ faraday (0.12.2)
54
+ multipart-post (>= 1.2, < 3)
55
+ ffi (1.9.18)
56
+ ffi (1.9.18-x64-mingw32)
57
+ font-awesome-rails (4.7.0.2)
58
+ railties (>= 3.2, < 5.2)
59
+ haml (5.0.4)
60
+ temple (>= 0.8.0)
61
+ tilt
62
+ haml-rails (1.0.0)
63
+ actionpack (>= 4.0.1)
64
+ activesupport (>= 4.0.1)
65
+ haml (>= 4.0.6, < 6.0)
66
+ html2haml (>= 1.0.1)
67
+ railties (>= 4.0.1)
68
+ html2haml (2.2.0)
69
+ erubis (~> 2.7.0)
70
+ haml (>= 4.0, < 6)
71
+ nokogiri (>= 1.6.0)
72
+ ruby_parser (~> 3.5)
73
+ http-cookie (1.0.3)
74
+ domain_name (~> 0.5)
75
+ i18n (0.9.0)
76
+ concurrent-ruby (~> 1.0)
77
+ jquery-rails (4.3.1)
78
+ rails-dom-testing (>= 1, < 3)
79
+ railties (>= 4.2.0)
80
+ thor (>= 0.14, < 2.0)
81
+ jwt (1.5.6)
82
+ loofah (2.1.1)
83
+ crass (~> 1.0.2)
84
+ nokogiri (>= 1.5.9)
85
+ method_source (0.9.0)
86
+ mime-types (3.1)
87
+ mime-types-data (~> 3.2015)
88
+ mime-types-data (3.2016.0521)
89
+ mini_portile2 (2.3.0)
90
+ minitest (5.10.3)
91
+ multi_json (1.12.2)
92
+ multi_xml (0.6.0)
93
+ multipart-post (2.0.0)
94
+ netrc (0.11.0)
95
+ nokogiri (1.8.1)
96
+ mini_portile2 (~> 2.3.0)
97
+ nokogiri (1.8.1-x64-mingw32)
98
+ mini_portile2 (~> 2.3.0)
99
+ oauth2 (1.4.0)
100
+ faraday (>= 0.8, < 0.13)
101
+ jwt (~> 1.0)
102
+ multi_json (~> 1.3)
103
+ multi_xml (~> 0.5)
104
+ rack (>= 1.2, < 3)
105
+ popper_js (1.11.1)
106
+ pry (0.11.1)
107
+ coderay (~> 1.1.0)
108
+ method_source (~> 0.9.0)
109
+ pry-rails (0.3.6)
110
+ pry (>= 0.10.4)
111
+ rack (2.0.3)
112
+ rack-test (0.7.0)
113
+ rack (>= 1.0, < 3)
114
+ rails-dom-testing (2.0.3)
115
+ activesupport (>= 4.2.0)
116
+ nokogiri (>= 1.6)
117
+ rails-html-sanitizer (1.0.3)
118
+ loofah (~> 2.0)
119
+ railties (5.1.4)
120
+ actionpack (= 5.1.4)
121
+ activesupport (= 5.1.4)
122
+ method_source
123
+ rake (>= 0.8.7)
124
+ thor (>= 0.18.1, < 2.0)
125
+ rake (12.1.0)
126
+ rb-fsevent (0.10.2)
127
+ rb-inotify (0.9.10)
128
+ ffi (>= 0.5.0, < 2)
129
+ rest-client (2.0.2)
130
+ http-cookie (>= 1.0.2, < 2.0)
131
+ mime-types (>= 1.16, < 4.0)
132
+ netrc (~> 0.8)
133
+ ruby_parser (3.10.1)
134
+ sexp_processor (~> 4.9)
135
+ sass (3.5.2)
136
+ sass-listen (~> 4.0.0)
137
+ sass-listen (4.0.0)
138
+ rb-fsevent (~> 0.9, >= 0.9.4)
139
+ rb-inotify (~> 0.9, >= 0.9.7)
140
+ sexp_processor (4.10.0)
141
+ temple (0.8.0)
142
+ thor (0.20.0)
143
+ thread_safe (0.3.6)
144
+ tilt (2.0.8)
145
+ tzinfo (1.2.3)
146
+ thread_safe (~> 0.1)
147
+ unf (0.1.4)
148
+ unf_ext
149
+ unf_ext (0.0.7.4)
150
+ will_paginate (3.1.6)
151
+
152
+ PLATFORMS
153
+ ruby
154
+ x64-mingw32
155
+
156
+ DEPENDENCIES
157
+ shopapp!
158
+
159
+ BUNDLED WITH
160
+ 1.15.4
@@ -0,0 +1,3 @@
1
+ Shopapp gem
2
+
3
+ More instructions will be added here later.
@@ -0,0 +1,4 @@
1
+ //= require jquery3
2
+ //= require rails-ujs
3
+ //= require popper
4
+ //= require bootstrap-sprockets
@@ -0,0 +1,44 @@
1
+ $enable-rounded: false;
2
+ @import "bootstrap";
3
+ @import "font-awesome";
4
+ .table-hover {
5
+ tr{cursor: pointer;}
6
+ background-color: rgba(243,243,243,.85);
7
+ margin-bottom: 0;
8
+ padding-bottom: 0;
9
+ border-bottom: 0;
10
+ }
11
+ .table-condensed th,
12
+ .table-condensed td{
13
+ padding: 0.45rem;
14
+ font-size: 14px;
15
+ }
16
+ .badge{
17
+ line-height: 15px;
18
+ }
19
+ th{
20
+ background-color: #fff;
21
+ }
22
+ .header{
23
+ border-bottom: 1px solid #dadada;
24
+ border-top:1px solid #dadada;
25
+ box-sizing: border-box;
26
+ background-color: #ececec;
27
+ padding: 10px 0;
28
+ #more_apps,
29
+ #profile{
30
+ background-color: transparent;
31
+ border:none;
32
+ cursor: pointer;
33
+ }
34
+ }
35
+ .products{
36
+ padding: 0;
37
+ overflow: scroll;
38
+ height: calc(100vh - 79px);
39
+ margin-bottom: 0;
40
+ padding-bottom: 0;
41
+ }
42
+ .additional_nav{
43
+ line-height: 33px;
44
+ }
@@ -0,0 +1,5 @@
1
+ class ApiController < ApplicationController
2
+ include ShopliftClient
3
+ protect_from_forgery with: :null_session
4
+ before_action :authenticate_company!
5
+ end
@@ -0,0 +1,23 @@
1
+ class AuthController < ActionController::Base
2
+ include ShopliftClient
3
+ protect_from_forgery with: :exception
4
+
5
+ def auth
6
+ response = client.auth_code.get_token params[:code],
7
+ redirect_uri: Rails.configuration.settings['authlift_redirect_uri'],
8
+ scope: scope
9
+ self.session_cookie = response.token
10
+ previous_url = session[:previous_url]
11
+ session.delete :previous_url
12
+ redirect_to(previous_url || '/')
13
+ end
14
+
15
+ def destroy
16
+ authenticate_user!
17
+ return if current_user.blank?
18
+ signouttoken = session_cookie
19
+ session_cookie = nil
20
+
21
+ redirect_to "#{Rails.configuration.settings['authlift_url']}users/sign_outx?signouttoken=#{signouttoken}"
22
+ end
23
+ end
@@ -0,0 +1,139 @@
1
+ require 'active_support/concern'
2
+ require 'oauth2'
3
+
4
+ module ShopliftClient
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ attr_reader :authentication
9
+ attr_reader :api_key
10
+ attr_reader :current_user
11
+ attr_reader :current_company
12
+ end
13
+
14
+ class_methods do
15
+ end
16
+
17
+ def session_cookie
18
+ session["authlift_session_id"]
19
+ end
20
+
21
+ def session_cookie=(new_value)
22
+ session["authlift_session_id"] = new_value
23
+ end
24
+
25
+ def redirect_unauthorized
26
+ session.clear
27
+ session[:previous_url] = request.fullpath
28
+ redirect_to client.auth_code.authorize_url(
29
+ redirect_uri: Rails.configuration.settings['authlift_redirect_uri'],
30
+ scope: scope)
31
+ end
32
+
33
+ def scope
34
+ [Rails.configuration.settings['authlift_default_scope'], 'public'].compact.join ' '
35
+ end
36
+
37
+ def find_company_by_code(code)
38
+ begin
39
+ @current_company ||= Company.find_or_create_by! code: code
40
+ rescue ActiveRecord::StatementInvalid
41
+ if $!.cause.is_a? PG::UndefinedTable
42
+ fail <<-ERROR.strip_heredoc
43
+ You have not defined a company, and that is compulsory even if
44
+ you are not planning to add any additional fields. You do not need to
45
+ seed it, so following is enough forever:
46
+
47
+ rails g model company code:string; rake db:migrate
48
+ ERROR
49
+ end
50
+ end
51
+ end
52
+
53
+ def authenticate_user!
54
+ if session_cookie.present?
55
+ @token = OAuth2::AccessToken.new client, session_cookie, scope: scope
56
+ begin
57
+ x = srv.get '/api/users/profile'
58
+ @current_user = JSON.parse x.response.body
59
+ find_company_by_code current_user['company']['code']
60
+ rescue OAuth2::Error
61
+ redirect_unauthorized
62
+ end
63
+ else
64
+ redirect_unauthorized
65
+ end
66
+ end
67
+
68
+ def authenticate_company!
69
+ @api_key = if params['key'].present?
70
+ params['key'].match(/[0-9a-f]+/).to_s
71
+ elsif request.headers['AUTHORIZATION'].present?
72
+ request.headers['AUTHORIZATION'].gsub(/^Bearer ?/, '')
73
+ else
74
+ Rails.configuration.settings['authlift_default_app_key']
75
+ end
76
+
77
+ fail ActionController::RoutingError, 'Authentication token missing' if @api_key.blank?
78
+
79
+ response = srv.post 'auth/api_key',
80
+ body: {
81
+ api_key: api_key,
82
+ requested_action: "#{self.controller_name}##{self.action_name}"
83
+ }
84
+
85
+ fail ActionController::RoutingError, 'Request not authorized' if response.blank?
86
+
87
+ @authentication = JSON.parse response.body
88
+ find_company_by_code authentication['company']
89
+ end
90
+
91
+ def current_user
92
+ return @current_user if @current_user.present?
93
+
94
+ @current_user
95
+ end
96
+
97
+ def current_company
98
+ end
99
+
100
+ def user_signed_in?
101
+ !current_user.nil?
102
+ end
103
+
104
+ # To create/update a model, params must be of form { model_name: { attr1: value1, attr2: value2 } }
105
+ # and attr1, attr2 must be in the list of allowed params the Rails way.
106
+ def post(url, params)
107
+ puts 'co_cli: post'
108
+ puts "url: #{url}"
109
+ puts "params: #{params}"
110
+ response = srv.request(:post, url, body: params)
111
+ JSON.parse(response.body)
112
+ rescue OAuth2::Error
113
+ raise "Server fault, could not perform post to #{srv.client.site}#{url}"
114
+ rescue
115
+ raise "Unknown error, could not perform post to #{srv.client.site}#{url}"
116
+ end
117
+
118
+ def get(url, params = {})
119
+ puts 'co_cli: get'
120
+ puts "url: #{url}"
121
+ puts "params: #{params}"
122
+ response = srv.request(:get, url, body: params)
123
+ JSON.parse(response.body)
124
+ rescue OAuth2::Error
125
+ raise "Server fault, could not perform post to #{srv.client.site}#{url}"
126
+ rescue
127
+ raise "Unknown error, could not perform post to #{srv.client.site}#{url}"
128
+ end
129
+
130
+ def srv
131
+ @token ||= client.client_credentials.get_token scope: scope
132
+ end
133
+
134
+ def client
135
+ @oauth ||= OAuth2::Client.new Rails.configuration.settings['authlift_app_id'],
136
+ Rails.configuration.settings['authlift_app_secret'],
137
+ site: Rails.configuration.settings['authlift_url']
138
+ end
139
+ end
@@ -0,0 +1,5 @@
1
+ class UserAuthenticatedController < ApplicationController
2
+ include ShopliftClient
3
+ protect_from_forgery with: :exception
4
+ before_action :authenticate_user!
5
+ end
@@ -0,0 +1,32 @@
1
+ .container-fluid
2
+ .row.header.navbar.justify-content-between
3
+ .col-4.col-md-2
4
+ = link_to('PROLIFT', '/')
5
+ .col-4.col-md-2.order-md-2
6
+ .row.justify-content-end
7
+ .col-4
8
+ = render 'layouts/header_menu'
9
+ .col-4
10
+ .dropdown
11
+ %button#more_apps(aria-expanded="false" aria-haspopup="true" data-toggle="dropdown" type="button")
12
+ %i.fa.fa-th(aria-hidden="true")
13
+ .dropdown-menu.dropdown-menu-right(aria-labelledby="dropdownMenuButton" style="right: 0; left: auto;")
14
+ %a.dropdown-item(href="#") Order Manager
15
+ %a.dropdown-item(href="#") Shipment Manager
16
+ %a.dropdown-item(href="#") Store Configuration
17
+ .col-4
18
+ .dropdown
19
+ %button#profile(aria-expanded="false" aria-haspopup="true" data-toggle="dropdown" type="button")
20
+ %i.fa.fa-user(aria-hidden="true")
21
+ .dropdown-menu.dropdown-menu-right(aria-labelledby="dropdownMenuButton" style="right: 0; left: auto;")
22
+ .dropdown-header=@current_user['email']
23
+ %a.dropdown-item(href="#") Edit Profile
24
+ = link_to(logout_path, method: :delete, :class => 'dropdown-item') do
25
+ Logout
26
+ .col-md-6.order-1
27
+ %form(action="/")
28
+ .input-group
29
+ %input#search.form-control(name="search" placeholder="Search for product" type="text" value=@search)
30
+ %button.btn.btn-primary.input-group-addon(type="submit" style="width: 80px; padding-left: 30px;")
31
+ %i.fa.fa-search(aria-hidden="true")
32
+ = yield
@@ -0,0 +1,25 @@
1
+ default_settings_file = Rails.root.join 'config', 'settings.yml'
2
+ local_settings_file = Rails.root.join 'config', 'local.yml'
3
+
4
+ if File.exist? default_settings_file
5
+ Rails.application.config.settings = YAML.load(ERB.new(File.read(default_settings_file)).result)
6
+
7
+ Rails.application.config.settings.merge! YAML.load(ERB.new(File.read(local_settings_file)).result) if
8
+ File.exist? local_settings_file
9
+
10
+ Rails.application.config.settings.keys.each do |key|
11
+ if ENV[key.upcase].present?
12
+ Rails.application.config.settings[key] = ENV[key.upcase]
13
+ else
14
+ ENV[key.upcase] = Rails.application.config.settings[key].to_s
15
+ end
16
+ end
17
+ end
18
+
19
+ Rails.configuration.generators do |g|
20
+ g.template_engine :haml
21
+
22
+ # you can also specify a different test framework or ORM here
23
+ # g.test_framework :rspec
24
+ # g.orm :mongoid
25
+ end
@@ -0,0 +1,9 @@
1
+ require 'pry-rails'
2
+ require 'haml-rails'
3
+ require 'jquery-rails'
4
+ require 'bootstrap'
5
+ require 'font-awesome-rails'
6
+ require 'bootstrap-will_paginate'
7
+
8
+ require 'shopapp/engine'
9
+ require 'shopapp/routes'
@@ -0,0 +1,3 @@
1
+ module Shylock
2
+ class Engine < ::Rails::Engine; end
3
+ end
@@ -0,0 +1,6 @@
1
+ class ActionDispatch::Routing::Mapper
2
+ def shoplift_single_sign_on
3
+ get 'auth', to: 'auth#auth'
4
+ delete 'auth', to: 'auth#destroy', as: 'logout'
5
+ end
6
+ end
@@ -0,0 +1,30 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'shopapp'
3
+ s.version = '0.0.1'
4
+ s.date = '2017-10-13' # Friday the 13th
5
+ s.summary = 'Do a shoplift.'
6
+ s.description = 'Ha! Art thou Bedlam? Dost thou thirst base Trojan, to have me fold up Parca\'s fatal web? Hence!\
7
+ I am qualmish at the smell of leek.'
8
+ s.author = 'Zeljko'
9
+ s.email = 'zeljko@z-ware.fi'
10
+
11
+ # Next one line HAS TO be uncommented before this gem is ever built, built
12
+ # gem will work without it as long as it is included in the source
13
+ # try of the using project.
14
+ s.files = `git ls-files`.split("\n") - %w(.rvmrc .gitignore)
15
+
16
+ # s.executables = ['...']
17
+ # s.homepage = 'http://rubygems.org/gems/shopapp'
18
+ # s.license = 'MIT'
19
+
20
+ # Dependences
21
+ s.add_dependency 'railties', '~> 5.1', '>= 3.1'
22
+ s.add_dependency 'haml-rails'
23
+ s.add_dependency 'jquery-rails'
24
+ s.add_dependency 'bootstrap', '~> 4.0.0.beta'
25
+ s.add_dependency 'font-awesome-rails'
26
+ s.add_dependency 'bootstrap-will_paginate'
27
+ s.add_dependency 'pry-rails'
28
+ s.add_dependency 'oauth2'
29
+ s.add_dependency 'rest-client'
30
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shopapp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Zeljko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-10-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '3.1'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '5.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '3.1'
33
+ - !ruby/object:Gem::Dependency
34
+ name: haml-rails
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: jquery-rails
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: bootstrap
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 4.0.0.beta
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 4.0.0.beta
75
+ - !ruby/object:Gem::Dependency
76
+ name: font-awesome-rails
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: bootstrap-will_paginate
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: pry-rails
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: oauth2
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rest-client
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ description: |-
146
+ Ha! Art thou Bedlam? Dost thou thirst base Trojan, to have me fold up Parca's fatal web? Hence!\
147
+ I am qualmish at the smell of leek.
148
+ email: zeljko@z-ware.fi
149
+ executables: []
150
+ extensions: []
151
+ extra_rdoc_files: []
152
+ files:
153
+ - Gemfile
154
+ - Gemfile.lock
155
+ - README.md
156
+ - app/assets/javascripts/shopapp.js
157
+ - app/assets/stylesheets/shopapp.scss
158
+ - app/controllers/api_controller.rb
159
+ - app/controllers/auth_controller.rb
160
+ - app/controllers/concerns/shoplift_client.rb
161
+ - app/controllers/user_authenticated_controller.rb
162
+ - app/views/layouts/_header_menu.html.haml
163
+ - app/views/shopapp/_shopapp.html.haml
164
+ - config/initializers/active_settings.rb
165
+ - lib/shopapp.rb
166
+ - lib/shopapp/engine.rb
167
+ - lib/shopapp/routes.rb
168
+ - shopapp.gemspec
169
+ homepage:
170
+ licenses: []
171
+ metadata: {}
172
+ post_install_message:
173
+ rdoc_options: []
174
+ require_paths:
175
+ - lib
176
+ required_ruby_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubyforge_project:
188
+ rubygems_version: 2.6.12
189
+ signing_key:
190
+ specification_version: 4
191
+ summary: Do a shoplift.
192
+ test_files: []