GithubHelp home page GithubHelp logo

cloudspokes / glib-chromeext Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 30.0 907 KB

Github Launch Issue Button for Topcoder.com

Home Page: http://www.topcoder.com

JavaScript 90.95% CSS 8.18% HTML 0.87%

glib-chromeext's People

Contributors

ananthhh avatar cwdcwd avatar thkang2 avatar tjpotenza avatar vishesheltropy avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

glib-chromeext's Issues

Glib chrome extension icon

Description:

Update the chrome extension icon to prettier image

Requirements:

First cut a topcoder icon?

Display Issue on Issues page

When viewing the overall issues page of a repo, the Topcoder button aligns left.

screen shot 2016-10-03 at 11 39 51 am

Extension info:
screen shot 2016-10-03 at 11 41 33 am

Browser Info:
screen shot 2016-10-03 at 11 42 14 am

[$400,$200] Add TC button to Issues list screen

Description:

This is an expansion on the GLIB-GITHUB-TOPCODER CHROME EXTENSION Challenge.

Requirements:

  • Add the TC button to Issues list screen
  • Launch challenges using the existing capabilities of the extension on all checked items on the screen
  • Log creation errors as comments on the issue tickets and report any other errors as a pop up to the user

image

Setup

Submissions:

Upload documentation for how to run your submission
Upload all your source code as a zip
Winner will be required to submit a pull request against the branch specified !

add "defaults" section to settings

Create some default values that the user can set in the settings of the extension.

default challenge type

  • code
  • F2F
  • default prize amount: [1000, 500]
  • Challenge Prefix _____________
  • default duration [ days ]

and the next step would be to support multiple projects. You would have to launch a pop window to determine which project to use. You know this will come shortly.

You could also do #17 in there too.

[$100] Add project Id to payload

Description:

This is an expansion on the GLIB-GITHUB-TOPCODER CHROME EXTENSION Challenge.

Requirements:

  • After hitting the button and before posting to the challenge endpoint, look up the project Id in the chrome settings for the extension by matching to the issue ticket payload's repository_url field.
    • if no setting exists, prompt for a project Id and save the pair to map in the chrome settings
  • append the project Id to the payload in a field called "tc_project_id"

Setup

Submissions:

Upload documentation for how to run your submission
Upload all your source code as a zip
Winner will be required to submit a pull request against the branch specified !

Update shim to post to submission guidelines

Description:

Update shim to post to submission guidelines

Requirements:

  • If origin is github do the following
    • Post the following
      • Please access the repository here; pass in the repo URL
      • Standard rules on how to assign, get paid, submit feature branch, etc... @cwdcwd I think you have this already

Setup & Reference:

Submissions:

  • Ensure good test coverage on all modules
  • Upload documentation for how to run your submission
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

[$400, $200] Update GLIB Chrome Extension - Update Topcoder Auth

Description:

The GLIB-Chrome-Ext challenges are a set of challenges where we will be building out a chrome extension that inserts a button onto various vendor (Github, Gitlab, Jira, etc) sites in order to launch a new Topcoder challenge(s). This challenge will be removing the replacing the current topcoder token retrieval with an updated endpoint that uses and implicit grant.

Requirements:

  • Remove the current Topcoder token retrieval code.
  • Add functionality for retrieving a Topcoder token using the implicit grant Topcoder service. The client_id etc will be added to the forum. Note that it uses a callback url so you will need to add a listener in the background script for handling the callback and storing the information related to the returned JWT token.
  • Parse the returned JWT token and save the details into chrome storage.
  • Update the extension to check the expiration date on the token prior to using it and refresh it if necessary.

Setup & Reference:

  • Use dev mode when working on the extension locally. This is configured in the options of the extension.
  • See the README for details around running the extension locally.
  • For dev mode you are able to enter any value for the project id when prompted.
  • Fork this repo and work off this branch.
  • The calls to topcoder endpoints will fail with the new token. This is expected. We will update the extension to use new endpoints in future challenges. For this challenge you only need to demonstrate that you have stored the token and that it is refreshed when the expiration time is passed.
  • Feel free to add JWT processing module to the project.

Submissions:

  • Upload documentation for how to run your submission
  • A video of your working solution is required
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

Crashing Chrome

Description:

Sometimes my github (not necessarily issues page ) seems to lockup and nothing on the browser tab works however the other tabs seem fine. I have a lot of windows and several tabs open.
screen shot 2016-04-06 at 2 57 10 pm

Requirements:

Please investigate and let us know if you are experiencing it to. I also have zenhub extension running

_update several minutes later_
I think this is related to zenhub because although it was not crashing it was very slow to respond. I just disabled zenhub and now it every char a type is realtime.

[$150, $75] GLIB-Chrome Extension - Add default prizes - Javascript

Description:

The GLIB-Chrome-Ext challenges are a set of challenges where we will be building out a chrome extension that inserts a button onto various vendor (Github, Gitlab, Jira, etc) sites in order to launch a new Topcoder challenge(s). For this challenge we will be adding a default prize value to the options screen, and updating the extension to use the default value is one is not set on the submitted issue.

Requirements:

  • Update the options screen to include a default prizes for contests. The prizes should be a comma delimited list of dollar values such as $100, $50. Spaces should be ignored, and one or more prizes is valid.
  • Update the submission to include the default prizes if no prizes have been specified. You may need to update all vendors.
  • Update the title of the issue to include the default prizes used for the contest. The prizes format in the title is as follows:
[$300,$150] This is an example title

Setup & Reference:

Submissions:

  • Ensure good test coverage on all modules
  • Upload documentation for how to run your submission
  • A video of your working solution is required
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

[?] GLIB Chrome Extension - Alter button injection

Description:

The GLIB-Chrome-Ext challenges are a set of challenges where we will be building out a chrome extension that inserts a button onto various vendor (Github, Gitlab, Jira, etc) sites in order to launch a new Topcoder challenge(s). This this challenged we will be altering the code that does the button injection as it is currently causing the page to freeze up on Github after a period of time. We will be updating the extension to use chome events that are triggered on updates to the page that will check the url on updates and only inject the styles and button when the appropriate url is detected.

Requirements:

  • Add tabs to the permission object in the manifest.
  • In the background.js script add a chrome.tabs.onUpdated event handler that will check the current url to determine if the styles need to be injected and button added. Note the event will fire multiple times for a single page navigation (such as clicking issues in github). Your code should verify that the styles and button have not already been injected for the current view.
  • Use the chrome.tab.injectCss function add the required styles to the active tab.
  • Update the code to add the button to the page when necessary. This can either be done using something like chome.tab.executeScript (note there will need to be a custom setup per vendor), or by firing an event to be handled in the contest_script.js that will use the current button injection code.
  • Depending on your implementation update or removed the code in the content_script that is no longer necessary. Note that the purpose of this challenge is to remove the setInterval functions from the button injects so be sure that those are removed.
  • Update the code that is executed on load, removing the button and style inject checks.
  • It would be ideal if the `chome.tab.onUpdated listener was only added when a valid vendor is detected. Explore this possibility and document in your submission if you were not able to accomplish this goal.
  • Add a common logging function that uses console.log, but will only log out when the extension in developer mode. You added function should use this logging function to console.log out statements indicating execution in the extension.
  • Ensure that the gulpfile tasks and scripts in package.json all still pass after you updates. You should add unit test for added functionality.

Setup & Reference:

Submissions:

  • Upload documentation for how to run your submission
  • A video of your working solution is required
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

Need guidance before Pull Request

Hi, as the Appeals Response phase has ended I understand that I'll be sending a pull request, I think some clarifications are needed before actually sending them.

You can see the latest version at https://github.com/thkang2/GLIB-ChromeExt/tree/updateTopcoderAuth

  1. The challenge creation function - they're disabled. Before my change the button started a chain of promises, which did (simplified) 1)Authenticate - 2)Submit challenge to topcoder server - 3)post comments to github/jira/gitlab server. Currently the button just alert you a json web token. No challenge posting. Should I leave this or change them?
  2. Please download the extension and go to the options page. It has more fields that I added. I just made them so reviewers can see it but really don't think they are necessary as they should be internals and not be configurable.
  3. Should I include the mock oauth server?
  4. It seems chrome extension doesn't have any javascript import/require system, instead it relies on some kind of script injection by creating a background.html on the fly and insert js files via <script src=".."> in the order of them in manifest.json. This breaks code linting as there will be undeclared globals. Any solution on this?

[$600,$300] GLIB Chrome Extension-Jira integration

Description:

The GLIB-Chrome-Ext challenges are a set of challenges where we will be building out a chrome extension that inserts a button onto various vendor (Github, Gitlab, Jira, etc) sites in order to launch a new Topcoder challenge(s). The extension has been built for Github issues, and for this challenge we will be expanding the functionality to include Jira.

Requirements:

  • Create a vendor/Jira.js script that implements the required vendor functionality for a Jira Issue. See the vendor/Github.js file for example functionality. Only implement the single issue functionality for this challenge.
  • Insert the topcoder button before the Export button on the Jira Issue view.
  • Jira oAuth application client key & secret are allowed to be embedded in the configuration for this challenge. They will be refactored out later to a more secure design.
  • Use the User Authentication chrome extension function to retrieve a jira access token for accessing and posting Jira data.
  • Use the TC Challenge Mock endpoint for testing the button after it has been injected.
    • Be sure to utilize "development mode" in the extensions settings
    • Authorize on to the mock endpoint with user "mess" and password "appirio123"
  • Update the chrome extension manifest.json file and content_script.js to support your changes.

image

Setup & Reference:

  • See the Github.js script in the vendor directory for an example vendor implementation. Note it is using a different OAuth service to retrieve an access token.
  • Request access to the jira instance on the forums or email [gbockus](mailto: [email protected]).
  • For dev mode you are able to enter any value for the project id when prompted.
  • Fork this repo and work off this branch.

Submissions:

  • Ensure good test coverage on all modules
  • Upload documentation for how to run your submission
  • A video of your working solution is required
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

[$500, $250] Update GLIB Chrome Extension - Supported domains in options

Description:

The GLIB-Chrome-Ext challenges are a set of challenges where we will be building out a chrome extension that inserts a button onto various vendor (Github, Gitlab, Jira, etc) sites in order to launch a new Topcoder challenge(s). This challenge will be extending the extension to not have hard coded domains where it will inject the button, but instead to be active on all domains and read a configuration to determine if it should inject the Topcoder button. This will enable a user to support custom sites without an update to the extension code.

Requirements:

  • Update the manifest.json content_scripts.matches property so that the extension will be active on all webpages.
  • Add a function to the content_script.js that will be used to do matching against configured domains to determine if the extension should be active and try to insert the button. If the domain is not found then the extension should do nothing. This function should use the vendor associated with the value matched to set to the vendor variable.
  • Update the options.html and options.js file to include a section where there are three Vendors: Github, Gitlab, and Jira. Under each vendor there will be a textarea where a user can enter one or more regular expressions to be used for determining if a site should be inspected for the button injection. By default each vendor will have the base URL currently being used in the extension:
            Github: "https://github.com/*",
            Gitlab: "https://gitlab.com/*",
            Jira: "https://appirio.atlassian.net/*"

On save of the options the vendor configuration should be saved in ChromeStorage. Use the other options values as an example of how the vendor specific match values should be saved. There should also be a reset option for each vendor that will set the textarea back to the original value.

  • Add tests for the code you add/update that following the current testing conventions in the extension.

Setup & Reference:

  • Use dev mode when working on the extension locally. This is configured in the options of the extension.
  • See the README for details around running the extension locally.
  • For dev mode you are able to enter any value for the project id when prompted.
  • Fork this repo and work off this branch.

Submissions:

  • Upload documentation for how to run your submission
  • A video of your working solution is required
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

[$100, $50] GLIB Chrome Extension- Code refactor

Description:

This is an expansion on the GLIB-GITHUB-TOPCODER CHROME EXTENSION Challenge.

Requirements:

Refactor to encapsulate functions into objects in prep for expanded usage. What this specifically means is that we'd like to encapsulate github specific code into a well form Github javascript object. The idea being that we can then, once refactored, expand the extension to perform similar actions to those of Jira on sites like Jira, Bitbucket, Trello, Smartsheet, etc.

Setup & Reference:

Submissions:

  • Ensure good test coverage on all modules
  • Upload documentation for how to run your submission
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

Add button to Issue Detail Page

Description

In this first of several challenges, we're going to build a Chrome extension that launches challenges on the Topcoder platform with the click of a button from a Github issue.

Requirement:

The Chrome extension should:

  • add a button to any Issue Detail page inside github
  • when clicking the button, check for a Github oAuth token in extension's local storage
  • add a comment to the issue ticket stating the success (or failure) of the challenge endpoint, including the URL of the challenge created
  • fork this repo and target this branch when making pull requests

SUBMISSION:

  • Upload documentation for how to run your submission
  • Upload all your source code as a zip
  • Provide a video overview of your submission. Please describe what you did in the video.
  • Winner will be required to submit a pull request against the branch specified!

image

[$300,$150] Create Options Screen

Description:

This is an expansion on the GLIB-GITHUB-TOPCODER CHROME EXTENSION Challenge.

Requirements:

Create a settings/options screen for the extension to:

  • manage github authorization. Revoke/delete token.
  • manage topcoder authorization. Revoke/delete token.
  • map github repo to topcoder project. Take current repo path and map to an Id number. Maintain a list of repos and Ids in an array that's editable.
  • screen can be accessed from the Chrome Extensions settings list

image

Submissions:

Upload documentation for how to run your submission
Upload all your source code as a zip
Winner will be required to submit a pull request against the branch specified !

Post the repo to the shim and origin

Description:

Push the link to the issue so people can link back to here.

Requirements:

Post to the shim that it came from Github and link back to the specific issue.

Setup & Reference:

Submissions:

  • Ensure good test coverage on all modules
  • Upload documentation for how to run your submission
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

[$150] Prompt user for credentials

Description:

This is an expansion on the GLIB-GITHUB-TOPCODER CHROME EXTENSION Challenge.

Instead of hardcoding the TC username and password, prompt the user for their credentials before fetching the auth token

Requirements:

Submissions:

Upload documentation for how to run your submission
Upload all your source code as a zip
Winner will be required to submit a pull request against the branch specified !

[$75] Add settings page to chrome extension

Description:

Add a settings page to the GLIB extensions

Requirements:

  • Add ability to configure default pricing so each user can tweak rather than have it in the shim.

Setup & Reference:

Submissions:

  • Ensure good test coverage on all modules
  • Upload documentation for how to run your submission
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

[$600,$300] GLIB Chrome Extension-Gitlab integration

Description:

The GLIB-Chrome-Ext challenges are a set of challenges where we will be building out a chrome extension that inserts a button onto various vendor (Github, Gitlab, Jira, etc) sites in order to launch a new Topcoder challenge(s). The extension has been built for Github issues, and for this challenge we will be expanding the functionality to include Gitlab.

Requirements:

  • Create a vendor/Gitlab.js script that implements the required vendor functionality for a Gitlab Issue. See the vendor/Github.js file for example functionality. Only implement the single issue functionality for this challenge.
  • Gitlab oAuth application client key & secret are allowed to be embedded in the configuration for this challenge. They will be refactored out later to a more secure design.
  • Use the User Authentication chrome extension function to retrieve a gitlab access token for accessing and posting gitlab data.
  • Use the TC Challenge Mock endpoint for testing the button after it has been injected.
    • Be sure to utilize "development mode" in the extensions settings
    • Authorize on to the mock endpoint with user "mess" and password "appirio123"
  • Update the chrome extension manifest.json file and content_script.js to support your changes.
  • Insert the topcoder button before the New Issue button in the Gitlab issue and after the Update Issues button in the issues view.

image

Setup & Reference:

  • See the Github.js script in the vendor directory for an example vendor implementation. Note it is using a different OAuth service to retrieve an access token.
  • For dev mode you are able to enter any value for the project id when prompted.
  • Fork this repo and work off this branch.

Submissions:

  • Ensure good test coverage on all modules
  • Upload documentation for how to run your submission
  • A video of your working solution is required
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

[$50] Gitlab Issue Id API call incorrect

Description:

The usage of iid, while semi-functional, is incorrect on this line as per the Gitlab Documentation here and here. This is actually causing an issue with the noCacheSuffix() function as it appends a 2nd question mark into the URL thus making the URL invalid and producing a 400 error from the API

Requirements:

  • use the proper id value in RESTful style as opposed to using a URL parameter

Setup & Reference:

Submissions:

  • Ensure good test coverage on all modules
  • Upload documentation for how to run your submission
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

[$200] Add Topcoder Authorization Token fetch

Description:

This is an expansion on the GLIB-GITHUB-TOPCODER CHROME EXTENSION Challenge.

Requirements:

  • fork this repo and work off this branch
  • Add in POST call to the mock server's /oauth/access_token endpoint to fetch an authorization token and store in local storage of the extension
  • This token is to then be added to POST calls to the /challenges endpoint in a header parameter called "x-auth-access-token"
  • Credentials to use in the body of the POST are as follows:
{
    "x_auth_username": "mess",
    "x_auth_password": "appirio123"
}

The /oauth/access_token should give you pack a payload that looks like the following:

{
  "x_auth_access_token": "9b42297d-26dc-4ee7-9373-629f8016caf3",
  "expiry": "Wed, 18-May-2016 01:11:04 GMT",
  "message": "authentication successful"
}

Submissions:

Upload documentation for how to run your submission
Upload all your source code as a zip
Winner will be required to submit a pull request against the branch specified!

Gitlab Challenge posting path

Description:

Change the path that gitlab payloads POST against to /challenges/gitlab

Requirements:

  • gitlab payloads POST should goto /challenges/gitlab

Setup & Reference:

Submissions:

  • Ensure good test coverage on all modules
  • Upload documentation for how to run your submission
  • Upload all your source code as a zip for review
  • Winner will be required to submit a pull request with their winning code.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.