├── README.asciidoc ├── apidocs ├── allclasses-frame.html ├── allclasses-noframe.html ├── constant-values.html ├── deprecated-list.html ├── help-doc.html ├── index-all.html ├── index.html ├── org │ └── sonatype │ │ └── nexus │ │ ├── BlobStoreApi.html │ │ ├── CoreApi.html │ │ ├── class-use │ │ ├── BlobStoreApi.html │ │ └── CoreApi.html │ │ ├── common │ │ └── script │ │ │ ├── ScriptApi.html │ │ │ ├── class-use │ │ │ └── ScriptApi.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ ├── package-use.html │ │ ├── script │ │ └── plugin │ │ │ ├── RepositoryApi.html │ │ │ ├── class-use │ │ │ └── RepositoryApi.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ └── security │ │ ├── SecurityApi.html │ │ ├── class-use │ │ └── SecurityApi.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html ├── overview-frame.html ├── overview-summary.html ├── overview-tree.html ├── package-list ├── script.js └── stylesheet.css ├── complex-script ├── addRole.groovy ├── addUpdateScript.groovy ├── core.groovy ├── dockerRepositories.groovy ├── grapeConfig.xml ├── npmAndBowerRepositories.groovy ├── provision.sh ├── rawRepositories.groovy └── security.groovy ├── nexus-script-example ├── build.gradle ├── pom.xml ├── settings.gradle └── src │ └── main │ └── groovy │ ├── countComponents.groovy │ ├── listRepos.groovy │ ├── listRolesToUsers.groovy │ ├── listUsers.groovy │ ├── listUsersTask.groovy │ ├── maven.groovy │ ├── provision.groovy │ ├── repoAssetLister.groovy │ └── repoAssetListerTask.groovy └── simple-shell-example ├── anonymous.json ├── bower.json ├── create.sh ├── delete.sh ├── echo.json ├── list.sh ├── maven.json ├── npm.json ├── run.sh ├── setAnonymous.sh └── update.sh /README.asciidoc: -------------------------------------------------------------------------------- 1 | == Integration API Scripting Examples 2 | 3 | Example projects for the Integration API as documented in https://help.sonatype.com/display/NXRM3/REST+and+Integration+API 4 | 5 | See what other interesting scripts have been created at https://community.sonatype.com 6 | 7 | Getting Started 8 | ~~~~~~~~~~~~~~~ 9 | Look at the examples in these projects to get more familiar with how to load, run, and write your own scripts to run inside of Nexus Repository Manager. 10 | 11 | Step 1 - simple-shell-example:: simple JSON script files and shell scripts for interaction with the REST API 12 | Step 2 - nexus-script-example:: Maven project for script development with IntelliJ IDEA-supported code completion 13 | Step 3 - complex-script:: complex provisioning setup based on a shell script invoking numerous groovy scripts for upload and execution 14 | 15 | Passing Parameters 16 | ~~~~~~~~~~~~~~~~~~ 17 | When running the script, the body of the POST request will be passed to your groovy in the _args_ field. You can treat this as a normal string, use Groovy's JsonSlurper to parse it as JSON, or read in any other groovy way. 18 | 19 | The link:simple-shell-example/echo.json[echo.json] sample shows this in action. To test it out: 20 | 21 | . First, cut and paste the contents of _echo.json_ into the body field in the Nexus API UI for adding a new script and give your script a name, and click the "execute" button to submit the POST _/v1/script_ request to save the script in your instance of Nexus Repository Manager 22 | . Next, using the name from Step 1, execute the POST _/v1/script/{name}/run_ request with any text you choose in the body. 23 | . Notice that the response for Step 2 will return the text that you passed in! 24 | 25 | For a more interesting example, see link:complex-script/addRole.groovy[addRole.groovy] and the corresponding documentation at the bottom of https://help.sonatype.com/repomanager3/rest-and-integration-api/script-api/examples. This script allows you to create your own custom REST API that enables you automate the creation of new Roles inside of Nexus Repository Manager. 26 | 27 | 28 | API Reference 29 | ~~~~~~~~~~~~~ 30 | There are 4 officially supported API interfaces: 31 | 32 | . Core 33 | . BlobStore 34 | . Repository 35 | . Security 36 | 37 | To learn more about the methods in each interface, use code complete in your favorite IDE with the _nexus-script-example_ project, or take a look at the Javadoc link:apidocs/index.html[index.html] 38 | 39 | -------------------------------------------------------------------------------- /apidocs/allclasses-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | All Classes (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 |

All Classes

14 |
15 | 22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /apidocs/allclasses-noframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | All Classes (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 |

All Classes

14 |
15 | 22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /apidocs/constant-values.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Constant Field Values (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Constant Field Values

75 |

Contents

76 |
77 | 78 |
79 | 80 | 81 |
Skip navigation links
82 | 83 | 84 | 85 | 95 |
96 | 123 | 124 |

Copyright © 2018. All rights reserved.

125 | 126 | 127 | -------------------------------------------------------------------------------- /apidocs/deprecated-list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Deprecated List (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Deprecated API

75 |

Contents

76 |
77 | 78 |
79 | 80 | 81 |
Skip navigation links
82 | 83 | 84 | 85 | 95 |
96 | 123 | 124 |

Copyright © 2018. All rights reserved.

125 | 126 | 127 | -------------------------------------------------------------------------------- /apidocs/help-doc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | API Help (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

How This API Document Is Organized

75 |
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
76 |
77 |
78 | 181 | This help file applies to API documentation generated using the standard doclet.
182 | 183 |
184 | 185 | 186 |
Skip navigation links
187 | 188 | 189 | 190 | 200 |
201 | 228 | 229 |

Copyright © 2018. All rights reserved.

230 | 231 | 232 | -------------------------------------------------------------------------------- /apidocs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | nexus-integrations-apidocs 3.7.1-02 API 8 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | <noscript> 70 | <div>JavaScript is disabled on your browser.</div> 71 | </noscript> 72 | <h2>Frame Alert</h2> 73 | <p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/BlobStoreApi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | BlobStoreApi (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 29 | 32 | 33 |
34 | 35 | 36 |
Skip navigation links
37 | 38 | 39 | 40 | 50 |
51 | 93 | 94 | 95 |
96 |
org.sonatype.nexus
97 |

Interface BlobStoreApi

98 |
99 |
100 |
101 | 118 |
119 |
120 | 152 |
153 |
154 | 197 |
198 |
199 | 200 | 201 |
202 | 203 | 204 |
Skip navigation links
205 | 206 | 207 | 208 | 218 |
219 | 261 | 262 |

Copyright © 2018. All rights reserved.

263 | 264 | 265 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/class-use/BlobStoreApi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Interface org.sonatype.nexus.BlobStoreApi (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Uses of Interface
org.sonatype.nexus.BlobStoreApi

75 |
76 |
No usage of org.sonatype.nexus.BlobStoreApi
77 | 78 |
79 | 80 | 81 |
Skip navigation links
82 | 83 | 84 | 85 | 95 |
96 | 123 | 124 |

Copyright © 2018. All rights reserved.

125 | 126 | 127 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/class-use/CoreApi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Interface org.sonatype.nexus.CoreApi (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Uses of Interface
org.sonatype.nexus.CoreApi

75 |
76 |
No usage of org.sonatype.nexus.CoreApi
77 | 78 |
79 | 80 | 81 |
Skip navigation links
82 | 83 | 84 | 85 | 95 |
96 | 123 | 124 |

Copyright © 2018. All rights reserved.

125 | 126 | 127 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/common/script/ScriptApi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ScriptApi (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 29 | 32 | 33 |
34 | 35 | 36 |
Skip navigation links
37 | 38 | 39 | 40 | 50 |
51 | 93 | 94 | 95 |
96 |
org.sonatype.nexus.common.script
97 |

Interface ScriptApi

98 |
99 |
100 |
101 | 117 |
118 |
119 | 144 |
145 |
146 | 168 |
169 |
170 | 171 | 172 |
173 | 174 | 175 |
Skip navigation links
176 | 177 | 178 | 179 | 189 |
190 | 232 | 233 |

Copyright © 2018. All rights reserved.

234 | 235 | 236 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/common/script/class-use/ScriptApi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Interface org.sonatype.nexus.common.script.ScriptApi (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Uses of Interface
org.sonatype.nexus.common.script.ScriptApi

75 |
76 |
77 | 172 |
173 | 174 |
175 | 176 | 177 |
Skip navigation links
178 | 179 | 180 | 181 | 191 |
192 | 219 | 220 |

Copyright © 2018. All rights reserved.

221 | 222 | 223 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/common/script/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus.common.script (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 |

org.sonatype.nexus.common.script

14 |
15 |

Interfaces

16 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/common/script/package-summary.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus.common.script (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Package org.sonatype.nexus.common.script

75 |
76 |
77 | 96 |
97 | 98 |
99 | 100 | 101 |
Skip navigation links
102 | 103 | 104 | 105 | 115 |
116 | 143 | 144 |

Copyright © 2018. All rights reserved.

145 | 146 | 147 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/common/script/package-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus.common.script Class Hierarchy (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Hierarchy For Package org.sonatype.nexus.common.script

75 | Package Hierarchies: 76 | 79 |
80 |
81 |

Interface Hierarchy

82 | 85 |
86 | 87 |
88 | 89 | 90 |
Skip navigation links
91 | 92 | 93 | 94 | 104 |
105 | 132 | 133 |

Copyright © 2018. All rights reserved.

134 | 135 | 136 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/common/script/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Package org.sonatype.nexus.common.script (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Uses of Package
org.sonatype.nexus.common.script

75 |
76 |
77 | 153 |
154 | 155 |
156 | 157 | 158 |
Skip navigation links
159 | 160 | 161 | 162 | 172 |
173 | 200 | 201 |

Copyright © 2018. All rights reserved.

202 | 203 | 204 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 |

org.sonatype.nexus

14 |
15 |

Interfaces

16 | 20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/package-summary.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Package org.sonatype.nexus

75 |
76 |
77 | 102 |
103 | 104 |
105 | 106 | 107 |
Skip navigation links
108 | 109 | 110 | 111 | 121 |
122 | 149 | 150 |

Copyright © 2018. All rights reserved.

151 | 152 | 153 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/package-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus Class Hierarchy (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Hierarchy For Package org.sonatype.nexus

75 | Package Hierarchies: 76 | 79 |
80 |
81 |

Interface Hierarchy

82 | 90 |
91 | 92 |
93 | 94 | 95 |
Skip navigation links
96 | 97 | 98 | 99 | 109 |
110 | 137 | 138 |

Copyright © 2018. All rights reserved.

139 | 140 | 141 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Package org.sonatype.nexus (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Uses of Package
org.sonatype.nexus

75 |
76 |
No usage of org.sonatype.nexus
77 | 78 |
79 | 80 | 81 |
Skip navigation links
82 | 83 | 84 | 85 | 95 |
96 | 123 | 124 |

Copyright © 2018. All rights reserved.

125 | 126 | 127 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/script/plugin/class-use/RepositoryApi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Interface org.sonatype.nexus.script.plugin.RepositoryApi (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Uses of Interface
org.sonatype.nexus.script.plugin.RepositoryApi

75 |
76 |
No usage of org.sonatype.nexus.script.plugin.RepositoryApi
77 | 78 |
79 | 80 | 81 |
Skip navigation links
82 | 83 | 84 | 85 | 95 |
96 | 123 | 124 |

Copyright © 2018. All rights reserved.

125 | 126 | 127 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/script/plugin/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus.script.plugin (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 |

org.sonatype.nexus.script.plugin

14 |
15 |

Interfaces

16 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/script/plugin/package-summary.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus.script.plugin (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Package org.sonatype.nexus.script.plugin

75 |
76 |
77 | 96 |
97 | 98 |
99 | 100 | 101 |
Skip navigation links
102 | 103 | 104 | 105 | 115 |
116 | 143 | 144 |

Copyright © 2018. All rights reserved.

145 | 146 | 147 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/script/plugin/package-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus.script.plugin Class Hierarchy (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Hierarchy For Package org.sonatype.nexus.script.plugin

75 | Package Hierarchies: 76 | 79 |
80 |
81 |

Interface Hierarchy

82 | 89 |
90 | 91 |
92 | 93 | 94 |
Skip navigation links
95 | 96 | 97 | 98 | 108 |
109 | 136 | 137 |

Copyright © 2018. All rights reserved.

138 | 139 | 140 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/script/plugin/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Package org.sonatype.nexus.script.plugin (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Uses of Package
org.sonatype.nexus.script.plugin

75 |
76 |
No usage of org.sonatype.nexus.script.plugin
77 | 78 |
79 | 80 | 81 |
Skip navigation links
82 | 83 | 84 | 85 | 95 |
96 | 123 | 124 |

Copyright © 2018. All rights reserved.

125 | 126 | 127 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/security/class-use/SecurityApi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Interface org.sonatype.nexus.security.SecurityApi (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Uses of Interface
org.sonatype.nexus.security.SecurityApi

75 |
76 |
No usage of org.sonatype.nexus.security.SecurityApi
77 | 78 |
79 | 80 | 81 |
Skip navigation links
82 | 83 | 84 | 85 | 95 |
96 | 123 | 124 |

Copyright © 2018. All rights reserved.

125 | 126 | 127 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/security/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus.security (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 |

org.sonatype.nexus.security

14 |
15 |

Interfaces

16 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/security/package-summary.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus.security (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Package org.sonatype.nexus.security

75 |
76 |
77 | 96 |
97 | 98 |
99 | 100 | 101 |
Skip navigation links
102 | 103 | 104 | 105 | 115 |
116 | 143 | 144 |

Copyright © 2018. All rights reserved.

145 | 146 | 147 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/security/package-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | org.sonatype.nexus.security Class Hierarchy (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Hierarchy For Package org.sonatype.nexus.security

75 | Package Hierarchies: 76 | 79 |
80 |
81 |

Interface Hierarchy

82 | 89 |
90 | 91 |
92 | 93 | 94 |
Skip navigation links
95 | 96 | 97 | 98 | 108 |
109 | 136 | 137 |

Copyright © 2018. All rights reserved.

138 | 139 | 140 | -------------------------------------------------------------------------------- /apidocs/org/sonatype/nexus/security/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Package org.sonatype.nexus.security (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Uses of Package
org.sonatype.nexus.security

75 |
76 |
No usage of org.sonatype.nexus.security
77 | 78 |
79 | 80 | 81 |
Skip navigation links
82 | 83 | 84 | 85 | 95 |
96 | 123 | 124 |

Copyright © 2018. All rights reserved.

125 | 126 | 127 | -------------------------------------------------------------------------------- /apidocs/overview-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Overview List (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 |
All Classes
14 |
15 |

Packages

16 | 22 |
23 |

 

24 | 25 | 26 | -------------------------------------------------------------------------------- /apidocs/overview-summary.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Overview (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

nexus-integrations-apidocs 3.7.1-02 API

75 |
76 |
77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 |
Packages 
PackageDescription
org.sonatype.nexus 
org.sonatype.nexus.common.script 
org.sonatype.nexus.script.plugin 
org.sonatype.nexus.security 
102 |
103 | 104 |
105 | 106 | 107 |
Skip navigation links
108 | 109 | 110 | 111 | 121 |
122 | 149 | 150 |

Copyright © 2018. All rights reserved.

151 | 152 | 153 | -------------------------------------------------------------------------------- /apidocs/overview-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Class Hierarchy (nexus-integrations-apidocs 3.7.1-02 API) 8 | 9 | 10 | 11 | 12 | 13 | 23 | 26 | 27 |
28 | 29 | 30 |
Skip navigation links
31 | 32 | 33 | 34 | 44 |
45 | 72 | 73 |
74 |

Hierarchy For All Packages

75 | Package Hierarchies: 76 | 82 |
83 |
84 |

Interface Hierarchy

85 | 95 |
96 | 97 |
98 | 99 | 100 |
Skip navigation links
101 | 102 | 103 | 104 | 114 |
115 | 142 | 143 |

Copyright © 2018. All rights reserved.

144 | 145 | 146 | -------------------------------------------------------------------------------- /apidocs/package-list: -------------------------------------------------------------------------------- 1 | org.sonatype.nexus 2 | org.sonatype.nexus.common.script 3 | org.sonatype.nexus.script.plugin 4 | org.sonatype.nexus.security 5 | -------------------------------------------------------------------------------- /apidocs/script.js: -------------------------------------------------------------------------------- 1 | function show(type) 2 | { 3 | count = 0; 4 | for (var key in methods) { 5 | var row = document.getElementById(key); 6 | if ((methods[key] & type) != 0) { 7 | row.style.display = ''; 8 | row.className = (count++ % 2) ? rowColor : altColor; 9 | } 10 | else 11 | row.style.display = 'none'; 12 | } 13 | updateTabs(type); 14 | } 15 | 16 | function updateTabs(type) 17 | { 18 | for (var value in tabs) { 19 | var sNode = document.getElementById(tabs[value][0]); 20 | var spanNode = sNode.firstChild; 21 | if (value == type) { 22 | sNode.className = activeTableTab; 23 | spanNode.innerHTML = tabs[value][1]; 24 | } 25 | else { 26 | sNode.className = tableTab; 27 | spanNode.innerHTML = "" + tabs[value][1] + ""; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /apidocs/stylesheet.css: -------------------------------------------------------------------------------- 1 | /* Javadoc style sheet */ 2 | /* 3 | Overall document style 4 | */ 5 | 6 | @import url('resources/fonts/dejavu.css'); 7 | 8 | body { 9 | background-color:#ffffff; 10 | color:#353833; 11 | font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; 12 | font-size:14px; 13 | margin:0; 14 | } 15 | a:link, a:visited { 16 | text-decoration:none; 17 | color:#4A6782; 18 | } 19 | a:hover, a:focus { 20 | text-decoration:none; 21 | color:#bb7a2a; 22 | } 23 | a:active { 24 | text-decoration:none; 25 | color:#4A6782; 26 | } 27 | a[name] { 28 | color:#353833; 29 | } 30 | a[name]:hover { 31 | text-decoration:none; 32 | color:#353833; 33 | } 34 | pre { 35 | font-family:'DejaVu Sans Mono', monospace; 36 | font-size:14px; 37 | } 38 | h1 { 39 | font-size:20px; 40 | } 41 | h2 { 42 | font-size:18px; 43 | } 44 | h3 { 45 | font-size:16px; 46 | font-style:italic; 47 | } 48 | h4 { 49 | font-size:13px; 50 | } 51 | h5 { 52 | font-size:12px; 53 | } 54 | h6 { 55 | font-size:11px; 56 | } 57 | ul { 58 | list-style-type:disc; 59 | } 60 | code, tt { 61 | font-family:'DejaVu Sans Mono', monospace; 62 | font-size:14px; 63 | padding-top:4px; 64 | margin-top:8px; 65 | line-height:1.4em; 66 | } 67 | dt code { 68 | font-family:'DejaVu Sans Mono', monospace; 69 | font-size:14px; 70 | padding-top:4px; 71 | } 72 | table tr td dt code { 73 | font-family:'DejaVu Sans Mono', monospace; 74 | font-size:14px; 75 | vertical-align:top; 76 | padding-top:4px; 77 | } 78 | sup { 79 | font-size:8px; 80 | } 81 | /* 82 | Document title and Copyright styles 83 | */ 84 | .clear { 85 | clear:both; 86 | height:0px; 87 | overflow:hidden; 88 | } 89 | .aboutLanguage { 90 | float:right; 91 | padding:0px 21px; 92 | font-size:11px; 93 | z-index:200; 94 | margin-top:-9px; 95 | } 96 | .legalCopy { 97 | margin-left:.5em; 98 | } 99 | .bar a, .bar a:link, .bar a:visited, .bar a:active { 100 | color:#FFFFFF; 101 | text-decoration:none; 102 | } 103 | .bar a:hover, .bar a:focus { 104 | color:#bb7a2a; 105 | } 106 | .tab { 107 | background-color:#0066FF; 108 | color:#ffffff; 109 | padding:8px; 110 | width:5em; 111 | font-weight:bold; 112 | } 113 | /* 114 | Navigation bar styles 115 | */ 116 | .bar { 117 | background-color:#4D7A97; 118 | color:#FFFFFF; 119 | padding:.8em .5em .4em .8em; 120 | height:auto;/*height:1.8em;*/ 121 | font-size:11px; 122 | margin:0; 123 | } 124 | .topNav { 125 | background-color:#4D7A97; 126 | color:#FFFFFF; 127 | float:left; 128 | padding:0; 129 | width:100%; 130 | clear:right; 131 | height:2.8em; 132 | padding-top:10px; 133 | overflow:hidden; 134 | font-size:12px; 135 | } 136 | .bottomNav { 137 | margin-top:10px; 138 | background-color:#4D7A97; 139 | color:#FFFFFF; 140 | float:left; 141 | padding:0; 142 | width:100%; 143 | clear:right; 144 | height:2.8em; 145 | padding-top:10px; 146 | overflow:hidden; 147 | font-size:12px; 148 | } 149 | .subNav { 150 | background-color:#dee3e9; 151 | float:left; 152 | width:100%; 153 | overflow:hidden; 154 | font-size:12px; 155 | } 156 | .subNav div { 157 | clear:left; 158 | float:left; 159 | padding:0 0 5px 6px; 160 | text-transform:uppercase; 161 | } 162 | ul.navList, ul.subNavList { 163 | float:left; 164 | margin:0 25px 0 0; 165 | padding:0; 166 | } 167 | ul.navList li{ 168 | list-style:none; 169 | float:left; 170 | padding: 5px 6px; 171 | text-transform:uppercase; 172 | } 173 | ul.subNavList li{ 174 | list-style:none; 175 | float:left; 176 | } 177 | .topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { 178 | color:#FFFFFF; 179 | text-decoration:none; 180 | text-transform:uppercase; 181 | } 182 | .topNav a:hover, .bottomNav a:hover { 183 | text-decoration:none; 184 | color:#bb7a2a; 185 | text-transform:uppercase; 186 | } 187 | .navBarCell1Rev { 188 | background-color:#F8981D; 189 | color:#253441; 190 | margin: auto 5px; 191 | } 192 | .skipNav { 193 | position:absolute; 194 | top:auto; 195 | left:-9999px; 196 | overflow:hidden; 197 | } 198 | /* 199 | Page header and footer styles 200 | */ 201 | .header, .footer { 202 | clear:both; 203 | margin:0 20px; 204 | padding:5px 0 0 0; 205 | } 206 | .indexHeader { 207 | margin:10px; 208 | position:relative; 209 | } 210 | .indexHeader span{ 211 | margin-right:15px; 212 | } 213 | .indexHeader h1 { 214 | font-size:13px; 215 | } 216 | .title { 217 | color:#2c4557; 218 | margin:10px 0; 219 | } 220 | .subTitle { 221 | margin:5px 0 0 0; 222 | } 223 | .header ul { 224 | margin:0 0 15px 0; 225 | padding:0; 226 | } 227 | .footer ul { 228 | margin:20px 0 5px 0; 229 | } 230 | .header ul li, .footer ul li { 231 | list-style:none; 232 | font-size:13px; 233 | } 234 | /* 235 | Heading styles 236 | */ 237 | div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { 238 | background-color:#dee3e9; 239 | border:1px solid #d0d9e0; 240 | margin:0 0 6px -8px; 241 | padding:7px 5px; 242 | } 243 | ul.blockList ul.blockList ul.blockList li.blockList h3 { 244 | background-color:#dee3e9; 245 | border:1px solid #d0d9e0; 246 | margin:0 0 6px -8px; 247 | padding:7px 5px; 248 | } 249 | ul.blockList ul.blockList li.blockList h3 { 250 | padding:0; 251 | margin:15px 0; 252 | } 253 | ul.blockList li.blockList h2 { 254 | padding:0px 0 20px 0; 255 | } 256 | /* 257 | Page layout container styles 258 | */ 259 | .contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { 260 | clear:both; 261 | padding:10px 20px; 262 | position:relative; 263 | } 264 | .indexContainer { 265 | margin:10px; 266 | position:relative; 267 | font-size:12px; 268 | } 269 | .indexContainer h2 { 270 | font-size:13px; 271 | padding:0 0 3px 0; 272 | } 273 | .indexContainer ul { 274 | margin:0; 275 | padding:0; 276 | } 277 | .indexContainer ul li { 278 | list-style:none; 279 | padding-top:2px; 280 | } 281 | .contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { 282 | font-size:12px; 283 | font-weight:bold; 284 | margin:10px 0 0 0; 285 | color:#4E4E4E; 286 | } 287 | .contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { 288 | margin:5px 0 10px 0px; 289 | font-size:14px; 290 | font-family:'DejaVu Sans Mono',monospace; 291 | } 292 | .serializedFormContainer dl.nameValue dt { 293 | margin-left:1px; 294 | font-size:1.1em; 295 | display:inline; 296 | font-weight:bold; 297 | } 298 | .serializedFormContainer dl.nameValue dd { 299 | margin:0 0 0 1px; 300 | font-size:1.1em; 301 | display:inline; 302 | } 303 | /* 304 | List styles 305 | */ 306 | ul.horizontal li { 307 | display:inline; 308 | font-size:0.9em; 309 | } 310 | ul.inheritance { 311 | margin:0; 312 | padding:0; 313 | } 314 | ul.inheritance li { 315 | display:inline; 316 | list-style:none; 317 | } 318 | ul.inheritance li ul.inheritance { 319 | margin-left:15px; 320 | padding-left:15px; 321 | padding-top:1px; 322 | } 323 | ul.blockList, ul.blockListLast { 324 | margin:10px 0 10px 0; 325 | padding:0; 326 | } 327 | ul.blockList li.blockList, ul.blockListLast li.blockList { 328 | list-style:none; 329 | margin-bottom:15px; 330 | line-height:1.4; 331 | } 332 | ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { 333 | padding:0px 20px 5px 10px; 334 | border:1px solid #ededed; 335 | background-color:#f8f8f8; 336 | } 337 | ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { 338 | padding:0 0 5px 8px; 339 | background-color:#ffffff; 340 | border:none; 341 | } 342 | ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { 343 | margin-left:0; 344 | padding-left:0; 345 | padding-bottom:15px; 346 | border:none; 347 | } 348 | ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { 349 | list-style:none; 350 | border-bottom:none; 351 | padding-bottom:0; 352 | } 353 | table tr td dl, table tr td dl dt, table tr td dl dd { 354 | margin-top:0; 355 | margin-bottom:1px; 356 | } 357 | /* 358 | Table styles 359 | */ 360 | .overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { 361 | width:100%; 362 | border-left:1px solid #EEE; 363 | border-right:1px solid #EEE; 364 | border-bottom:1px solid #EEE; 365 | } 366 | .overviewSummary, .memberSummary { 367 | padding:0px; 368 | } 369 | .overviewSummary caption, .memberSummary caption, .typeSummary caption, 370 | .useSummary caption, .constantsSummary caption, .deprecatedSummary caption { 371 | position:relative; 372 | text-align:left; 373 | background-repeat:no-repeat; 374 | color:#253441; 375 | font-weight:bold; 376 | clear:none; 377 | overflow:hidden; 378 | padding:0px; 379 | padding-top:10px; 380 | padding-left:1px; 381 | margin:0px; 382 | white-space:pre; 383 | } 384 | .overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, 385 | .useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, 386 | .overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, 387 | .useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, 388 | .overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, 389 | .useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, 390 | .overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, 391 | .useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { 392 | color:#FFFFFF; 393 | } 394 | .overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, 395 | .useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { 396 | white-space:nowrap; 397 | padding-top:5px; 398 | padding-left:12px; 399 | padding-right:12px; 400 | padding-bottom:7px; 401 | display:inline-block; 402 | float:left; 403 | background-color:#F8981D; 404 | border: none; 405 | height:16px; 406 | } 407 | .memberSummary caption span.activeTableTab span { 408 | white-space:nowrap; 409 | padding-top:5px; 410 | padding-left:12px; 411 | padding-right:12px; 412 | margin-right:3px; 413 | display:inline-block; 414 | float:left; 415 | background-color:#F8981D; 416 | height:16px; 417 | } 418 | .memberSummary caption span.tableTab span { 419 | white-space:nowrap; 420 | padding-top:5px; 421 | padding-left:12px; 422 | padding-right:12px; 423 | margin-right:3px; 424 | display:inline-block; 425 | float:left; 426 | background-color:#4D7A97; 427 | height:16px; 428 | } 429 | .memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { 430 | padding-top:0px; 431 | padding-left:0px; 432 | padding-right:0px; 433 | background-image:none; 434 | float:none; 435 | display:inline; 436 | } 437 | .overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, 438 | .useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { 439 | display:none; 440 | width:5px; 441 | position:relative; 442 | float:left; 443 | background-color:#F8981D; 444 | } 445 | .memberSummary .activeTableTab .tabEnd { 446 | display:none; 447 | width:5px; 448 | margin-right:3px; 449 | position:relative; 450 | float:left; 451 | background-color:#F8981D; 452 | } 453 | .memberSummary .tableTab .tabEnd { 454 | display:none; 455 | width:5px; 456 | margin-right:3px; 457 | position:relative; 458 | background-color:#4D7A97; 459 | float:left; 460 | 461 | } 462 | .overviewSummary td, .memberSummary td, .typeSummary td, 463 | .useSummary td, .constantsSummary td, .deprecatedSummary td { 464 | text-align:left; 465 | padding:0px 0px 12px 10px; 466 | } 467 | th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, 468 | td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ 469 | vertical-align:top; 470 | padding-right:0px; 471 | padding-top:8px; 472 | padding-bottom:3px; 473 | } 474 | th.colFirst, th.colLast, th.colOne, .constantsSummary th { 475 | background:#dee3e9; 476 | text-align:left; 477 | padding:8px 3px 3px 7px; 478 | } 479 | td.colFirst, th.colFirst { 480 | white-space:nowrap; 481 | font-size:13px; 482 | } 483 | td.colLast, th.colLast { 484 | font-size:13px; 485 | } 486 | td.colOne, th.colOne { 487 | font-size:13px; 488 | } 489 | .overviewSummary td.colFirst, .overviewSummary th.colFirst, 490 | .useSummary td.colFirst, .useSummary th.colFirst, 491 | .overviewSummary td.colOne, .overviewSummary th.colOne, 492 | .memberSummary td.colFirst, .memberSummary th.colFirst, 493 | .memberSummary td.colOne, .memberSummary th.colOne, 494 | .typeSummary td.colFirst{ 495 | width:25%; 496 | vertical-align:top; 497 | } 498 | td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { 499 | font-weight:bold; 500 | } 501 | .tableSubHeadingColor { 502 | background-color:#EEEEFF; 503 | } 504 | .altColor { 505 | background-color:#FFFFFF; 506 | } 507 | .rowColor { 508 | background-color:#EEEEEF; 509 | } 510 | /* 511 | Content styles 512 | */ 513 | .description pre { 514 | margin-top:0; 515 | } 516 | .deprecatedContent { 517 | margin:0; 518 | padding:10px 0; 519 | } 520 | .docSummary { 521 | padding:0; 522 | } 523 | 524 | ul.blockList ul.blockList ul.blockList li.blockList h3 { 525 | font-style:normal; 526 | } 527 | 528 | div.block { 529 | font-size:14px; 530 | font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; 531 | } 532 | 533 | td.colLast div { 534 | padding-top:0px; 535 | } 536 | 537 | 538 | td.colLast a { 539 | padding-bottom:3px; 540 | } 541 | /* 542 | Formatting effect styles 543 | */ 544 | .sourceLineNo { 545 | color:green; 546 | padding:0 30px 0 0; 547 | } 548 | h1.hidden { 549 | visibility:hidden; 550 | overflow:hidden; 551 | font-size:10px; 552 | } 553 | .block { 554 | display:block; 555 | margin:3px 10px 2px 0px; 556 | color:#474747; 557 | } 558 | .deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, 559 | .overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, 560 | .seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { 561 | font-weight:bold; 562 | } 563 | .deprecationComment, .emphasizedPhrase, .interfaceName { 564 | font-style:italic; 565 | } 566 | 567 | div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, 568 | div.block div.block span.interfaceName { 569 | font-style:normal; 570 | } 571 | 572 | div.contentContainer ul.blockList li.blockList h2{ 573 | padding-bottom:0px; 574 | } 575 | -------------------------------------------------------------------------------- /complex-script/addRole.groovy: -------------------------------------------------------------------------------- 1 | // From https://help.sonatype.com/repomanager3/rest-and-integration-api/script-api/examples 2 | 3 | import groovy.json.JsonSlurper 4 | 5 | //expects json string with appropriate content to be passed in 6 | def role = new JsonSlurper().parseText(args) 7 | 8 | security.addRole(role.id, role.name, role.description, role.privilegeIds, role.roleIds) -------------------------------------------------------------------------------- /complex-script/addUpdateScript.groovy: -------------------------------------------------------------------------------- 1 | /** 2 | * An example script that handles adding or updating a groovy script via the REST API. 3 | */ 4 | @Grab('org.sonatype.nexus:nexus-rest-client:3.9.0-01') 5 | @Grab('org.sonatype.nexus:nexus-rest-jackson2:3.9.0-01') 6 | @Grab('org.sonatype.nexus:nexus-script:3.9.0-01') 7 | @Grab('org.jboss.spec.javax.servlet:jboss-servlet-api_3.1_spec:1.0.0.Final') 8 | @Grab('com.fasterxml.jackson.core:jackson-core:2.8.6') 9 | @Grab('com.fasterxml.jackson.core:jackson-databind:2.8.6') 10 | @Grab('com.fasterxml.jackson.core:jackson-annotations:2.8.6') 11 | @Grab('com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.8.6') 12 | @Grab('org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.0_spec:1.0.1.Beta1') 13 | @Grab('org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.0.Final') 14 | @Grab('javax.activation:activation:1.1.1') 15 | @Grab('net.jcip:jcip-annotations:1.0') 16 | @Grab('org.jboss.logging:jboss-logging-annotations:2.0.1.Final') 17 | @Grab('org.jboss.logging:jboss-logging-processor:2.0.1.Final') 18 | @Grab('com.sun.xml.bind:jaxb-impl:2.2.7') 19 | @Grab('com.sun.mail:javax.mail:1.5.6') 20 | @Grab('org.apache.james:apache-mime4j:0.6') 21 | @GrabExclude('org.codehaus.groovy:groovy-all') 22 | import javax.ws.rs.NotFoundException 23 | 24 | import org.sonatype.nexus.script.ScriptClient 25 | import org.sonatype.nexus.script.ScriptXO 26 | 27 | import org.jboss.resteasy.client.jaxrs.BasicAuthentication 28 | import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder 29 | 30 | CliBuilder cli = new CliBuilder( 31 | usage: 'groovy addUpdateScript.groovy -u admin -p admin123 -f scriptFile.groovy [-n explicitName] [-h nx3Url]') 32 | cli.with { 33 | u longOpt: 'username', args: 1, required: true, 'A User with permission to use the NX3 Script resource' 34 | p longOpt: 'password', args: 1, required: true, 'Password for given User' 35 | f longOpt: 'file', args: 1, required: true, 'Script file to send to NX3' 36 | h longOpt: 'host', args: 1, 'NX3 host url (including port if necessary). Defaults to http://localhost:8081' 37 | n longOpt: 'name', args: 1, 'Name to store Script file under. Defaults to the name of the Script file.' 38 | } 39 | def options = cli.parse(args) 40 | if (!options) { 41 | return 42 | } 43 | 44 | def file = new File(options.f) 45 | assert file.exists() 46 | 47 | def host = options.h ?: 'http://localhost:8081' 48 | def resource = 'service/rest' 49 | 50 | ScriptClient scripts = new ResteasyClientBuilder() 51 | .build() 52 | .register(new BasicAuthentication(options.u, options.p)) 53 | .target("$host/$resource") 54 | .proxy(ScriptClient) 55 | 56 | String name = options.n ?: file.name 57 | 58 | // Look to see if a script with this name already exists so we can update if necessary 59 | boolean newScript = true 60 | try { 61 | scripts.read(name) 62 | newScript = false 63 | println "Existing Script named '$name' will be updated" 64 | } 65 | catch (NotFoundException e) { 66 | println "Script named '$name' will be created" 67 | } 68 | 69 | def script = new ScriptXO(name, file.text, 'groovy') 70 | if (newScript) { 71 | scripts.add(script) 72 | } 73 | else { 74 | scripts.edit(name, script) 75 | } 76 | 77 | println "Stored scripts are now: ${scripts.browse().collect { it.name }}" 78 | -------------------------------------------------------------------------------- /complex-script/core.groovy: -------------------------------------------------------------------------------- 1 | 2 | // the repository manager is hosted behind a nging proxy server that redirects ports, 3 | // manages HTTPS and is configured with a DNS name 4 | // so we need to set the base URL 5 | core.baseUrl('https://repo.example.com') 6 | 7 | // another proxy server in the data center is the gate to the internet and therefore 8 | // any remote proxy repositoriesthe repository manager therefore needs to connect to 9 | // it as HTTP/HTTPS proxy and authenticate to be able to retrieve remote content 10 | core.httpProxyWithBasicAuth('webproxy', 9999, 'repomgr', 'letmethrough') 11 | 12 | log.info('Script core completed successfully') -------------------------------------------------------------------------------- /complex-script/dockerRepositories.groovy: -------------------------------------------------------------------------------- 1 | import org.sonatype.nexus.blobstore.api.BlobStoreManager 2 | 3 | // create hosted repo and expose via https to allow deployments 4 | repository.createDockerHosted('docker-internal', null, 18444) 5 | 6 | // create proxy repo of Docker Hub and enable v1 to get search to work 7 | // no ports since access is only indirectly via group 8 | repository.createDockerProxy('docker-hub', // name 9 | 'https://registry-1.docker.io', // remoteUrl 10 | 'HUB', // indexType 11 | null, // indexUrl 12 | null, // httpPort 13 | null, // httpsPort 14 | BlobStoreManager.DEFAULT_BLOBSTORE_NAME, // blobStoreName 15 | true, // strictContentTypeValidation 16 | true // v1Enabled 17 | ) 18 | 19 | // create group and allow access via https 20 | def groupMembers = ['docker-hub', 'docker-internal'] 21 | repository.createDockerGroup('docker-all', null, 18443, groupMembers, true) 22 | 23 | 24 | log.info('Script dockerRepositories completed successfully') -------------------------------------------------------------------------------- /complex-script/grapeConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /complex-script/npmAndBowerRepositories.groovy: -------------------------------------------------------------------------------- 1 | import groovy.xml.MarkupBuilder 2 | def newRepositories = [] 3 | newRepositories << repository.createNpmProxy('npmjs-org', 'https://registry.npmjs.org') 4 | 5 | newRepositories << repository.createNpmHosted('npm-internal') 6 | 7 | def npmMembers = ['npmjs-org', 'npm-internal' ] 8 | newRepositories << repository.createNpmGroup('npm-all', npmMembers) 9 | 10 | newRepositories << repository.createBowerProxy('bower-io', 'http://bower.herokuapp.com') 11 | 12 | newRepositories << repository.createBowerHosted('bower-internal') 13 | 14 | def bowerMembers = ['bower-io', 'bower-internal'] 15 | newRepositories << repository.createBowerGroup('bower-all', bowerMembers) 16 | 17 | log.info('Script npmAndBowerRepositories completed successfully') 18 | 19 | // build up an XML response containing the urls for newly created repositories 20 | def writer = new StringWriter() 21 | def xml = new MarkupBuilder(writer) 22 | xml.repositories() { 23 | newRepositories.each { repo -> 24 | repository(name: repo.name, url: repo.url) 25 | } 26 | } 27 | return writer.toString() 28 | 29 | // output will be like: 30 | 31 | // 32 | // 33 | // 34 | // 35 | // 36 | // 37 | // 38 | // 39 | -------------------------------------------------------------------------------- /complex-script/provision.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # A simple example script that publishes a number of scripts to the Nexus Repository Manager 4 | # and executes them. 5 | 6 | # fail if anything errors 7 | set -e 8 | # fail if a function call is missing an argument 9 | set -u 10 | 11 | username=admin 12 | password=admin123 13 | 14 | # add the context if you are not using the root context 15 | host=http://localhost:8081 16 | 17 | # add a script to the repository manager and run it 18 | function addAndRunScript { 19 | name=$1 20 | file=$2 21 | # using grape config that points to local Maven repo and Central Repository , default grape config fails on some downloads although artifacts are in Central 22 | # change the grapeConfig file to point to your repository manager, if you are already running one in your organization 23 | groovy -Dgroovy.grape.report.downloads=true -Dgrape.config=grapeConfig.xml addUpdateScript.groovy -u "$username" -p "$password" -n "$name" -f "$file" -h "$host" 24 | printf "\nPublished $file as $name\n\n" 25 | curl -v -X POST -u $username:$password --header "Content-Type: text/plain" "$host/service/rest/v1/script/$name/run" 26 | printf "\nSuccessfully executed $name script\n\n\n" 27 | } 28 | 29 | printf "Provisioning Integration API Scripts Starting \n\n" 30 | printf "Publishing and executing on $host\n" 31 | 32 | addAndRunScript npmBower npmAndBowerRepositories.groovy 33 | addAndRunScript raw rawRepositories.groovy 34 | addAndRunScript security security.groovy 35 | addAndRunScript core core.groovy 36 | 37 | printf "\nProvisioning Scripts Completed\n\n" 38 | -------------------------------------------------------------------------------- /complex-script/rawRepositories.groovy: -------------------------------------------------------------------------------- 1 | // create a new blob store dedicated to usage with raw repositories 2 | def rawStore = blobStore.createFileBlobStore('raw', 'raw') 3 | 4 | // and create a first raw hosted repository for documentation using the new blob store 5 | repository.createRawHosted('documentation', rawStore.name) 6 | 7 | log.info('Script rawRepositories completed successfully') -------------------------------------------------------------------------------- /complex-script/security.groovy: -------------------------------------------------------------------------------- 1 | import groovy.json.JsonOutput 2 | 3 | // A bunch of security setup related tasks 4 | 5 | // 6 | // disable anonymous access 7 | // 8 | security.setAnonymousAccess(false) 9 | log.info('Anonymous access disabled') 10 | 11 | // 12 | // Create new admin user 13 | // 14 | def adminRole = ['nx-admin'] 15 | def janeDoe = security.addUser('jane.doe', 'Jane', 'Doe', 'jane.doe@example.com', true, 'changMe123', adminRole) 16 | log.info('User jane.doe created') 17 | 18 | // 19 | // Create a new role that allows a user same access as anonymous and adds healtchcheck access 20 | // 21 | def devPrivileges = ['nx-healthcheck-read', 'nx-healthcheck-summary-read'] 22 | def anoRole = ['nx-anonymous'] 23 | // add roles that uses the built in nx-anonymous role as a basis and adds more privileges 24 | security.addRole('developer', 'Developer', 'User with privileges to allow read access to repo content and healtcheck', devPrivileges, anoRole) 25 | log.info('Role developer created') 26 | // use the new role to create a user 27 | def devRoles = ['developer'] 28 | def johnDoe = security.addUser('john.doe', 'John', 'Doe', 'john.doe@example.com', true, 'changMe456', devRoles) 29 | log.info('User john.doe created') 30 | 31 | // 32 | // Create new role that allows deployment and create a user to be used on a CI server 33 | // 34 | // privileges with pattern * to allow any format, browse and read are already part of nx-anonymous 35 | def depPrivileges = ['nx-repository-view-*-*-add', 'nx-repository-view-*-*-edit'] 36 | def roles = ['developer'] 37 | // add roles that uses the developer role as a basis and adds more privileges 38 | security.addRole('deployer', 'Deployer', 'User with privileges to allow deployment all repositories', depPrivileges, roles) 39 | log.info('Role deployer created') 40 | def depRoles = ['deployer'] 41 | def lJenkins = security.addUser('jenkins', 'Leeroy', 'Jenkins', 'leeroy.jenkins@example.com', true, 'changMe789', depRoles) 42 | log.info('User jenkins created') 43 | 44 | 45 | log.info('Script security completed successfully') 46 | 47 | //Return a JSON response containing our new Users for confirmation 48 | return JsonOutput.toJson([janeDoe, johnDoe, lJenkins]) 49 | 50 | // output will be like: 51 | 52 | //[ 53 | // { 54 | // "emailAddress": "jane.doe@example.com", 55 | // "firstName": "Jane", 56 | // "lastName": "Doe", 57 | // "name": "Jane Doe", 58 | // "readOnly": false, 59 | // "roles": [ 60 | // { 61 | // "roleId": "nx-admin", 62 | // "source": "default" 63 | // } 64 | // ], 65 | // "source": "default", 66 | // "status": "active", 67 | // "userId": "jane.doe", 68 | // "version": null 69 | // }, 70 | // { 71 | // "emailAddress": "john.doe@example.com", 72 | // "firstName": "John", 73 | // "lastName": "Doe", 74 | // "name": "John Doe", 75 | // "readOnly": false, 76 | // "roles": [ 77 | // { 78 | // "roleId": "developer", 79 | // "source": "default" 80 | // } 81 | // ], 82 | // "source": "default", 83 | // "status": "active", 84 | // "userId": "john.doe", 85 | // "version": null 86 | // }, 87 | // { 88 | // "emailAddress": "leeroy.jenkins@example.com", 89 | // "firstName": "Leeroy", 90 | // "lastName": "Jenkins", 91 | // "name": "Leeroy Jenkins", 92 | // "readOnly": false, 93 | // "roles": [ 94 | // { 95 | // "roleId": "deployer", 96 | // "source": "default" 97 | // } 98 | // ], 99 | // "source": "default", 100 | // "status": "active", 101 | // "userId": "jenkins", 102 | // "version": null 103 | // } 104 | //] 105 | 106 | -------------------------------------------------------------------------------- /nexus-script-example/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | apply plugin: 'maven' 3 | 4 | group = 'com.example.automation' 5 | version = '1.0-SNAPSHOT' 6 | 7 | description = """Example of how to configure a simple IDE environment with code completion for developing NXRM3 8 | Integrations scripts""" 9 | 10 | sourceCompatibility = 1.8 11 | targetCompatibility = 1.8 12 | 13 | repositories { 14 | mavenCentral() 15 | } 16 | ext.versions = [ 17 | nxrm3: '3.9.0-01' 18 | ] 19 | 20 | dependencies { 21 | compile group: 'org.sonatype.nexus', name: 'nexus-core', version: versions.nxrm3 22 | compile group: 'org.sonatype.nexus', name: 'nexus-script', version: versions.nxrm3 23 | compile group: 'org.sonatype.nexus', name: 'nexus-security', version: versions.nxrm3 24 | compile group: 'org.sonatype.nexus', name: 'nexus-repository', version: versions.nxrm3 25 | compile group: 'org.sonatype.nexus.plugins', name: 'nexus-repository-maven', version: versions.nxrm3 26 | compile group: 'org.sonatype.nexus.plugins', name: 'nexus-script-plugin', version: versions.nxrm3 27 | } 28 | -------------------------------------------------------------------------------- /nexus-script-example/pom.xml: -------------------------------------------------------------------------------- 1 | 4 | 4.0.0 5 | 6 | com.example.automation 7 | nexus-script-example 8 | 1.0-SNAPSHOT 9 | 10 | 11 | 3.9.0-01 12 | 13 | 14 | 15 | org.sonatype.nexus 16 | nexus-core 17 | ${nx-version} 18 | 19 | 20 | org.sonatype.nexus 21 | nexus-script 22 | ${nx-version} 23 | 24 | 25 | org.sonatype.nexus 26 | nexus-security 27 | ${nx-version} 28 | 29 | 30 | org.sonatype.nexus 31 | nexus-repository 32 | ${nx-version} 33 | 34 | 35 | org.sonatype.nexus.plugins 36 | nexus-repository-maven 37 | ${nx-version} 38 | 39 | 40 | org.sonatype.nexus.plugins 41 | nexus-script-plugin 42 | ${nx-version} 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /nexus-script-example/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'nexus-script-example' 2 | -------------------------------------------------------------------------------- /nexus-script-example/src/main/groovy/countComponents.groovy: -------------------------------------------------------------------------------- 1 | import org.sonatype.nexus.repository.Repository 2 | import org.sonatype.nexus.repository.storage.Query 3 | import org.sonatype.nexus.repository.storage.StorageFacet 4 | 5 | import groovy.json.JsonOutput 6 | 7 | def result = [:] 8 | 9 | def totalComponents = 0 10 | def totalAssets = 0 11 | 12 | repository.repositoryManager.browse().each { Repository repo -> 13 | def tx = repo.facet(StorageFacet).txSupplier().get() 14 | def components = 0 15 | def assets = 0 16 | try { 17 | tx.begin() 18 | components = tx.countComponents(Query.builder().where('1').eq(1).build(), [repo]) 19 | assets = tx.countAssets(Query.builder().where('1').eq(1).build(), [repo]) 20 | tx.commit() 21 | } catch (Exception e) { 22 | log.warn("Transaction failed {}", e.toString()) 23 | tx.rollback() 24 | } finally { 25 | tx.close() 26 | } 27 | totalComponents += components 28 | totalAssets += assets 29 | result[repo.name] = [components: components, assets: assets] 30 | } 31 | 32 | result["_totals"] = [components : totalComponents, assets : totalAssets] 33 | 34 | def json = JsonOutput.toJson(result) 35 | log.info json 36 | return json 37 | -------------------------------------------------------------------------------- /nexus-script-example/src/main/groovy/listRepos.groovy: -------------------------------------------------------------------------------- 1 | import groovy.json.JsonOutput 2 | import org.sonatype.nexus.repository.Repository 3 | 4 | List urls = [] 5 | 6 | repository.repositoryManager.browse().each { Repository repo -> 7 | log.info("Repository: $repo") 8 | urls.add(repo.name) 9 | 10 | } 11 | 12 | 13 | 14 | return JsonOutput.toJson(urls) -------------------------------------------------------------------------------- /nexus-script-example/src/main/groovy/listRolesToUsers.groovy: -------------------------------------------------------------------------------- 1 | import groovy.json.JsonOutput 2 | import groovy.json.JsonSlurper 3 | 4 | // Only LDAP Users & associated Roles 5 | //users = security.getSecuritySystem().getUserManager("LDAP").listUsers() 6 | 7 | 8 | //All Users & Roles 9 | users = security.getSecuritySystem().listUsers() 10 | 11 | //expects json string with appropriate content to be passed in 12 | def p_role = null 13 | if (args?.trim()) { 14 | p_role = new JsonSlurper().parseText(args) 15 | } 16 | 17 | Map > role_to_user = new HashMap >(); 18 | 19 | for (user in users) 20 | { 21 | //log.info("User: $user") 22 | 23 | for (role in user.getRoles()) 24 | { 25 | //log.info(" ----> $role") 26 | 27 | if (p_role == null || role.roleId.equals(p_role.id)) { 28 | if (role_to_user.containsKey(role.roleId) == false) { 29 | role_to_user.put(role.roleId, new TreeSet()) 30 | } 31 | 32 | Set userList = role_to_user.get(role.roleId) 33 | userList.add(user.userId) 34 | } 35 | } 36 | 37 | } 38 | 39 | return JsonOutput.toJson(role_to_user) -------------------------------------------------------------------------------- /nexus-script-example/src/main/groovy/listUsers.groovy: -------------------------------------------------------------------------------- 1 | import groovy.json.JsonOutput 2 | import org.sonatype.nexus.security.user.User 3 | 4 | users = security.getSecuritySystem().listUsers() 5 | size = users.size() 6 | log.info("User count: $size") 7 | 8 | return JsonOutput.toJson(users) 9 | -------------------------------------------------------------------------------- /nexus-script-example/src/main/groovy/listUsersTask.groovy: -------------------------------------------------------------------------------- 1 | users = security.getSecuritySystem().listUsers() 2 | 3 | size = users.size() 4 | 5 | log.info("User count: $size") 6 | 7 | for (user in users) 8 | { 9 | log.info("User: $user") 10 | } -------------------------------------------------------------------------------- /nexus-script-example/src/main/groovy/maven.groovy: -------------------------------------------------------------------------------- 1 | // simple example showing simple method and equivalent method with all default parameters expanded. 2 | 3 | import org.sonatype.nexus.blobstore.api.BlobStoreManager 4 | import org.sonatype.nexus.repository.storage.WritePolicy 5 | import org.sonatype.nexus.repository.maven.VersionPolicy 6 | import org.sonatype.nexus.repository.maven.LayoutPolicy 7 | 8 | repository.createMavenHosted('private') 9 | 10 | repository.createMavenHosted('private-again', BlobStoreManager.DEFAULT_BLOBSTORE_NAME, true, VersionPolicy.RELEASE, 11 | WritePolicy.ALLOW_ONCE, LayoutPolicy.STRICT) 12 | -------------------------------------------------------------------------------- /nexus-script-example/src/main/groovy/provision.groovy: -------------------------------------------------------------------------------- 1 | // The four main API providers are blobStore, security, repository and core. 2 | 3 | blobStore.createFileBlobStore('npm', 'npm') 4 | 5 | security.addRole('blue','blue', 'Blue Role', [], []) 6 | 7 | repository.createBowerHosted('bower-internal') 8 | 9 | core.baseUrl('http://repo.example.com') 10 | -------------------------------------------------------------------------------- /nexus-script-example/src/main/groovy/repoAssetLister.groovy: -------------------------------------------------------------------------------- 1 | import org.sonatype.nexus.repository.storage.Asset 2 | import org.sonatype.nexus.repository.storage.Query 3 | import org.sonatype.nexus.repository.storage.StorageFacet 4 | 5 | import groovy.json.JsonOutput 6 | import groovy.json.JsonSlurper 7 | 8 | def request = new JsonSlurper().parseText(args) 9 | assert request.repoName: 'repoName parameter is required' 10 | assert request.startDate: 'startDate parameter is required, format: yyyy-mm-dd' 11 | 12 | log.info("Gathering Asset list for repository: ${request.repoName} as of startDate: ${request.startDate}") 13 | 14 | def repo = repository.repositoryManager.get(request.repoName) 15 | StorageFacet storageFacet = repo.facet(StorageFacet) 16 | def tx = storageFacet.txSupplier().get() 17 | def urls = [] 18 | try { 19 | tx.begin() 20 | Iterable assets = tx. 21 | findAssets(Query.builder().where('last_updated > ').param(request.startDate).build(), [repo]) 22 | urls = assets.collect { "/repository/${repo.name}/${it.name()}" } 23 | } 24 | finally { 25 | tx.close() 26 | } 27 | 28 | def result = JsonOutput.toJson([ 29 | assets : urls, 30 | since : request.startDate, 31 | repoName: request.repoName 32 | ]) 33 | return result 34 | 35 | -------------------------------------------------------------------------------- /nexus-script-example/src/main/groovy/repoAssetListerTask.groovy: -------------------------------------------------------------------------------- 1 | import org.sonatype.nexus.repository.storage.Asset 2 | import org.sonatype.nexus.repository.storage.Query 3 | import org.sonatype.nexus.repository.storage.StorageFacet 4 | 5 | import groovy.json.JsonOutput 6 | import groovy.json.JsonSlurper 7 | 8 | def assetListFile = new File('/tmp/assetListFile.txt') 9 | def request = new JsonSlurper().parseText("{\"repoName\":\"maven-releases\",\"startDate\":\"2016-01-01\"}") 10 | 11 | assert request.repoName: 'repoName parameter is required' 12 | assert request.startDate: 'startDate parameter is required, format: yyyy-mm-dd' 13 | 14 | log.info("Gathering Asset list for repository: ${request.repoName} as of startDate: ${request.startDate}") 15 | 16 | def repo = repository.repositoryManager.get(request.repoName) 17 | StorageFacet storageFacet = repo.facet(StorageFacet) 18 | def tx = storageFacet.txSupplier().get() 19 | 20 | try { 21 | tx.begin() 22 | Iterable assets = tx. 23 | findAssets(Query.builder().where('last_updated > ').param(request.startDate).build(), [repo]) 24 | 25 | assets.each {Asset asset -> 26 | assetListFile << asset.name() + '\n' 27 | } 28 | } 29 | finally { 30 | tx.close() 31 | } 32 | -------------------------------------------------------------------------------- /simple-shell-example/anonymous.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "anonymous", 3 | "type": "groovy", 4 | "content": "security.setAnonymousAccess(Boolean.valueOf(args))" 5 | } 6 | -------------------------------------------------------------------------------- /simple-shell-example/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bower", 3 | "type": "groovy", 4 | "content": "repository.createBowerHosted('bower-internal'); repository.createBowerProxy('bower-io','http://bower.herokuapp.com'); repository.createBowerGroup('bower-all',['bower-io','bower-internal'])" 5 | } 6 | 7 | -------------------------------------------------------------------------------- /simple-shell-example/create.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | jsonFile=$1 4 | 5 | printf "Creating Integration API Script from $jsonFile\n\n" 6 | 7 | curl -v -u admin:admin123 --header "Content-Type: application/json" 'http://localhost:8081/service/rest/v1/script/' -d @$jsonFile 8 | -------------------------------------------------------------------------------- /simple-shell-example/delete.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | name=$1 4 | 5 | printf "Deleting Integration API Script $name\n\n" 6 | 7 | curl -v -X DELETE -u admin:admin123 "http://localhost:8081/service/rest/v1/script/$name" 8 | -------------------------------------------------------------------------------- /simple-shell-example/echo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "echo", 3 | "type": "groovy", 4 | "content": "def youSaid = args; return 'Hello. You said: ' + youSaid;" 5 | } 6 | -------------------------------------------------------------------------------- /simple-shell-example/list.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | printf "Listing Integration API Scripts\n" 4 | 5 | curl -v -u admin:admin123 'http://localhost:8081/service/rest/v1/script' 6 | -------------------------------------------------------------------------------- /simple-shell-example/maven.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "maven", 3 | "type": "groovy", 4 | "content": "repository.createMavenHosted('maven-internal')" 5 | } 6 | -------------------------------------------------------------------------------- /simple-shell-example/npm.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "npm", 3 | "type": "groovy", 4 | "content": "repository.createNpmHosted('npm-internal'); repository.createNpmProxy('npmjs-org','https://registry.npmjs.org'); repository.createNpmGroup('npm-all',['npmjs-org','npm-internal'])" 5 | } 6 | -------------------------------------------------------------------------------- /simple-shell-example/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | name=$1 4 | 5 | printf "Running Integration API Script $name\n\n" 6 | 7 | curl -v -X POST -u admin:admin123 --header "Content-Type: text/plain" "http://localhost:8081/service/rest/v1/script/$1/run" 8 | -------------------------------------------------------------------------------- /simple-shell-example/setAnonymous.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | anonymous=$1 4 | 5 | printf "Setting Anonymous access to $anonymous\n\n" 6 | 7 | curl -v -X POST -u admin:admin123 --header "Content-Type: text/plain" "http://localhost:8081/service/rest/v1/script/anonymous/run" -d $anonymous 8 | -------------------------------------------------------------------------------- /simple-shell-example/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | name=$1 4 | jsonFile=$2 5 | 6 | printf "Updating Integration API Script $name with $jsonFile\n\n" 7 | 8 | curl -v -X PUT -u admin:admin123 --header "Content-Type: application/json" "http://localhost:8081/service/rest/v1/script/$name" -d @$jsonFile 9 | --------------------------------------------------------------------------------