magloft 1.0.2

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e29215cf437166111ab5967862b5db668f14130f
4
+ data.tar.gz: fb87181d7ac5c76f37a8075135849b74585b1a05
5
+ SHA512:
6
+ metadata.gz: ab0f2e603f274a01311849ff07172e3996dbb2a898431efcfd2459bc2e6658eaba65330829720edac0fa9eb1001e5121df266487f261e936c773cfd9ae6d4a5a
7
+ data.tar.gz: 024ad4a92d02b2b3129e3e04747ebada021260789a1cc126050b2e6bbc3f32cd889960c4995558d785a063cb38a66371cd2c30146989d619977f753d7ee3567c
@@ -0,0 +1,25 @@
1
+ # magloft
2
+
3
+ > magloft allows you to connect your system to the MagLoft API
4
+
5
+ ## Description
6
+
7
+ @TODO
8
+
9
+ ## Installation
10
+
11
+ Install globally using `gem install magloft` or include it in your project Gemfile:
12
+
13
+ ```ruby
14
+ source 'http://rubygems.org'
15
+
16
+ gem 'magloft'
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ @TODO
22
+
23
+ ## License
24
+
25
+ magloft is available under an MIT-style license.
@@ -0,0 +1,60 @@
1
+ require "her"
2
+
3
+ class AccessTokenAuthentication < Faraday::Middleware
4
+ def call(env)
5
+ env[:request_headers]["X-Magloft-Accesstoken"] = Magloft.access_token
6
+ @app.call(env)
7
+ end
8
+ end
9
+
10
+ module Magloft
11
+ API = Her::API.new
12
+ API.setup url: ENV['MAGLOFT_API_URL'] || "https://www.magloft.com" do |c|
13
+ c.use AccessTokenAuthentication
14
+ c.use Faraday::Request::UrlEncoded
15
+ c.use Her::Middleware::DefaultParseJSON
16
+ c.use Faraday::Adapter::NetHttp
17
+ end
18
+
19
+ @@app_id = nil
20
+ def self.app_id
21
+ @@app_id
22
+ end
23
+
24
+ @@access_token = nil
25
+ def self.access_token
26
+ @@access_token
27
+ end
28
+
29
+ def self.auth(access_token, app_id)
30
+ @@access_token = access_token
31
+ @@app_id = app_id
32
+ end
33
+
34
+ def self.users
35
+ Model::User
36
+ end
37
+
38
+ def self.publications
39
+ Model::Publication
40
+ end
41
+
42
+ def self.issues
43
+ Model::Issue
44
+ end
45
+
46
+ def self.typeloft_themes
47
+ Model::TypeloftTheme
48
+ end
49
+
50
+ def self.typeloft_pages
51
+ Model::TypeloftPage
52
+ end
53
+ end
54
+
55
+ require "magloft/model/base"
56
+ require "magloft/model/publication"
57
+ require "magloft/model/user"
58
+ require "magloft/model/issue"
59
+ require "magloft/model/typeloft_theme"
60
+ require "magloft/model/typeloft_page"
@@ -0,0 +1,38 @@
1
+ module Magloft
2
+ module Model
3
+ class Base
4
+ include Her::Model
5
+ use_api Magloft::API
6
+
7
+ def self.build_request_path(path = nil, parameters = {})
8
+ parameters = parameters.try(:with_indifferent_access)
9
+
10
+ unless path.kind_of?(String)
11
+ parameters = path.try(:with_indifferent_access) || parameters
12
+ path =
13
+ if parameters.include?(primary_key) && parameters[primary_key] && !parameters[primary_key].kind_of?(Array)
14
+ resource_path.dup
15
+ else
16
+ collection_path.dup
17
+ end
18
+
19
+ # Replace :id with our actual primary key
20
+ path.gsub!(%r{(\A|/):id(\Z|/)}, "\\1:#{primary_key}\\2")
21
+ end
22
+
23
+ path.gsub(/:([\w_]+)/) do
24
+ # Look for :key or :_key, otherwise raise an exception
25
+ key = $1.to_sym
26
+ value = parameters.delete(key) || parameters.delete(:"_#{key}")
27
+ if value
28
+ Faraday::Utils.escape value
29
+ elsif $1 == "app_id"
30
+ Magloft.app_id
31
+ else
32
+ raise(Her::Errors::PathError.new("Missing :_#{$1} parameter to build the request path. Path is `#{path}`. Parameters are `#{parameters.symbolize_keys.inspect}`.", $1))
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,25 @@
1
+ module Magloft
2
+ module Model
3
+ class Issue < Base
4
+ collection_path "api/portal/v1/issues/:app_id"
5
+ def process_links
6
+ url = self.class.build_request_path("#{self.class.collection_path}/:id/process_links", id: id)
7
+ self.class.put_raw(url)
8
+ true
9
+ end
10
+
11
+ def typeloft_pages
12
+ TypeloftPage.where(issue_id: id)
13
+ end
14
+
15
+ def build_page(design_identifier, options = {})
16
+ TypeloftPage.build({
17
+ position: 0,
18
+ design_identifier: design_identifier,
19
+ template_identifier: "blank",
20
+ issue_id: id
21
+ }.merge(options))
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,7 @@
1
+ module Magloft
2
+ module Model
3
+ class Publication < Base
4
+ collection_path "api/portal/v1/magazines"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Magloft
2
+ module Model
3
+ class TypeloftPage < Base
4
+ collection_path "api/typeloft/v1/pages"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Magloft
2
+ module Model
3
+ class TypeloftTheme < Base
4
+ collection_path "api/portal/v1/designs"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Magloft
2
+ module Model
3
+ class User < Base
4
+ collection_path "api/portal/v1/users"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module Magloft
2
+ VERSION = "1.0.2"
3
+ end
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: magloft
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Tobias Strebitzer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-02-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '4.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: bundler
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.3.0
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '2.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.3.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '2.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: her
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '0.10'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '0.10'
67
+ - !ruby/object:Gem::Dependency
68
+ name: pry
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '0.11'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '0.11'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rubocop
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: 0.52.1
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: 0.52.1
95
+ description: magloft allows you to connect your system to the MagLoft API
96
+ email:
97
+ - tobias.strebitzer@magloft.com
98
+ executables: []
99
+ extensions: []
100
+ extra_rdoc_files: []
101
+ files:
102
+ - README.md
103
+ - lib/magloft.rb
104
+ - lib/magloft/model/base.rb
105
+ - lib/magloft/model/issue.rb
106
+ - lib/magloft/model/publication.rb
107
+ - lib/magloft/model/typeloft_page.rb
108
+ - lib/magloft/model/typeloft_theme.rb
109
+ - lib/magloft/model/user.rb
110
+ - lib/magloft/version.rb
111
+ homepage: https://github.com/magloft/magloft-ruby
112
+ licenses:
113
+ - BSD-3-Clause
114
+ metadata: {}
115
+ post_install_message:
116
+ rdoc_options: []
117
+ require_paths:
118
+ - lib
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2.3'
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '2.4'
129
+ requirements: []
130
+ rubyforge_project:
131
+ rubygems_version: 2.6.10
132
+ signing_key:
133
+ specification_version: 4
134
+ summary: MagLoft API Client
135
+ test_files: []