From 14c506ef1351c2b1c4d4b39df4279ff40ade4d1f Mon Sep 17 00:00:00 2001 From: sullis Date: Fri, 28 Jun 2019 18:11:38 -0400 Subject: [PATCH 001/101] add [openjdk11] to Travis build (#115) --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index c00bd23..69c40e3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: java jdk: - oraclejdk8 - openjdk8 +- openjdk11 before_script: - chmod a+x gradlew script: From 0a700703403336529cedc06358942d529c3311bc Mon Sep 17 00:00:00 2001 From: kebeda Date: Fri, 8 Nov 2019 17:38:49 -0600 Subject: [PATCH 002/101] Update transitive dependencies (#117) --- LICENSE.md | 2 +- build.gradle | 4 ++-- pom.xml | 4 ++-- src/main/java/com/sendgrid/Client.java | 2 -- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index 4e9ed16..01409cb 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016-2018 SendGrid, Inc. +Copyright (c) 2016-2019 SendGrid, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/build.gradle b/build.gradle index 3a4d715..4ca3d0c 100644 --- a/build.gradle +++ b/build.gradle @@ -41,8 +41,8 @@ buildscript { } dependencies { - compile 'org.apache.httpcomponents:httpcore:4.4.4' - compile 'org.apache.httpcomponents:httpclient:4.5.2' + compile 'org.apache.httpcomponents:httpcore:4.4.12' + compile 'org.apache.httpcomponents:httpclient:4.5.10' testCompile 'org.mockito:mockito-core:1.10.19' testCompile group: 'junit', name: 'junit-dep', version: '4.10' diff --git a/pom.xml b/pom.xml index 92ad782..85c4bb2 100644 --- a/pom.xml +++ b/pom.xml @@ -46,12 +46,12 @@ org.apache.httpcomponents httpcore - 4.4.4 + 4.4.12 org.apache.httpcomponents httpclient - 4.5.2 + 4.5.10 diff --git a/src/main/java/com/sendgrid/Client.java b/src/main/java/com/sendgrid/Client.java index ea8e0b2..96fd879 100644 --- a/src/main/java/com/sendgrid/Client.java +++ b/src/main/java/com/sendgrid/Client.java @@ -12,7 +12,6 @@ import org.apache.http.Header; import org.apache.http.HttpMessage; -import org.apache.http.annotation.NotThreadSafe; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.CloseableHttpResponse; @@ -28,7 +27,6 @@ import org.apache.http.impl.client.HttpClients; // Hack to get DELETE to accept a request body -@NotThreadSafe class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase { public static final String METHOD_NAME = "DELETE"; From 5dd4c8349565533b201548c371572ebe5e8d7ed0 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Fri, 31 Jan 2020 11:13:59 -0800 Subject: [PATCH 003/101] chore: prep the repo for automated releases (#123) * chore: prep repo for automated releases --- .maven.xml | 24 +++ .travis.yml | 50 +++-- CHANGELOG.md | 3 +- LICENSE.md | 2 +- Makefile | 11 + build.gradle | 155 -------------- gradle/wrapper/gradle-wrapper.jar | Bin 51348 -> 0 bytes gradle/wrapper/gradle-wrapper.properties | 6 - gradlew | 162 -------------- pom.xml | 220 +++++++++++++------- scripts/s3upload.sh | 31 --- src/test/java/com/sendgrid/LicenseTest.java | 2 +- 12 files changed, 206 insertions(+), 460 deletions(-) create mode 100644 .maven.xml create mode 100644 Makefile delete mode 100644 build.gradle delete mode 100644 gradle/wrapper/gradle-wrapper.jar delete mode 100644 gradle/wrapper/gradle-wrapper.properties delete mode 100755 gradlew delete mode 100644 scripts/s3upload.sh diff --git a/.maven.xml b/.maven.xml new file mode 100644 index 0000000..bef1ab6 --- /dev/null +++ b/.maven.xml @@ -0,0 +1,24 @@ + + + + + ossrh + ${env.SONATYPE_USERNAME} + ${env.SONATYPE_PASSWORD} + + + + + + ossrh + + true + + + ${env.GPG_EXECUTABLE} + ${env.GPG_PASSPHRASE} + + + + diff --git a/.travis.yml b/.travis.yml index 69c40e3..53cc133 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,29 +1,27 @@ language: java -jdk: -- oraclejdk8 -- openjdk8 -- openjdk11 -before_script: -- chmod a+x gradlew -script: -- ./gradlew build check -after_script: -- "./scripts/s3upload.sh" +matrix: + include: + - name: 'OpenJDK 7' + jdk: openjdk7 + - name: 'OpenJDK 8' + jdk: openjdk8 + - name: 'Oracle JDK 8' + jdk: oraclejdk8 + - jdk: openjdk11 + name: 'OpenJDK 11' + allow_failures: + - name: 'Oracle JDK 8' + - name: 'OpenJDK 7' + - name: 'OpenJDK 11' +install: + - mvn --settings .maven.xml install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V after_success: - bash <(curl -s https://codecov.io/bash) -t $CODECOV_KEY -env: - global: - - S3_POLICY: ewogICJleHBpcmF0aW9uIjogIjIxMDAtMDEtMDFUMTI6MDA6MDAuMDAwWiIsCiAgImNvbmRpdGlvbnMiOiBbCiAgICB7ImFjbCI6ICJwdWJsaWMtcmVhZCIgfSwKICAgIHsiYnVja2V0IjogInNlbmRncmlkLW9wZW4tc291cmNlIiB9LAogICAgWyJzdGFydHMtd2l0aCIsICIka2V5IiwgInNlbmRncmlkLWphdmEvIl0sCiAgICBbImNvbnRlbnQtbGVuZ3RoLXJhbmdlIiwgMjA0OCwgMjY4NDM1NDU2XSwKICAgIFsiZXEiLCAiJENvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi96aXAiXQogIF0KfQo= - - secure: Iki1btwhG1nlyjnEMu90Oh/hoatFpPiiKkqpj7siLnlLp2xbBQ2003jRsn30I3Vujes2ugvzdlHqBJ9lDwRvfGrKXcLlRvYuDQ24N2YKquEiKHUxs+iMOzTQj6Sf64KL5O0aSZd1l5rjWgsQ0qqjHW9u3l5bUjqxzrhAI2Js37U= - - secure: Khi6a4z1lfZmDEDV738MOiWznRcTv5ILZUM+igEw2txX7PGX+B5909WridpAijTGiurJ6eda7jvsUgci8DTPQCXB18LD6N870hnPcSQkuI6zDAhKTx+w/ZsfPLWh28sP2CVzbqGdxaitZDKxRWaVmKnBZpyi8XI9UKjmyK2sjwE= - - secure: wKXAjjBgCLM4h++nP1xDQQtYU10JbwwynY0XB920SoQjI2Uu82cMPtkEXFWTpzyIS2hE5B3qvu75VHNdLqDUtek3e3lBg5k3SpYgGin20dg3SDEJrvA4vlvcApdQ132pMEWdDOVwzbXhm9+JTjALYbc3fX+VAQX1u5daPyeDGC4= -notifications: - hipchat: - rooms: - secure: j/23RY7nDWHMrpIcZiiwH3ORsWnmkZrMWKfv761RnJviYBQJy1cDEmvsyZy5w2AlE1w+CLNm+G7SI35N2eKZqtked+pWcx3nBN+bVmt7uRXmj16Oc5x2ztX6QWs3xFtUfGiA8t17q/LGRZlw9SiNI+SbP2wBHDJl66+KZWTppjbcmz/Rdax2OKj843Zx92bqsdAOjsdfwFm3B4isHQjE6hoS9u0MtIQ4KpkX4xOTJSF/r0RpIYWI37E41dDmdjLWIsYnj01P9dI+IQLN5OIfsaVQGWLVV9YkHjsEzOspJHBz8Mf40ADY76Exm/V+phRS2Q4tmAsAPXQ9lchS3uooat9z3RlfSxfIhVbjxTDLN7E/PMXCYAMKRU2FUqDYQoX3qSZBT9717Agz84T15S7l4g009bzzTgoHVpJjHVhNCRR1hWfaWFj7oRi8s0BDhQCclZ0ug+s//29LQWViSOvK7/prhJJwqDOD+GciVE4VDe1NFj7vhDTuIoWYU87D8zuZadLMz2jz1w67Oa1jJ1Ok64iFTqBS9AKQAfPKeQq9dZQ4SKMlS1Zyr8Y013ebp8CG01I8TZYQiBdbyhzYkAVSaz4x+Qh3n6WPJLJA0FUuQFcn3p1UQS/I16U2253F7w5t+7wU2DMj8k8k7ZN373FZc1ZWngX5ljR6nMoJNR73opg= - template: - - '%{repository} - Build %{build_number} on branch %{branch} by %{author}: %{message} - View on GitHub' - format: html - notify: true +deploy: + - provider: script + script: mvn clean deploy --settings .maven.xml -DskipTests=true -B -U -Prelease + skip_cleanup: true + on: + tags: true + jdk: openjdk8 + branch: master diff --git a/CHANGELOG.md b/CHANGELOG.md index bfd40b5..21ff231 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). -## [4.2.0] - 2017-10-30 +[2017-10-30] Version 4.2.0 +--------------------------- ### Added - [Pull #22](https://github.com/sendgrid/java-http-client/pull/22): Allow setting both `apache http client` and `test` parameters - BIG thanks to [Maxim Novak](https://github.com/maximn) for the pull request! diff --git a/LICENSE.md b/LICENSE.md index 01409cb..46f2eff 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016-2019 SendGrid, Inc. +Copyright (c) 2016-2020 Twilio SendGrid, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6ef6dc7 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +.PHONY: install test test-integration clean + +install: + @java -version || (echo "Java is not installed, please install Java >= 7"; exit 1); + mvn clean install -DskipTests=true -Dgpg.skip -B + +test: + mvn test + +clean: + mvn clean diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 4ca3d0c..0000000 --- a/build.gradle +++ /dev/null @@ -1,155 +0,0 @@ -/** - * Commands: - * - gradle build - * - gradle test - * - gradle assemble - * - gradle uploadArchives - * - * To execute the 'uploadArchives' task, the following properties must be specified - * in an external 'gradle.properties' file: - * - sonatypeUsername - * - sonatypePassword - */ - -apply plugin: 'java' -apply plugin: 'maven' -apply plugin: 'signing' -apply plugin: 'com.github.johnrengelman.shadow' - -group = 'com.sendgrid' -version = '4.2.0' -ext.packaging = 'jar' - -allprojects { - apply plugin: 'java' - sourceCompatibility = 1.7 - targetCompatibility = 1.7 -} - -if (!hasProperty("sonatypeUsername")) { - ext.sonatypeUsername = null - ext.sonatypePassword = null -} - -buildscript { - dependencies { - classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4' - } - repositories { - jcenter() - } -} - -dependencies { - compile 'org.apache.httpcomponents:httpcore:4.4.12' - compile 'org.apache.httpcomponents:httpclient:4.5.10' - testCompile 'org.mockito:mockito-core:1.10.19' - testCompile group: 'junit', name: 'junit-dep', version: '4.10' - -} - -repositories { - mavenCentral() -} - -allprojects { - gradle.projectsEvaluated { - tasks.withType(JavaCompile) { - options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" - } - } -} - -// adds 'with-dependencies' to the shadowJar name -shadowJar { - classifier 'jar' - baseName "sendgrid-java-http-client" - version version -} -jar { - manifest { - attributes("Implementation-Title": "http", "Implementation-Version": version) - } -} - -// copy shadowJar to base project directory so they will be in git (and on github for download) -build << { - copy { - println "Copying ${shadowJar.archiveName} to $projectDir/repo/com/sendgrid/$version" - from("$buildDir/libs/${shadowJar.archiveName}") - into("$projectDir/repo/com/sendgrid/$version") - } - copy { - println "Copying ${shadowJar.archiveName} to $projectDir/repo/com/sendgrid" - from("$buildDir/libs/${shadowJar.archiveName}") - into("$projectDir/repo/com/sendgrid") - } - tasks.renameSendGridVersionJarToSendGridJar.execute() -} - -task renameSendGridVersionJarToSendGridJar { - doLast { - file("$projectDir/repo/com/sendgrid/${shadowJar.archiveName}").renameTo(file("$projectDir/repo/com/sendgrid/http-jar.jar")) - } -} - -task javadocJar(type: Jar, dependsOn: javadoc) { - classifier = 'javadoc' - from 'build/docs/javadoc' -} - -task sourcesJar(type: Jar) { - from sourceSets.main.allSource - classifier = 'sources' -} - -signing { - required { gradle.taskGraph.hasTask("uploadArchives") } - sign configurations.archives -} - -uploadArchives { - repositories { - mavenDeployer { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } - repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { - authentication(userName: sonatypeUsername, password: sonatypePassword) - } - - pom.project { - name 'http' - packaging 'jar' - description 'A simple HTTP client' - url 'https://github.com/sendgrid/java-http-client' - - scm { - url 'scm:git@github.com:sendgrid/java-http-client.git' - connection 'scm:git@github.com:sendgrid/java-http-client.git' - developerConnection 'scm:git@github.com:sendgrid/java-http-client.git' - } - - licenses { - license { - name 'MIT License' - url 'http://opensource.org/licenses/MIT' - distribution 'repo' - } - } - - developers { - developer { - id 'thinkingserious' - name 'Elmer Thomas' - } - } - } - } - } -} - -artifacts { - archives shadowJar - archives jar - archives javadocJar - archives sourcesJar -} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 0087cd3b18659b5577cf6ad3ef61f8eb9416ebba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51348 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

CflOl1i4(-2^1KXo)&I5QlgjRKFQgM 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 z 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 7177a30..0000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Mon May 26 17:38:02 PDT 2014 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip \ No newline at end of file diff --git a/gradlew b/gradlew deleted file mode 100755 index e659319..0000000 --- a/gradlew +++ /dev/null @@ -1,162 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" \ No newline at end of file diff --git a/pom.xml b/pom.xml index 85c4bb2..fd77d99 100644 --- a/pom.xml +++ b/pom.xml @@ -1,80 +1,146 @@ - 4.0.0 - - org.sonatype.oss - oss-parent - 7 - - com.sendgrid - http - jar - A simple HTTP client - HTTP REST client, simplified for Java - 4.2.0 - https://github.com/sendgrid/java-http-client - - - The MIT License (MIT) - https://github.com/sendgrid/java-http-client/blob/master/LICENSE - repo - - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + 4.0.0 + + org.sonatype.oss + oss-parent + 7 + + com.sendgrid + java-http-client + jar + A simple HTTP client + HTTP REST client, simplified for Java + 4.2.0 https://github.com/sendgrid/java-http-client - scm:git:git@github.com:sendgrid/java-http-client.git - scm:git:git@github.com:sendgrid/java-http-client.git - HEAD - - - 1.8 - 1.8 - - - - junit - junit-dep - 4.10 - test - - - org.mockito - mockito-core - 1.10.19 - test - - - org.apache.httpcomponents - httpcore - 4.4.12 - - - org.apache.httpcomponents - httpclient - 4.5.10 - - - - - - org.jacoco - jacoco-maven-plugin - 0.7.7.201606060606 - - - - prepare-agent - - - - report - test - - report - - - - - - + + + The MIT License (MIT) + https://github.com/sendgrid/java-http-client/blob/master/LICENSE + repo + + + + https://github.com/sendgrid/java-http-client + scm:git:git@github.com:sendgrid/java-http-client.git + scm:git:git@github.com:sendgrid/java-http-client.git + HEAD + + + 1.8 + 1.8 + + + + junit + junit-dep + 4.10 + test + + + org.mockito + mockito-core + 1.10.19 + test + + + org.apache.httpcomponents + httpcore + 4.4.12 + + + org.apache.httpcomponents + httpclient + 4.5.10 + + + + + + org.jacoco + jacoco-maven-plugin + 0.7.7.201606060606 + + + + prepare-agent + + + + report + test + + report + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-release-plugin + 2.4.2 + + + org.apache.maven.scm + maven-scm-provider-gitexe + 1.8.1 + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.1 + + + jar-with-dependencies + + + + + make-assembly + package + + single + + + + + + diff --git a/scripts/s3upload.sh b/scripts/s3upload.sh deleted file mode 100644 index b9bd916..0000000 --- a/scripts/s3upload.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -# From: -# http://raamdev.com/2008/using-curl-to-upload-files-via-post-to-amazon-s3/ - -GIT_VERSION=`git rev-parse --short HEAD` - -curl -X POST \ - -F "key=http/versions/http-$GIT_VERSION.jar" \ - -F "acl=public-read" \ - -F "AWSAccessKeyId=$S3_ACCESS_KEY" \ - -F "Policy=$S3_POLICY" \ - -F "Signature=$S3_SIGNATURE" \ - -F "Content-Type=application/zip" \ - -F "file=@./repo/com/sendgrid/http-jar.jar" \ - https://s3.amazonaws.com/$S3_BUCKET - -if [ "$TRAVIS_BRANCH" = "master" ] -then - curl -X POST \ - -F "key=http/http.jar" \ - -F "acl=public-read" \ - -F "AWSAccessKeyId=$S3_ACCESS_KEY" \ - -F "Policy=$S3_POLICY" \ - -F "Signature=$S3_SIGNATURE" \ - -F "Content-Type=application/zip" \ - -F "file=@./repo/com/sendgrid/http-jar.jar" \ - https://s3.amazonaws.com/$S3_BUCKET -fi - -exit 0 \ No newline at end of file diff --git a/src/test/java/com/sendgrid/LicenseTest.java b/src/test/java/com/sendgrid/LicenseTest.java index 057060b..f6de14e 100644 --- a/src/test/java/com/sendgrid/LicenseTest.java +++ b/src/test/java/com/sendgrid/LicenseTest.java @@ -21,7 +21,7 @@ public void testLicenseShouldHaveCorrectYear() throws IOException { } } } - String expectedCopyright = String.format("Copyright (c) 2016-%d SendGrid, Inc.", Calendar.getInstance().get(Calendar.YEAR)); + String expectedCopyright = String.format("Copyright (c) 2016-%d Twilio SendGrid, Inc.", Calendar.getInstance().get(Calendar.YEAR)); Assert.assertEquals("License has incorrect year", copyrightText, expectedCopyright); } } From fb9d42a2cc11df95cb385420c17383b6ca0e024c Mon Sep 17 00:00:00 2001 From: Twilio Date: Sat, 1 Feb 2020 00:38:42 +0000 Subject: [PATCH 004/101] [Librarian] Version Bump --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21ff231..c4fce8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,37 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2020-02-01] Version 4.3.0 +-------------------------- +**Library - Feature** +- [PR #25](https://github.com/sendgrid/java-http-client/pull/25): do not close or manage lifecycle of http-client passed in. Thanks to [@maxxedev](https://github.com/maxxedev)! +- [PR #34](https://github.com/sendgrid/java-http-client/pull/34): Add close method to Client. Thanks to [@tsuyoshizawa](https://github.com/tsuyoshizawa)! +- [PR #67](https://github.com/sendgrid/java-http-client/pull/67): Adding Docker support. Thanks to [@mithunsasidharan](https://github.com/mithunsasidharan)! + +**Library - Fix** +- [PR #26](https://github.com/sendgrid/java-http-client/pull/26): use .equals to compare strings. Thanks to [@maxxedev](https://github.com/maxxedev)! +- [PR #36](https://github.com/sendgrid/java-http-client/pull/36): No longer throwing IOExceptions on non 2xx response codes. Thanks to [@andy-trimble](https://github.com/andy-trimble)! +- [PR #77](https://github.com/sendgrid/java-http-client/pull/77): Closes #72 Update Example.java. Thanks to [@AbdulDroid](https://github.com/AbdulDroid)! + +**Library - Chore** +- [PR #54](https://github.com/sendgrid/java-http-client/pull/54): Added example file, updated .gitignore and README. Thanks to [@dhsrocha](https://github.com/dhsrocha)! +- [PR #58](https://github.com/sendgrid/java-http-client/pull/58): added .codeclimate,yml for codeclimate run. Thanks to [@skshelar](https://github.com/skshelar)! +- [PR #73](https://github.com/sendgrid/java-http-client/pull/73): Fixes #71. Thanks to [@huytranrjc](https://github.com/huytranrjc)! +- [PR #76](https://github.com/sendgrid/java-http-client/pull/76): Update travis - add codecov. Thanks to [@pushkyn](https://github.com/pushkyn)! +- [PR #92](https://github.com/sendgrid/java-http-client/pull/92): update LICENSE - bump year. Thanks to [@pushkyn](https://github.com/pushkyn)! +- [PR #115](https://github.com/sendgrid/java-http-client/pull/115): add [openjdk11] to Travis build. Thanks to [@sullis](https://github.com/sullis)! +- [PR #117](https://github.com/sendgrid/java-http-client/pull/117): Update transitive dependencies. Thanks to [@kebeda](https://github.com/kebeda)! +- [PR #123](https://github.com/sendgrid/java-http-client/pull/123): prep the repo for automated releases. Thanks to [@eshanholtz](https://github.com/eshanholtz)! + +**Library - Docs** +- [PR #59](https://github.com/sendgrid/java-http-client/pull/59): Typos in CONTRIBUTING.md. Thanks to [@rkaranam](https://github.com/rkaranam)! +- [PR #113](https://github.com/sendgrid/java-http-client/pull/113): Add our Developer Experience Engineer career opportunity to the READM…. Thanks to [@mptap](https://github.com/mptap)! + +**Library - Test** +- [PR #66](https://github.com/sendgrid/java-http-client/pull/66): Test to check year in license file. Thanks to [@pushkyn](https://github.com/pushkyn)! +- [PR #93](https://github.com/sendgrid/java-http-client/pull/93): removed tests that were testing for files that didnt exist, bumped gradle version to 4.10.2. Thanks to [@Strum355](https://github.com/Strum355)! + + [2017-10-30] Version 4.2.0 --------------------------- ### Added From d1ea6341b6458534db89e2229bfccc9dacbb9adb Mon Sep 17 00:00:00 2001 From: Twilio Date: Sat, 1 Feb 2020 00:40:55 +0000 Subject: [PATCH 005/101] Release 4.3.0 --- README.md | 6 +- pom.xml | 290 +++++++++++++++++++++++++++--------------------------- 2 files changed, 148 insertions(+), 148 deletions(-) diff --git a/README.md b/README.md index 43a297c..7936033 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ All updates to this project is documented in our [CHANGELOG](https://github.com/ ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.2.0' + compile 'com.sendgrid:java-http-client:4.3.0' } repositories { @@ -55,7 +55,7 @@ repositories { com.sendgrid java-http-client - 4.2.0 + 4.3.0 ``` @@ -139,7 +139,7 @@ cd examples javac -classpath {path_to}/sendgrid-java-http-client-4.0.0-jar.jar:. Example.java && java -classpath {path_to}/sendgrid-java-http-client-4.0.0-jar.jar:. Example ``` -## Environment Variables +## Environment Variables You can do the following to create a .env file: diff --git a/pom.xml b/pom.xml index fd77d99..b847962 100644 --- a/pom.xml +++ b/pom.xml @@ -1,146 +1,146 @@ - - 4.0.0 - - org.sonatype.oss - oss-parent - 7 - - com.sendgrid - java-http-client - jar - A simple HTTP client - HTTP REST client, simplified for Java - 4.2.0 + + + 4.0.0 + + org.sonatype.oss + oss-parent + 7 + + com.sendgrid + java-http-client + jar + A simple HTTP client + HTTP REST client, simplified for Java + 4.3.0 + https://github.com/sendgrid/java-http-client + + + The MIT License (MIT) + https://github.com/sendgrid/java-http-client/blob/master/LICENSE + repo + + + https://github.com/sendgrid/java-http-client - - - The MIT License (MIT) - https://github.com/sendgrid/java-http-client/blob/master/LICENSE - repo - - - - https://github.com/sendgrid/java-http-client - scm:git:git@github.com:sendgrid/java-http-client.git - scm:git:git@github.com:sendgrid/java-http-client.git - HEAD - - - 1.8 - 1.8 - - - - junit - junit-dep - 4.10 - test - - - org.mockito - mockito-core - 1.10.19 - test - - - org.apache.httpcomponents - httpcore - 4.4.12 - - - org.apache.httpcomponents - httpclient - 4.5.10 - - - - - - org.jacoco - jacoco-maven-plugin - 0.7.7.201606060606 - - - - prepare-agent - - - - report - test - - report - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-release-plugin - 2.4.2 - - - org.apache.maven.scm - maven-scm-provider-gitexe - 1.8.1 - - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-assembly-plugin - 3.1.1 - - - jar-with-dependencies - - - - - make-assembly - package - - single - - - - - - - + scm:git:git@github.com:sendgrid/java-http-client.git + scm:git:git@github.com:sendgrid/java-http-client.git + 4.3.0 + + + 1.8 + 1.8 + + + + junit + junit-dep + 4.10 + test + + + org.mockito + mockito-core + 1.10.19 + test + + + org.apache.httpcomponents + httpcore + 4.4.12 + + + org.apache.httpcomponents + httpclient + 4.5.10 + + + + + + org.jacoco + jacoco-maven-plugin + 0.7.7.201606060606 + + + + prepare-agent + + + + report + test + + report + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-release-plugin + 2.4.2 + + + org.apache.maven.scm + maven-scm-provider-gitexe + 1.8.1 + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.1 + + + jar-with-dependencies + + + + + make-assembly + package + + single + + + + + + + \ No newline at end of file From e2bbf5a97cd6e89199088dcf8b7609e00a5987ad Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Mon, 3 Feb 2020 10:54:08 -0800 Subject: [PATCH 006/101] chore: update Makefile to move jar during install --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 6ef6dc7..3b375d0 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,10 @@ .PHONY: install test test-integration clean +VERSION := $(shell mvn help:evaluate -Dexpression=project.version | grep -e '^[^\[]') install: @java -version || (echo "Java is not installed, please install Java >= 7"; exit 1); mvn clean install -DskipTests=true -Dgpg.skip -B + cp target/java-http-client-$(VERSION).jar java-http-client.jar test: mvn test From bf1272475f9f8483a44d8455ded6333795873da8 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Mon, 3 Feb 2020 10:55:11 -0800 Subject: [PATCH 007/101] update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index b5c5801..4268a51 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ repo/ # Environment files .env/*.* + +java-http-client.jar From 5c25f1ede1c75de26341124fd291b2f7fdeb8b04 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Mon, 3 Feb 2020 11:41:48 -0800 Subject: [PATCH 008/101] Version Bump From 9fb94056eab0bbefcf9635d9390136a74c23a4e8 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Mon, 3 Feb 2020 14:36:59 -0800 Subject: [PATCH 009/101] Version Bump --- pom.xml | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b847962..91ee25e 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,103 @@ scm:git:git@github.com:sendgrid/java-http-client.git 4.3.0 + + + gpg + + false + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + ${gpg.keyname} + ${gpg.passphrase} + + --pinentry-mode + loopback + + + + + + + + release + + + release + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.8 + true + + ossrh + https://oss.sonatype.org/ + true + + + + org.apache.maven.plugins + maven-source-plugin + 3.0.1 + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.4 + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + + + 1.8 1.8 @@ -143,4 +240,4 @@ - \ No newline at end of file + From e7a592731f0059aa38f18ca377294a233bb58ced Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Mon, 3 Feb 2020 16:09:19 -0800 Subject: [PATCH 010/101] Version Bump --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 53cc133..4cd5a3a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,6 @@ language: java +before_install: + - echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import || true matrix: include: - name: 'OpenJDK 7' From fdaecdc6b41e0ffe41b34e13caf78cb7df022065 Mon Sep 17 00:00:00 2001 From: childish-sambino Date: Tue, 4 Feb 2020 12:04:41 -0600 Subject: [PATCH 011/101] fix: update Makefile target --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3b375d0..04f2a2f 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ VERSION := $(shell mvn help:evaluate -Dexpression=project.version | grep -e '^[^ install: @java -version || (echo "Java is not installed, please install Java >= 7"; exit 1); mvn clean install -DskipTests=true -Dgpg.skip -B - cp target/java-http-client-$(VERSION).jar java-http-client.jar + cp target/java-http-client-$(VERSION).jar java-http-client.jar test: mvn test From 076c59ce6a9214239dd476279de44f11d0c604dd Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Tue, 4 Feb 2020 12:46:23 -0600 Subject: [PATCH 012/101] fix: version command updated --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 04f2a2f..dd38561 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ .PHONY: install test test-integration clean -VERSION := $(shell mvn help:evaluate -Dexpression=project.version | grep -e '^[^\[]') +VERSION := $(shell mvn help:evaluate -Dexpression=project.version --batch-mode | grep -e '^[^\[]') install: @java -version || (echo "Java is not installed, please install Java >= 7"; exit 1); mvn clean install -DskipTests=true -Dgpg.skip -B From a30c5412ae77cf03ea91fb03d74874cf6045cd66 Mon Sep 17 00:00:00 2001 From: childish-sambino Date: Tue, 4 Feb 2020 15:23:56 -0600 Subject: [PATCH 013/101] docs: baseline all the templated markdown docs (#126) --- .github/ISSUE_TEMPLATE | 17 ---- .github/PULL_REQUEST_TEMPLATE | 24 ------ CODE_OF_CONDUCT.md | 82 +++++++++++++------ CONTRIBUTING.md | 2 +- ISSUE_TEMPLATE.md | 26 ++++++ LICENSE.md | 16 ++-- PULL_REQUEST_TEMPLATE.md | 31 +++++++ src/test/java/com/sendgrid/LicenseTest.java | 2 +- .../com/sendgrid/TestRequiredFilesExist.java | 12 +-- 9 files changed, 130 insertions(+), 82 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE delete mode 100644 .github/PULL_REQUEST_TEMPLATE create mode 100644 ISSUE_TEMPLATE.md create mode 100644 PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE b/.github/ISSUE_TEMPLATE deleted file mode 100644 index 5588c7f..0000000 --- a/.github/ISSUE_TEMPLATE +++ /dev/null @@ -1,17 +0,0 @@ -#### Issue Summary - -A summary of the issue and the environment in which it occurs. If suitable, include the steps required to reproduce the bug. Please feel free to include screenshots, screencasts, code examples. - - -#### Steps to Reproduce - -1. This is the first step -2. This is the second step -3. Further steps, etc. - -Any other information you want to share that is relevant to the issue being reported. Especially, why do you consider this to be a bug? What do you expect to happen instead? - -#### Technical details: - -* java-http-client Version: master (latest commit: [commit number]) -* Java Version: X.X diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE deleted file mode 100644 index 7ad590b..0000000 --- a/.github/PULL_REQUEST_TEMPLATE +++ /dev/null @@ -1,24 +0,0 @@ - -# Fixes # - -### Checklist -- [ ] I have made a material change to the repo (functionality, testing, spelling, grammar) -- [ ] I have read the [Contribution Guide] and my PR follows them. -- [ ] I updated my branch with the master branch. -- [ ] I have added tests that prove my fix is effective or that my feature works -- [ ] I have added necessary documentation about the functionality in the appropriate .md file -- [ ] I have added in line documentation to the code I modified - -### Short description of what this PR does: -- -- - -If you have questions, please send an email to [Sendgrid](mailto:dx@sendgrid.com), or file a Github Issue in this repository. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index e3ce656..2f0727e 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,41 +1,73 @@ -# SendGrid Community Code of Conduct +# Contributor Covenant Code of Conduct -The SendGrid open source community is made up of members from around the globe with a diverse set of skills, personalities, and experiences. It is through these differences that our community experiences successes and continued growth. When you're working with members of the community, we encourage you to follow these guidelines, which help steer our interactions and strive to maintain a positive, successful and growing community. +## Our Pledge -### Be Open -Members of the community are open to collaboration, whether it's on pull requests, code reviews, approvals, issues or otherwise. We're receptive to constructive comments and criticism, as the experiences and skill sets of all members contribute to the whole of our efforts. We're accepting of all who wish to take part in our activities, fostering an environment where anyone can participate, and everyone can make a difference. +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. -### Be Considerate -Members of the community are considerate of their peers, which include other contributors and users of SendGrid. We're thoughtful when addressing the efforts of others, keeping in mind that often the labor was completed with the intent of the good of the community. We're attentive in our communications, whether in person or online, and we're tactful when approaching differing views. +## Our Standards -### Be Respectful -Members of the community are respectful. We're respectful of others, their positions, their skills, their commitments and their efforts. We're respectful of the volunteer efforts that permeate the SendGrid community. We're respectful of the processes outlined in the community, and we work within them. When we disagree, we are courteous in raising our issues. Overall, we're good to each other. We contribute to this community not because we have to, but because we want to. If we remember that, these guidelines will come naturally. +Examples of behavior that contributes to creating a positive environment +include: -## Additional Guidance +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members -### Disclose Potential Conflicts of Interest -Community discussions often involve interested parties. We expect participants to be aware when they are conflicted due to employment or other projects they are involved in and disclose those interests to other project members. When in doubt, over-disclose. Perceived conflicts of interest are important to address so that the community’s decisions are credible even when unpopular, difficult or favorable to the interests of one group over another. +Examples of unacceptable behavior by participants include: -### Interpretation -This Code is not exhaustive or complete. It is not a rulebook; it serves to distill our common understanding of a collaborative, shared environment and goals. We expect it to be followed in spirit as much as in the letter. When in doubt, try to abide by [SendGrid’s cultural values](https://sendgrid.com/blog/employee-engagement-the-4h-way) defined by our “4H’s”: Happy, Hungry, Humble and Honest. +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting -### Enforcement -Most members of the SendGrid community always comply with this Code, not because of the existence of this Code, but because they have long experience participating in open source communities where the conduct described above is normal and expected. However, failure to observe this Code may be grounds for suspension, reporting the user for abuse or changing permissions for outside contributors. +## Our Responsibilities -## If you have concerns about someone’s conduct -**Initiate Direct Contact** - It is always appropriate to email a community member (if contact information is available), mention that you think their behavior was out of line, and (if necessary) point them to this Code. +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. -**Discuss Publicly** - Discussing publicly is always acceptable. Note, though, that approaching the person directly may be better, as it tends to make them less defensive, and it respects the time of other community members, so you probably want to try direct contact first. +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. -**Contact the Moderators** - You can reach the SendGrid moderators by emailing dx@sendgrid.com. +## Scope -## Submission to SendGrid Repositories -Finally, just a reminder, changes to the SendGrid repositories will only be accepted upon completion of the [SendGrid Contributor Agreement](https://cla.sendgrid.com). +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at open-source@twilio.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. ## Attribution -SendGrid thanks the following, on which it draws for content and inspiration: +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html -* [Python Community Code of Conduct](https://www.python.org/psf/codeofconduct/) -* [Open Source Initiative General Code of Conduct](https://opensource.org/codeofconduct) -* [Apache Code of Conduct](https://www.apache.org/foundation/policies/conduct.html) \ No newline at end of file +[homepage]: https://www.contributor-covenant.org diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bd3c598..b0ce38c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -51,7 +51,7 @@ Before you decide to create a new issue, please try the following: ### Please use our Bug Report Template -In order to make the process easier, we've included a [sample bug report template](https://github.com/sendgrid/java-http-client/blob/master/.github/ISSUE_TEMPLATE) (borrowed from [Ghost](https://github.com/TryGhost/Ghost/)). The template uses [GitHub flavored markdown](https://help.github.com/articles/github-flavored-markdown/) for formatting. +In order to make the process easier, we've included a [sample bug report template](https://github.com/sendgrid/java-http-client/blob/master/ISSUE_TEMPLATE.md) (borrowed from [Ghost](https://github.com/TryGhost/Ghost/)). The template uses [GitHub flavored markdown](https://help.github.com/articles/github-flavored-markdown/) for formatting. ## Improvements to the Codebase diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..86334bd --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,26 @@ + + +### Issue Summary +A summary of the issue and the environment in which it occurs. If suitable, include the steps required to reproduce the bug. Please feel free to include screenshots, screencasts, or code examples. + +### Steps to Reproduce +1. This is the first step +2. This is the second step +3. Further steps, etc. + +### Code Snippet +```java +# paste code here +``` + +### Exception/Log +``` +# paste exception/log here +``` + +### Technical details: +* java-http-client version: +* java version: + diff --git a/LICENSE.md b/LICENSE.md index 46f2eff..29aba59 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,13 +1,13 @@ -The MIT License (MIT) +MIT License -Copyright (c) 2016-2020 Twilio SendGrid, Inc. +Copyright (C) 2020, Twilio SendGrid, Inc. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..215059a --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,31 @@ + + +# Fixes # + +A short description of what this PR does. + +### Checklist +- [ ] I acknowledge that all my contributions will be made under the project's license +- [ ] I have made a material change to the repo (functionality, testing, spelling, grammar) +- [ ] I have read the [Contribution Guidelines](CONTRIBUTING.md) and my PR follows them +- [ ] I have titled the PR appropriately +- [ ] I have updated my branch with the master branch +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] I have added necessary documentation about the functionality in the appropriate .md file +- [ ] I have added inline documentation to the code I modified + +If you have questions, please file a [support ticket](https://twilio.com/help/contact), or create a GitHub Issue in this repository. diff --git a/src/test/java/com/sendgrid/LicenseTest.java b/src/test/java/com/sendgrid/LicenseTest.java index f6de14e..493458e 100644 --- a/src/test/java/com/sendgrid/LicenseTest.java +++ b/src/test/java/com/sendgrid/LicenseTest.java @@ -21,7 +21,7 @@ public void testLicenseShouldHaveCorrectYear() throws IOException { } } } - String expectedCopyright = String.format("Copyright (c) 2016-%d Twilio SendGrid, Inc.", Calendar.getInstance().get(Calendar.YEAR)); + String expectedCopyright = String.format("Copyright (C) %d, Twilio SendGrid, Inc. ", Calendar.getInstance().get(Calendar.YEAR)); Assert.assertEquals("License has incorrect year", copyrightText, expectedCopyright); } } diff --git a/src/test/java/com/sendgrid/TestRequiredFilesExist.java b/src/test/java/com/sendgrid/TestRequiredFilesExist.java index a6421a9..01b43c9 100644 --- a/src/test/java/com/sendgrid/TestRequiredFilesExist.java +++ b/src/test/java/com/sendgrid/TestRequiredFilesExist.java @@ -12,7 +12,7 @@ public class TestRequiredFilesExist { new File("./docker/Docker").exists(); assertTrue(dockerExists); } - + /* // ./docker-compose.yml or ./docker/docker-compose.yml @Test public void checkDockerComposeExists() { boolean dockerComposeExists = new File("./docker-compose.yml").exists() || @@ -23,7 +23,7 @@ public class TestRequiredFilesExist { @Test public void checkEnvSampleExists() { assertTrue(new File("./.env_sample").exists()); } */ - + // ./.gitignore @Test public void checkGitIgnoreExists() { assertTrue(new File("./.gitignore").exists()); @@ -54,9 +54,9 @@ public class TestRequiredFilesExist { assertTrue(new File("./CONTRIBUTING.md").exists()); } - // ./.github/ISSUE_TEMPLATE + // ./ISSUE_TEMPLATE.md @Test public void checkIssuesTemplateExists() { - assertTrue(new File("./.github/ISSUE_TEMPLATE").exists()); + assertTrue(new File("./ISSUE_TEMPLATE.md").exists()); } // ./LICENSE.md @@ -64,9 +64,9 @@ public class TestRequiredFilesExist { assertTrue(new File("./LICENSE.md").exists()); } - // ./.github/PULL_REQUEST_TEMPLATE + // ./PULL_REQUEST_TEMPLATE.md @Test public void checkPullRequestExists() { - assertTrue(new File("./.github/PULL_REQUEST_TEMPLATE").exists()); + assertTrue(new File("./PULL_REQUEST_TEMPLATE.md").exists()); } // ./README.md From e3bd84ba8a12a7a7e1a95e8d1aa8486eda9ffdb4 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 5 Feb 2020 19:04:36 +0000 Subject: [PATCH 014/101] [Librarian] Version Bump --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4fce8d..558a9e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2020-02-05] Version 4.3.1 +-------------------------- +**Library - Docs** +- [PR #126](https://github.com/sendgrid/java-http-client/pull/126): baseline all the templated markdown docs. Thanks to [@childish-sambino](https://github.com/childish-sambino)! + + [2020-02-01] Version 4.3.0 -------------------------- **Library - Feature** From 9b22b4e6617d9dc23f427576f212b69fa2405cea Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 5 Feb 2020 19:16:51 +0000 Subject: [PATCH 015/101] Release 4.3.1 --- README.md | 4 ++-- pom.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7936033..3856965 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ All updates to this project is documented in our [CHANGELOG](https://github.com/ ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.0' + compile 'com.sendgrid:java-http-client:4.3.1' } repositories { @@ -55,7 +55,7 @@ repositories { com.sendgrid java-http-client - 4.3.0 + 4.3.1 ``` diff --git a/pom.xml b/pom.xml index 91ee25e..5640010 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.0 + 4.3.1 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.0 + 4.3.1 @@ -240,4 +240,4 @@ - + \ No newline at end of file From 98190c4ad1d6daedcca38997963f45a234bbedc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Vin=C3=ADcius?= Date: Wed, 19 Feb 2020 11:44:51 -0300 Subject: [PATCH 016/101] Update the Client file documentation (#111) --- src/main/java/com/sendgrid/Client.java | 96 +++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/sendgrid/Client.java b/src/main/java/com/sendgrid/Client.java index 96fd879..340f12c 100644 --- a/src/main/java/com/sendgrid/Client.java +++ b/src/main/java/com/sendgrid/Client.java @@ -26,7 +26,10 @@ import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; -// Hack to get DELETE to accept a request body + +/** + * Hack to get DELETE to accept a request body. + */ class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase { public static final String METHOD_NAME = "DELETE"; @@ -41,6 +44,7 @@ public HttpDeleteWithBody(final String uri) { } } + /** * Class Client allows for quick and easy access any REST or REST-like API. */ @@ -50,6 +54,7 @@ public class Client implements Closeable { private Boolean test; private boolean createdHttpClient; + /** * Constructor for using the default CloseableHttpClient. */ @@ -59,6 +64,7 @@ public Client() { this.createdHttpClient = true; } + /** * Constructor for passing in an httpClient, typically for mocking. Passed-in httpClient will not be closed * by this Client. @@ -70,8 +76,9 @@ public Client(CloseableHttpClient httpClient) { this(httpClient, false); } + /** - * Constructor for passing in a test parameter to allow for http calls + * Constructor for passing in a test parameter to allow for http calls. * * @param test * is a Bool @@ -80,8 +87,9 @@ public Client(Boolean test) { this(HttpClients.createDefault(), test); } + /** - * Constructor for passing in a an httpClient and test parameter to allow for http calls + * Constructor for passing in an httpClient and test parameter to allow for http calls. * * @param httpClient * an Apache CloseableHttpClient @@ -104,6 +112,8 @@ public Client(CloseableHttpClient httpClient, Boolean test) { * (e.g. "/your/endpoint/path") * @param queryParams * map of key, values representing the query parameters + * @throws URISyntaxException + * in of a URI syntax error */ public URI buildUri(String baseUri, String endpoint, Map queryParams) throws URISyntaxException { URIBuilder builder = new URIBuilder(); @@ -133,11 +143,15 @@ public URI buildUri(String baseUri, String endpoint, Map queryPa return uri; } + /** * Prepare a Response object from an API call via Apache's HTTP client. * * @param response * from a call to a CloseableHttpClient + * @throws IOException + * in case of a network error + * @return the response object */ public Response getResponse(CloseableHttpResponse response) throws IOException { ResponseHandler handler = new SendGridResponseHandler(); @@ -154,9 +168,18 @@ public Response getResponse(CloseableHttpResponse response) throws IOException { return new Response(statusCode, responseBody, responseHeaders); } + /** * Make a GET request and provide the status code, response body and * response headers. + * + * @param request + * the request object + * @throws URISyntaxException + * in case of a URI syntax error + * @throws IOException + * in case of a network error + * @return the response object */ public Response get(Request request) throws URISyntaxException, IOException { URI uri = null; @@ -177,9 +200,18 @@ public Response get(Request request) throws URISyntaxException, IOException { return executeApiCall(httpGet); } + /** * Make a POST request and provide the status code, response body and * response headers. + * + * @param request + * the request object + * @throws URISyntaxException + * in case of a URI syntax error + * @throws IOException + * in case of a network error + * @return the response object */ public Response post(Request request) throws URISyntaxException, IOException { URI uri = null; @@ -204,9 +236,18 @@ public Response post(Request request) throws URISyntaxException, IOException { return executeApiCall(httpPost); } + /** * Make a PATCH request and provide the status code, response body and * response headers. + * + * @param request + * the request object + * @throws URISyntaxException + * in case of a URI syntax error + * @throws IOException + * in case of a network error + * @return the response object */ public Response patch(Request request) throws URISyntaxException, IOException { URI uri = null; @@ -231,9 +272,18 @@ public Response patch(Request request) throws URISyntaxException, IOException { return executeApiCall(httpPatch); } + /** * Make a PUT request and provide the status code, response body and * response headers. + * + * @param request + * the request object + * @throws URISyntaxException + * in case of a URI syntax error + * @throws IOException + * in case of a network error + * @return the response object */ public Response put(Request request) throws URISyntaxException, IOException { URI uri = null; @@ -258,8 +308,17 @@ public Response put(Request request) throws URISyntaxException, IOException { return executeApiCall(httpPut); } + /** * Make a DELETE request and provide the status code and response headers. + * + * @param request + * the request object + * @throws URISyntaxException + * in case of a URI syntax error + * @throws IOException + * in case of a network error + * @return the response object */ public Response delete(Request request) throws URISyntaxException, IOException { URI uri = null; @@ -290,6 +349,16 @@ private void writeContentTypeIfNeeded(Request request, HttpMessage httpMessage) } } + + /** + * Makes a call to the client API. + * + * @param httpPost + * the request method object + * @throws IOException + * in case of a network error + * @return the response object + */ private Response executeApiCall(HttpRequestBase httpPost) throws IOException { try { CloseableHttpResponse serverResponse = httpClient.execute(httpPost); @@ -303,8 +372,15 @@ private Response executeApiCall(HttpRequestBase httpPost) throws IOException { } } + /** * A thin wrapper around the HTTP methods. + * + * @param request + * the request object + * @throws IOException + * in case of a network error + * @return the response object */ public Response api(Request request) throws IOException { try { @@ -334,11 +410,25 @@ public Response api(Request request) throws IOException { } } + + /** + * Closes the http client. + * + * @throws IOException + * in case of a network error + */ @Override public void close() throws IOException { this.httpClient.close(); } + + /** + * Closes and finalizes the http client. + * + * @throws Throwable + * in case of an error + */ @Override public void finalize() throws Throwable { try { From c7c56cd7a37a0caa5426d3ff8aa1e970ac4dde24 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 19 Feb 2020 19:57:22 +0000 Subject: [PATCH 017/101] [Librarian] Version Bump --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 558a9e0..3397599 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2020-02-19] Version 4.3.2 +-------------------------- +**Library - Chore** +- [PR #111](https://github.com/sendgrid/java-http-client/pull/111): Update the Client file documentation. Thanks to [@vinifarias](https://github.com/vinifarias)! + + [2020-02-05] Version 4.3.1 -------------------------- **Library - Docs** From e709a4a38815b0e2e776856731314203ece471ef Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 19 Feb 2020 20:13:33 +0000 Subject: [PATCH 018/101] Release 4.3.2 --- README.md | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3856965..43708ea 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ All updates to this project is documented in our [CHANGELOG](https://github.com/ ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.1' + compile 'com.sendgrid:java-http-client:4.3.2' } repositories { @@ -55,7 +55,7 @@ repositories { com.sendgrid java-http-client - 4.3.1 + 4.3.2 ``` diff --git a/pom.xml b/pom.xml index 5640010..0e5c97a 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.1 + 4.3.2 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.1 + 4.3.2 From 241cb1a73cc599f1d7ca4d520c4ab27c02e145a1 Mon Sep 17 00:00:00 2001 From: childish-sambino Date: Tue, 25 Feb 2020 09:25:44 -0600 Subject: [PATCH 019/101] chore: fix JDK Travis failures (#127) * chore: fix JDK Travis failures * upgrade jacoco for Java 11 compatibility --- .travis.yml | 25 ++++++++++++++----------- pom.xml | 4 ++-- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4cd5a3a..6e0de63 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,20 +1,23 @@ language: java before_install: - - echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import || true + - echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import --batch || true matrix: include: - - name: 'OpenJDK 7' - jdk: openjdk7 - - name: 'OpenJDK 8' - jdk: openjdk8 - - name: 'Oracle JDK 8' - jdk: oraclejdk8 + - jdk: openjdk7 + dist: trusty + - jdk: openjdk8 + dist: xenial - jdk: openjdk11 - name: 'OpenJDK 11' + dist: xenial + - jdk: oraclejdk7 + dist: precise + - jdk: oraclejdk8 + dist: trusty + - jdk: oraclejdk11 + dist: trusty allow_failures: - - name: 'Oracle JDK 8' - - name: 'OpenJDK 7' - - name: 'OpenJDK 11' + - jdk: openjdk7 + - jdk: oraclejdk7 install: - mvn --settings .maven.xml install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V after_success: diff --git a/pom.xml b/pom.xml index 0e5c97a..eb20da8 100644 --- a/pom.xml +++ b/pom.xml @@ -156,7 +156,7 @@ org.jacoco jacoco-maven-plugin - 0.7.7.201606060606 + 0.8.5 @@ -240,4 +240,4 @@ - \ No newline at end of file + From 0b872e3b0aab5100b7df1a08157a493469ce3ab6 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 4 Mar 2020 21:20:13 +0000 Subject: [PATCH 020/101] [Librarian] Version Bump --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3397599..eb4658f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2020-03-04] Version 4.3.3 +-------------------------- +**Library - Chore** +- [PR #127](https://github.com/sendgrid/java-http-client/pull/127): fix JDK Travis failures. Thanks to [@childish-sambino](https://github.com/childish-sambino)! + + [2020-02-19] Version 4.3.2 -------------------------- **Library - Chore** From c64597078d7125fa6ff4ef5fb5a2a1a56e906234 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 4 Mar 2020 21:32:44 +0000 Subject: [PATCH 021/101] Release 4.3.3 --- README.md | 4 ++-- pom.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 43708ea..5ff18df 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ All updates to this project is documented in our [CHANGELOG](https://github.com/ ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.2' + compile 'com.sendgrid:java-http-client:4.3.3' } repositories { @@ -55,7 +55,7 @@ repositories { com.sendgrid java-http-client - 4.3.2 + 4.3.3 ``` diff --git a/pom.xml b/pom.xml index eb20da8..ed458ba 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.2 + 4.3.3 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.2 + 4.3.3 @@ -240,4 +240,4 @@ - + \ No newline at end of file From 3aaabdc55ada759d11cca449cd79d089b8a5c1fc Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Fri, 3 Apr 2020 15:23:06 -0500 Subject: [PATCH 022/101] chore: update Travis CI Slack notifications --- .travis.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.travis.yml b/.travis.yml index 6e0de63..d83ff52 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,3 +30,11 @@ deploy: tags: true jdk: openjdk8 branch: master + +notifications: + slack: + if: branch = master + on_success: never + on_failure: change + rooms: + - secure: K5X3v1dEP7Kg0MUYj8fMwyvEtQVG2iNr0URcEBfdWiH8XSST669p66TKbvo8e9PeZGfAkXJ+aqQBrqjxuNZAdMOOsGSVcIGkO8lOPK0EiiubggnDPUlaaJxm7+kV1IJJLstR5Xnj0t8Mt2adPQia+izG+4lWhTYSN1LtxKzwM0aDu3GnqA4uRRDZvQe44LhXAd3YbUTTZX5geWD7X1QS34iRnAWxmxGulBRoXSVfe0kf8womrz+wksgF/g6+yOxR+teKDogVUnBmBxpua+Z2lSMOLLPwjbRy8Y57M9F4DWpKH96WFQEEBFE0GBs+ygMkMbC5xQ6XEyEF9ArcF2IOxvroCM7wRXvEwnslcinoH11B6PTyUvjQrYB7KSMNpiJAi67f4G/LtoAMgy9lJklG/K7glG9oVSM8eREhGzFUyHsq+zwnCieKi57vb4+BYRoaiSy8Le1oH4sZ53DuXmrP/LStuAb8lP8svSzM8oAltC/NLxSCQt6tdS+CdX7Us/zaqcLtWdgvq1xqFhJiYv1iv3Odi37hRn7F/JhcDzN89BK9hbkCawR2MQ+ND41COzkhs0oEgVTj5gjYUJc9Y2Utac1ONvUF3x0NC3EyjSPiEKgtyYjaa5z+hPkAWR9LMqMQa1pKpfHXwkGsMeXJ4HisKl/L8U3rhccM0h5dkGRIPjU= From 2b5c611d4b55d015d357cf85e67099a35b5036fd Mon Sep 17 00:00:00 2001 From: childish-sambino Date: Mon, 6 Apr 2020 11:09:44 -0500 Subject: [PATCH 023/101] Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index d83ff52..45726f9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,6 +34,7 @@ deploy: notifications: slack: if: branch = master + on_pull_requests: false on_success: never on_failure: change rooms: From b5f4ca99b2f92c823e2e71d5876852db3b7fa394 Mon Sep 17 00:00:00 2001 From: childish-sambino Date: Wed, 8 Apr 2020 15:18:51 -0500 Subject: [PATCH 024/101] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5ff18df..685a6d6 100644 --- a/README.md +++ b/README.md @@ -172,4 +172,4 @@ java-http-client is guided and supported by the SendGrid [Developer Experience T java-http-client is maintained and funded by SendGrid, Inc. The names and logos for java-http-client are trademarks of SendGrid, Inc. # License -[The MIT License (MIT)](LICENSE.txt) +[The MIT License (MIT)](LICENSE.md) From b5a7285aedba67382db30d9a2a14ee97d4ae124c Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Wed, 8 Apr 2020 16:13:48 -0500 Subject: [PATCH 025/101] docs: cleanup support/help/contact information --- CONTRIBUTING.md | 2 -- README.md | 8 ++++---- docker/README.md | 8 +------- docker/USAGE.md | 9 +-------- 4 files changed, 6 insertions(+), 21 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b0ce38c..a3f0d5c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -194,5 +194,3 @@ Please run your code through: 7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) with a clear title and description against the `master` branch. All tests must be passing before we will review the PR. - -If you have any additional questions, please feel free to [email](mailto:dx@sendgrid.com) us or create an issue in this repo. diff --git a/README.md b/README.md index 685a6d6..ebaabe5 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,6 @@ If you are looking for the SendGrid API client library, please see [this repo](h # Announcements -**NEW:** If you're a software engineer who is passionate about #DeveloperExperience and/or #OpenSource, [this is an incredible opportunity to join our #DX team](https://sendgrid.com/careers/role/1421152/?gh_jid=1421152) as a Developer Experience Engineer and work with [@thinkingserious](https://github.com/thinkingserious) and [@aroach](https://github.com/aroach)! Tell your friends :) - All updates to this project is documented in our [CHANGELOG](https://github.com/sendgrid/java-http-client/blob/master/CHANGELOG.md). @@ -167,9 +165,11 @@ Quick links: # About -java-http-client is guided and supported by the SendGrid [Developer Experience Team](mailto:dx@sendgrid.com). +java-http-client is maintained and funded by Twilio SendGrid, Inc. The names and logos for java-http-client are trademarks of Twilio SendGrid, Inc. + +If you need help installing or using the library, please check the [Twilio SendGrid Support Help Center](https://support.sendgrid.com). -java-http-client is maintained and funded by SendGrid, Inc. The names and logos for java-http-client are trademarks of SendGrid, Inc. +If you've instead found a bug in the library or would like new features added, go ahead and open issues or pull requests against this repo! # License [The MIT License (MIT)](LICENSE.md) diff --git a/docker/README.md b/docker/README.md index 6a7e0cb..3af57b8 100644 --- a/docker/README.md +++ b/docker/README.md @@ -28,10 +28,4 @@ Due to Oracle's JDK license, you must build this Docker image using the official For more detailed information, see [USAGE.md](https://github.com/sendgrid/java-http-client/blob/master/docker/USAGE.md). -# About - -java-http-client is guided and supported by the SendGrid [Developer Experience Team](mailto:dx@sendgrid.com). - -java-http-client is maintained and funded by SendGrid, Inc. The names and logos for java-http-client are trademarks of SendGrid, Inc. - -![SendGrid Logo](https://uiux.s3.amazonaws.com/2016-logos/email-logo%402x.png) \ No newline at end of file +![SendGrid Logo](https://uiux.s3.amazonaws.com/2016-logos/email-logo%402x.png) diff --git a/docker/USAGE.md b/docker/USAGE.md index 7b4245e..9fbfb81 100644 --- a/docker/USAGE.md +++ b/docker/USAGE.md @@ -25,11 +25,4 @@ You can mount repositories in the `/mnt/java-http-client` and `/mnt/java-http-cl # Testing Testing is easy! Run the container, `cd sendgrid`, and run `./gradlew test`. - -# About - -java-http-client is guided and supported by the SendGrid [Developer Experience Team](mailto:dx@sendgrid.com). - -java-http-client is maintained and funded by SendGrid, Inc. The names and logos for java-http-client are trademarks of SendGrid, Inc. - -![SendGrid Logo](https://uiux.s3.amazonaws.com/2016-logos/email-logo%402x.png) \ No newline at end of file +![SendGrid Logo](https://uiux.s3.amazonaws.com/2016-logos/email-logo%402x.png) From 96f0f9ccbb43cac36039d645ca1e485170444fe0 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Fri, 29 May 2020 10:01:26 -0500 Subject: [PATCH 026/101] docs: shorten and correct the issue template link --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a3f0d5c..331cc28 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -51,7 +51,7 @@ Before you decide to create a new issue, please try the following: ### Please use our Bug Report Template -In order to make the process easier, we've included a [sample bug report template](https://github.com/sendgrid/java-http-client/blob/master/ISSUE_TEMPLATE.md) (borrowed from [Ghost](https://github.com/TryGhost/Ghost/)). The template uses [GitHub flavored markdown](https://help.github.com/articles/github-flavored-markdown/) for formatting. +In order to make the process easier, we've included a [sample bug report template](ISSUE_TEMPLATE.md). ## Improvements to the Codebase From 977d893838cc4128976c5ea4ddf68ff1f5bc23ec Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Mon, 13 Jul 2020 10:24:46 -0500 Subject: [PATCH 027/101] chore: drop the CLA links --- CONTRIBUTING.md | 16 ---------------- README.md | 1 - 2 files changed, 17 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 331cc28..efa6673 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,5 @@ Hello! Thank you for choosing to help contribute to one of the SendGrid open source projects. There are many ways you can contribute and help is always welcome. We simply ask that you follow the following contribution policies. -- [CLAs and CCLAs](#cla) -- [Roadmap & Milestones](#roadmap) - [Feature Request](#feature-request) - [Submit a Bug Report](#submit-a-bug-report) - [Improvements to the Codebase](#improvements-to-the-codebase) @@ -10,22 +8,8 @@ Hello! Thank you for choosing to help contribute to one of the SendGrid open sou - [Style Guidelines & Naming Conventions](#style-guidelines-and-naming-conventions) - [Creating a Pull Request](#creating-a-pull-request) - We use [Milestones](https://github.com/sendgrid/java-http-client/milestones) to help define current roadmaps, please feel free to grab an issue from the current milestone. Please indicate that you have begun work on it to avoid collisions. Once a PR is made, community review, comments, suggestions and additional PRs are welcomed and encouraged. - -## CLAs and CCLAs - -Before you get started, SendGrid requires that a SendGrid Contributor License Agreement (CLA) be filled out by every contributor to a SendGrid open source project. - -Our goal with the CLA is to clarify the rights of our contributors and reduce other risks arising from inappropriate contributions. The CLA also clarifies the rights SendGrid holds in each contribution and helps to avoid misunderstandings over what rights each contributor is required to grant to SendGrid when making a contribution. In this way the CLA encourages broad participation by our open source community and helps us build strong open source projects, free from any individual contributor withholding or revoking rights to any contribution. - -SendGrid does not merge a pull request made against a SendGrid open source project until that pull request is associated with a signed CLA. Copies of the CLA are available [here](https://gist.github.com/SendGridDX/98b42c0a5d500058357b80278fde3be8#file-sendgrid_cla). - -When you create a Pull Request, after a few seconds, a comment will appear with a link to the CLA. Click the link and fill out the brief form and then click the "I agree" button and you are all set. You will not be asked to re-sign the CLA unless we make a change. - -There are a few ways to contribute, which we'll enumerate below: - ## Feature Request diff --git a/README.md b/README.md index ebaabe5..a65b454 100644 --- a/README.md +++ b/README.md @@ -159,7 +159,6 @@ Quick links: - [Feature Request](https://github.com/sendgrid/java-http-client/blob/master/CONTRIBUTING.md#feature-request) - [Bug Reports](https://github.com/sendgrid/java-http-client/blob/master/CONTRIBUTING.md#submit-a-bug-report) -- [Sign the CLA to Create a Pull Request](https://github.com/sendgrid/java-http-client/blob/master/CONTRIBUTING.md#cla) - [Improvements to the Codebase](https://github.com/sendgrid/java-http-client/blob/master/CONTRIBUTING.md#improvements-to-the-codebase) From 219efa235d5ba8238830f2d719990d6b78d9e537 Mon Sep 17 00:00:00 2001 From: Andrew Joshua Loria Date: Fri, 17 Jul 2020 08:27:18 -0700 Subject: [PATCH 028/101] docs: Create a Use Cases Directory (#108) --- use_cases/README.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 use_cases/README.md diff --git a/use_cases/README.md b/use_cases/README.md new file mode 100644 index 0000000..657a022 --- /dev/null +++ b/use_cases/README.md @@ -0,0 +1,5 @@ +This documentation provides examples for specific SendGrid v3 API use cases. Please [open an issue](https://github.com/sendgrid/java-http-client/issues) or make a pull request for any email use cases you would like us to document here. Thank you! + +# Email Use Cases + +# Non-mail Use Cases From 9124e09439a80bab0bfd056c7f7528a79616a922 Mon Sep 17 00:00:00 2001 From: Chandler Weiner Date: Fri, 17 Jul 2020 11:40:39 -0400 Subject: [PATCH 029/101] fix: correct the LICENSE.md link in pom.xml (#109) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ed458ba..431158a 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ The MIT License (MIT) - https://github.com/sendgrid/java-http-client/blob/master/LICENSE + https://github.com/sendgrid/java-http-client/blob/master/LICENSE.md repo From ca7dbdfdc587ae678e1cac51f4d8e2acb4d6f3c1 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 22 Jul 2020 18:59:45 +0000 Subject: [PATCH 030/101] [Librarian] Version Bump --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb4658f..75550a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2020-07-22] Version 4.3.4 +-------------------------- +**Library - Fix** +- [PR #109](https://github.com/sendgrid/java-http-client/pull/109): correct the LICENSE.md link in pom.xml. Thanks to [@crweiner](https://github.com/crweiner)! + +**Library - Docs** +- [PR #108](https://github.com/sendgrid/java-http-client/pull/108): Create a Use Cases Directory. Thanks to [@ajloria](https://github.com/ajloria)! + + [2020-03-04] Version 4.3.3 -------------------------- **Library - Chore** From ef54a97375135c5a576e69f0282426a806f10325 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 22 Jul 2020 19:27:08 +0000 Subject: [PATCH 031/101] Release 4.3.4 --- README.md | 4 ++-- pom.xml | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a65b454..d45b126 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ All updates to this project is documented in our [CHANGELOG](https://github.com/ ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.3' + compile 'com.sendgrid:java-http-client:4.3.4' } repositories { @@ -53,7 +53,7 @@ repositories { com.sendgrid java-http-client - 4.3.3 + 4.3.4 ``` diff --git a/pom.xml b/pom.xml index 431158a..b23487a 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.3 + 4.3.4 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.3 + 4.3.4 @@ -131,7 +131,7 @@ junit junit-dep - 4.10 + 4.11 test @@ -143,12 +143,12 @@ org.apache.httpcomponents httpcore - 4.4.12 + 4.4.13 org.apache.httpcomponents httpclient - 4.5.10 + 4.5.12 From 433224cb0b8b30e112a714fd4e824de1228f284a Mon Sep 17 00:00:00 2001 From: Matheus Mendes Date: Tue, 31 Oct 2017 19:30:19 -0200 Subject: [PATCH 032/101] Add code review section into contributing.md --- CONTRIBUTING.md | 4 ++++ README.md | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index efa6673..7c9cc8d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,6 +7,7 @@ Hello! Thank you for choosing to help contribute to one of the SendGrid open sou - [Testing](#testing) - [Style Guidelines & Naming Conventions](#style-guidelines-and-naming-conventions) - [Creating a Pull Request](#creating-a-pull-request) +- [Code Reviews](#code-reviews) We use [Milestones](https://github.com/sendgrid/java-http-client/milestones) to help define current roadmaps, please feel free to grab an issue from the current milestone. Please indicate that you have begun work on it to avoid collisions. Once a PR is made, community review, comments, suggestions and additional PRs are welcomed and encouraged. @@ -178,3 +179,6 @@ Please run your code through: 7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) with a clear title and description against the `master` branch. All tests must be passing before we will review the PR. + +## Code Reviews +If you can, please look at open PRs and review them. Give feedback and help us merge these PRs much faster! If you don't know how, GitHub has some great [information on how to review a Pull Request](https://help.github.com/articles/about-pull-request-reviews/). diff --git a/README.md b/README.md index d45b126..ef259d0 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ If you are looking for the SendGrid API client library, please see [this repo](h # Announcements -All updates to this project is documented in our [CHANGELOG](https://github.com/sendgrid/java-http-client/blob/master/CHANGELOG.md). +All updates to this project are documented in our [CHANGELOG](https://github.com/sendgrid/java-http-client/blob/master/CHANGELOG.md). # Installation @@ -157,9 +157,10 @@ We encourage contribution to our projects please see our [CONTRIBUTING](https:// Quick links: -- [Feature Request](https://github.com/sendgrid/java-http-client/blob/master/CONTRIBUTING.md#feature-request) -- [Bug Reports](https://github.com/sendgrid/java-http-client/blob/master/CONTRIBUTING.md#submit-a-bug-report) -- [Improvements to the Codebase](https://github.com/sendgrid/java-http-client/blob/master/CONTRIBUTING.md#improvements-to-the-codebase) +- [Feature Request](CONTRIBUTING.md#feature-request) +- [Bug Reports](CONTRIBUTING.md#submit-a-bug-report) +- [Improvements to the Codebase](CONTRIBUTING.md#improvements-to-the-codebase) +- [Review Pull Requests](CONTRIBUTING.md#Code-Reviews) # About From ad40f2ee86abc6414604a89651be62dded0dbbc6 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Mon, 27 Jul 2020 17:11:47 -0500 Subject: [PATCH 033/101] chore: update README to reflect default branch rename --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ef259d0..8c19c48 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ If you are looking for the SendGrid API client library, please see [this repo](h # Announcements +**The default branch name for this repository has been changed to `main` as of 07/27/2020.** + All updates to this project are documented in our [CHANGELOG](https://github.com/sendgrid/java-http-client/blob/master/CHANGELOG.md). From 805d0b67abd0290b89c5ee5db59b0480a01dc44c Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Tue, 28 Jul 2020 09:56:35 -0500 Subject: [PATCH 034/101] chore: update CI config to use new default branch name --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 45726f9..df6431a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,11 +29,11 @@ deploy: on: tags: true jdk: openjdk8 - branch: master + branch: main notifications: slack: - if: branch = master + if: branch = main on_pull_requests: false on_success: never on_failure: change From 795ca9b052671e48ccba63d7d59d5ff8b265e412 Mon Sep 17 00:00:00 2001 From: Morten Nissen Date: Wed, 29 Jul 2020 18:03:02 +0200 Subject: [PATCH 035/101] docs: Moved usage and enviorment variables to USAGE.md (#86) * Moved the example and example link along with the environment variables to the USAGE.md * Changed the Table of Contents to reference the new USAGE.md --- README.md | 33 +-------------------------------- USAGE.md | 10 +++++++++- 2 files changed, 10 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 8c19c48..6b5c87f 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ If you are looking for the SendGrid API client library, please see [this repo](h * [Announcements](#announcements) * [Installation](#installation) * [Quick Start](#quick-start) -* [Usage](#usage) +* [Usage](./USAGE.md) * [Roadmap](#roadmap) * [How to Contribute](#contribute) * [About](#about) @@ -116,37 +116,6 @@ try { } ``` - -# Usage - -- [Example Code](https://github.com/sendgrid/java-http-client/tree/master/examples) -- [Library Usage Documentation](USAGE.md) - - -The example uses SendGrid, you can get your free account [here](https://sendgrid.com/free?source=java-http-client). - -First, update your environment with your [SENDGRID_API_KEY](https://app.sendgrid.com/settings/api_keys). - -```bash -echo "export SENDGRID_API_KEY='YOUR_API_KEY'" > sendgrid.env -echo "sendgrid.env" >> .gitignore -source ./sendgrid.env -``` - -```bash -mvn package -cd examples -javac -classpath {path_to}/sendgrid-java-http-client-4.0.0-jar.jar:. Example.java && java -classpath {path_to}/sendgrid-java-http-client-4.0.0-jar.jar:. Example -``` - -## Environment Variables - -You can do the following to create a .env file: - -```cp .env_example .env``` - -Then, just add your API Key into your .env file. - # Roadmap diff --git a/USAGE.md b/USAGE.md index 40c3f83..c3a9ad1 100644 --- a/USAGE.md +++ b/USAGE.md @@ -16,4 +16,12 @@ source ./sendgrid.env mvn package cd examples javac -classpath {path_to}/sendgrid-java-http-client-4.0.0-jar.jar:. Example.java && java -classpath {path_to}/sendgrid-java-http-client-4.0.0-jar.jar:. Example -``` \ No newline at end of file +``` + +## Environment Variables + +You can do the following to create a .env file: + +```cp .env_example .env``` + +Then, just add your API Key into your .env file. \ No newline at end of file From 43c450beb6e23cf8b0b5d538ab125d8411062108 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Wed, 29 Jul 2020 14:20:46 -0500 Subject: [PATCH 036/101] chore: drop the unused s3 uploader --- scripts/generate_upload_policy.php | 62 ------------------------------ scripts/s3policy.json | 10 ----- 2 files changed, 72 deletions(-) delete mode 100644 scripts/generate_upload_policy.php delete mode 100644 scripts/s3policy.json diff --git a/scripts/generate_upload_policy.php b/scripts/generate_upload_policy.php deleted file mode 100644 index 18fdf82..0000000 --- a/scripts/generate_upload_policy.php +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env php -$blocksize) - $key=pack('H*', $hashfunc($key)); - $key=str_pad($key,$blocksize,chr(0x00)); - $ipad=str_repeat(chr(0x36),$blocksize); - $opad=str_repeat(chr(0x5c),$blocksize); - $hmac = pack( - 'H*',$hashfunc( - ($key^$opad).pack( - 'H*',$hashfunc( - ($key^$ipad).$data - ) - ) - ) - ); - return bin2hex($hmac); -} - -/* - * Used to encode a field for Amazon Auth - * (taken from the Amazon S3 PHP example library) - */ -function hex2b64($str) -{ - $raw = ''; - for ($i=0; $i < strlen($str); $i+=2) - { - $raw .= chr(hexdec(substr($str, $i, 2))); - } - return base64_encode($raw); -} - -if (count($argv) != 3) { - echo "Usage: " . $argv[0] . " \n"; - exit(1); -} - -$policy = file_get_contents($argv[1]); -$secret = $argv[2]; - -/* - * Base64 encode the Policy Document and then - * create HMAC SHA-1 signature of the base64 encoded policy - * using the secret key. Finally, encode it for Amazon Authentication. - */ -$base64_policy = base64_encode($policy); -$signature = hex2b64(hmacsha1($secret, $base64_policy)); -echo "S3_POLICY=\"" . $base64_policy . "\"\nS3_SIGNATURE=\"" . $signature . "\"\n" -?> diff --git a/scripts/s3policy.json b/scripts/s3policy.json deleted file mode 100644 index 487f00c..0000000 --- a/scripts/s3policy.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "expiration": "2100-01-01T12:00:00.000Z", - "conditions": [ - {"acl": "public-read" }, - {"bucket": "sendgrid-open-source" }, - ["starts-with", "$key", "http/"], - ["content-length-range", 2048, 268435456], - ["eq", "$Content-Type", "application/zip"] - ] -} \ No newline at end of file From bb18f64db346f6f7c97c59676dccec719e169387 Mon Sep 17 00:00:00 2001 From: Twilio Date: Mon, 3 Aug 2020 22:30:19 +0000 Subject: [PATCH 037/101] docs: Update templated markdown docs to use new default branch name --- ISSUE_TEMPLATE.md | 6 +++++- PULL_REQUEST_TEMPLATE.md | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 86334bd..b05b163 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,5 +1,9 @@ ### Issue Summary @@ -21,6 +25,6 @@ A summary of the issue and the environment in which it occurs. If suitable, incl ``` ### Technical details: -* java-http-client version: +* java-http-client version: * java version: diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index 215059a..a868180 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -23,7 +23,7 @@ A short description of what this PR does. - [ ] I have made a material change to the repo (functionality, testing, spelling, grammar) - [ ] I have read the [Contribution Guidelines](CONTRIBUTING.md) and my PR follows them - [ ] I have titled the PR appropriately -- [ ] I have updated my branch with the master branch +- [ ] I have updated my branch with the main branch - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have added necessary documentation about the functionality in the appropriate .md file - [ ] I have added inline documentation to the code I modified From 2cd339a2bbc184a0263359e09d592e82301e5e0c Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 5 Aug 2020 19:24:19 +0000 Subject: [PATCH 038/101] [Librarian] Version Bump --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75550a0..e3adc03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2020-08-05] Version 4.3.5 +-------------------------- +**Library - Docs** +- [PR #86](https://github.com/sendgrid/java-http-client/pull/86): Moved usage and enviorment variables to USAGE.md. Thanks to [@rareinator](https://github.com/rareinator)! + + [2020-07-22] Version 4.3.4 -------------------------- **Library - Fix** From 41975d687c5914f6dde485665bb3605cd0ccbca9 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 5 Aug 2020 19:51:33 +0000 Subject: [PATCH 039/101] Release 4.3.5 --- README.md | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6b5c87f..3a7a0a7 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ All updates to this project are documented in our [CHANGELOG](https://github.com ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.4' + compile 'com.sendgrid:java-http-client:4.3.5' } repositories { @@ -55,7 +55,7 @@ repositories { com.sendgrid java-http-client - 4.3.4 + 4.3.5 ``` diff --git a/pom.xml b/pom.xml index b23487a..ff7fb89 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.4 + 4.3.5 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.4 + 4.3.5 From 5fd52299197be32ea52df158fee9d5cb84064023 Mon Sep 17 00:00:00 2001 From: Varpie Date: Tue, 11 Aug 2020 19:10:39 +0200 Subject: [PATCH 040/101] docs: Add first timers file (#101) --- FIRST_TIMERS.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 FIRST_TIMERS.md diff --git a/FIRST_TIMERS.md b/FIRST_TIMERS.md new file mode 100644 index 0000000..b1d0386 --- /dev/null +++ b/FIRST_TIMERS.md @@ -0,0 +1,65 @@ +# How To Contribute to Twilio SendGrid Repositories via GitHub + +Contributing to the Twilio SendGrid repositories is easy! All you need to do is find an open issue (see the bottom of this page for a list of repositories containing open issues), fix it and submit a pull request. Once you have submitted your pull request, the team can easily review it before it is merged into the repository. + +To make a pull request, follow these steps: + +1. Log into GitHub. If you do not already have a GitHub account, you will have to create one in order to submit a change. Click the Sign up link in the upper right-hand corner to create an account. Enter your username, password, and email address. If you are an employee of Twilio SendGrid, please use your full name with your GitHub account and enter Twilio SendGrid as your company so we can easily identify you. + + + +Once signed in, go to the repository you want to modify. There are two different options: either modifying the file directly on the GitHub website (useful when it is a single file) or forking the repository. + +### Single file modification + +2. Once you are viewing a file you want to modify in GitHub, click the pencil icon to begin editing: + + + +3. Once you have made your changes, you will be given the option of creating a new branch in a Pull Request. This is a request to create a copy, or branch, of the original Docs but with your changes. Once your changes are approved, your branch will then be merged back into the original. + +4. To create a Pull Request, you’ll have to fill out a Commit Changes form. Follow the built-in template and provide information about any changes you have made to the page. Leave the default branch option and name. + +5. When done, click **Propose file change**. The team will be notified of your request, and will be able to process it. + +### Forking the repository + +2. Once you are viewing the repository, click the **Fork** button (top right corner) to create a new fork. Doing so will create a fork of the repository that you will be able to access from your profile. + +3. Make changes to the fork, either by using the web interface as described above or by [cloning](https://help.github.com/articles/cloning-a-repository/) your repository. + +4. Once you have made your changes, if they have been made in your local machine, you will need to commit the changes and push them to GitHub. + +5. Create a [pull request](https://help.github.com/articles/creating-a-pull-request/#changing-the-branch-range-and-destination-repository). + +### Important notice + +Before creating a pull request, make sure that you respect the repository's constraints regarding contributions. You can find them in the [CONTRIBUTING.md](CONTRIBUTING.md) file. + +## Repositories with Open, Easy, Help Wanted, Issue Filters + +* [Python SDK](https://github.com/sendgrid/sendgrid-python/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [PHP SDK](https://github.com/sendgrid/sendgrid-php/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [C# SDK](https://github.com/sendgrid/sendgrid-csharp/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Ruby SDK](https://github.com/sendgrid/sendgrid-ruby/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Node.js SDK](https://github.com/sendgrid/sendgrid-nodejs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Java SDK](https://github.com/sendgrid/sendgrid-java/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Go SDK](https://github.com/sendgrid/sendgrid-go/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Python STMPAPI Client](https://github.com/sendgrid/smtpapi-python/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [PHP STMPAPI Client](https://github.com/sendgrid/smtpapi-php/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [C# STMPAPI Client](https://github.com/sendgrid/smtpapi-csharp/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Ruby STMPAPI Client](https://github.com/sendgrid/smtpapi-ruby/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Node.js STMPAPI Client](https://github.com/sendgrid/smtpapi-nodejs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Java STMPAPI Client](https://github.com/sendgrid/smtpapi-java/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Go STMPAPI Client](https://github.com/sendgrid/smtpapi-go/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Python HTTP Client](https://github.com/sendgrid/python-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [PHP HTTP Client](https://github.com/sendgrid/php-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [C# HTTP Client](https://github.com/sendgrid/csharp-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Java HTTP Client](https://github.com/sendgrid/java-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Ruby HTTP Client](https://github.com/sendgrid/ruby-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Go HTTP Client](https://github.com/sendgrid/rest/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Node.js HTTP Client](https://github.com/sendgrid/nodejs-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Open Source Data Collector](https://github.com/sendgrid/open-source-library-data-collector/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Open API Definition](https://github.com/sendgrid/sendgrid-oai/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [DX Automator](https://github.com/sendgrid/dx-automator/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Documentation](https://github.com/sendgrid/docs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) From fbe682b97bd4589d9fe4ef21c60bf8bc5ce6c2c1 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Tue, 11 Aug 2020 14:46:33 -0500 Subject: [PATCH 041/101] chore: update supported Java versions to match testing strategy --- .travis.yml | 7 ------- CONTRIBUTING.md | 2 +- README.md | 2 +- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index df6431a..3cdff31 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,21 +3,14 @@ before_install: - echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import --batch || true matrix: include: - - jdk: openjdk7 - dist: trusty - jdk: openjdk8 dist: xenial - jdk: openjdk11 dist: xenial - - jdk: oraclejdk7 - dist: precise - jdk: oraclejdk8 dist: trusty - jdk: oraclejdk11 dist: trusty - allow_failures: - - jdk: openjdk7 - - jdk: oraclejdk7 install: - mvn --settings .maven.xml install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V after_success: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7c9cc8d..3fcd5b7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -49,7 +49,7 @@ We welcome direct contributions to the java-http-client code base. Thank you! ##### Prerequisites ##### -- Java version Oracle JDK 8 or OpenJDK 7 +- Java 8 or 11 - Please see [build.gradle](https://github.com/sendgrid/java-http-client/blob/master/build.gradle) ##### Initial setup: ##### diff --git a/README.md b/README.md index 3a7a0a7..7a5ac84 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ All updates to this project are documented in our [CHANGELOG](https://github.com ## Prerequisites -- Java version Oracle JDK 8 or OpenJDK 7 +- Java 8 or 11 ## Install via Maven w/ Gradle From 5b113ce51ea6775eff2503c3d89f716ee64514e4 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 14 Aug 2020 20:47:36 +0300 Subject: [PATCH 042/101] docs: Correcting *.md files using Grammarly (#97) --- CHANGELOG.md | 4 ++-- CONTRIBUTING.md | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3adc03..5804188 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,14 +87,14 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### BREAKING Change - [Pull #14](https://github.com/sendgrid/java-http-client/pull/14): Make response have private variables - Fixed [Issue #12](https://github.com/sendgrid/java-http-client/issues/12): The public Response variables should be private -- The breaking change is that variables that were public are now private and accessable only via getters and setters +- The breaking change is that variables that were public are now private and accessible only via getters and setters - BIG thanks to [Diego Camargo](https://github.com/belfazt) for the pull request! ## [3.0.0] - 2016-10-06 ### BREAKING Change - [Pull #15](https://github.com/sendgrid/java-http-client/pull/15): Update the request object with sensible defaults and access methods - Fixes [Issue #13](https://github.com/sendgrid/java-http-client/issues/13): Update the Request object with sensible defaults and access methods -- The breaking change is that variables that were public are now private and accessable only via getters and setters +- The breaking change is that variables that were public are now private and accessible only via getters and setters - BIG thanks to [Diego Camargo](https://github.com/belfazt) for the pull request! ## [2.3.4] - 2016-08-09 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3fcd5b7..c74b319 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -Hello! Thank you for choosing to help contribute to one of the SendGrid open source projects. There are many ways you can contribute and help is always welcome. We simply ask that you follow the following contribution policies. +Hello! Thank you for choosing to help contribute to one of the SendGrid open source projects. There are many ways you can contribute and help is always welcome. We simply ask that you follow the following contribution policies. - [Feature Request](#feature-request) - [Submit a Bug Report](#submit-a-bug-report) @@ -9,7 +9,7 @@ Hello! Thank you for choosing to help contribute to one of the SendGrid open sou - [Creating a Pull Request](#creating-a-pull-request) - [Code Reviews](#code-reviews) -We use [Milestones](https://github.com/sendgrid/java-http-client/milestones) to help define current roadmaps, please feel free to grab an issue from the current milestone. Please indicate that you have begun work on it to avoid collisions. Once a PR is made, community review, comments, suggestions and additional PRs are welcomed and encouraged. +We use [Milestones](https://github.com/sendgrid/java-http-client/milestones) to help define current roadmaps, please feel free to grab an issue from the current milestone. Please indicate that you have begun work on it to avoid collisions. Once a PR is made, community review, comments, suggestions, and additional PRs are welcomed and encouraged. ## Feature Request @@ -31,7 +31,7 @@ A software bug is a demonstrable issue in the code base. In order for us to diag Before you decide to create a new issue, please try the following: 1. Check the Github issues tab if the identified issue has already been reported, if so, please add a +1 to the existing post. -2. Update to the latest version of this code and check if issue has already been fixed +2. Update to the latest version of this code and check if the issue has already been fixed 3. Copy and fill in the Bug Report Template we have provided below ### Please use our Bug Report Template @@ -157,7 +157,7 @@ Please run your code through: 4. Commit your changes in logical chunks. Please adhere to these [git commit message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) - or your code is unlikely be merged into the main project. Use Git's + or your code is unlikely to be merged into the main project. Use Git's [interactive rebase](https://help.github.com/articles/interactive-rebase) feature to tidy up your commits before making them public. From 803e3570a5dad160f901544e7ad819c34f5540a9 Mon Sep 17 00:00:00 2001 From: Elmer Thomas Date: Fri, 14 Aug 2020 11:11:06 -0700 Subject: [PATCH 043/101] chore: update GitHub branch references to use HEAD (#128) --- CONTRIBUTING.md | 12 ++++++------ README.md | 10 +++++----- USAGE.md | 2 +- docker/Dockerfile | 4 ++-- docker/README.md | 6 +++--- pom.xml | 2 +- twilio_sendgrid_logo.png | Bin 0 -> 14596 bytes 7 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 twilio_sendgrid_logo.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c74b319..9163345 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -50,7 +50,7 @@ We welcome direct contributions to the java-http-client code base. Thank you! ##### Prerequisites ##### - Java 8 or 11 -- Please see [build.gradle](https://github.com/sendgrid/java-http-client/blob/master/build.gradle) +- Please see [pom.xml](pom.xml) ##### Initial setup: ##### @@ -61,7 +61,7 @@ cd java-http-client ##### Execute: ##### -See the [examples folder](https://github.com/sendgrid/java-http-client/tree/master/examples) to get started quickly. +See the [examples folder](examples) to get started quickly. You will need to setup the following environment to use the SendGrid example: @@ -105,9 +105,9 @@ Provides a standard interface to an API's response. All PRs require passing tests before the PR will be reviewed. -All test files are in [`java-http-client/src/test/java/com/sendgrid`](https://github.com/sendgrid/java-http-client/tree/master/src/test/java/com/sendgrid). +All test files are in [`java-http-client/src/test/java/com/sendgrid`](src/test/java/com/sendgrid). -For the purposes of contributing to this repo, please update the [`ClientTest.java`](https://github.com/sendgrid/java-http-client/blob/master/src/test/java/com/sendgrid/ClientTest.java) file with unit tests as you modify the code. +For the purposes of contributing to this repo, please update the [`ClientTest.java`](src/test/java/com/sendgrid/ClientTest.java) file with unit tests as you modify the code. Run the tests: @@ -168,7 +168,7 @@ Please run your code through: 5. Locally merge (or rebase) the upstream development branch into your topic branch: ```bash - git pull [--rebase] upstream master + git pull [--rebase] upstream main ``` 6. Push your topic branch up to your fork: @@ -178,7 +178,7 @@ Please run your code through: ``` 7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) - with a clear title and description against the `master` branch. All tests must be passing before we will review the PR. + with a clear title and description against the `main` branch. All tests must be passing before we will review the PR. ## Code Reviews If you can, please look at open PRs and review them. Give feedback and help us merge these PRs much faster! If you don't know how, GitHub has some great [information on how to review a Pull Request](https://help.github.com/articles/about-pull-request-reviews/). diff --git a/README.md b/README.md index 7a5ac84..b153a13 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -![SendGrid Logo](https://uiux.s3.amazonaws.com/2016-logos/email-logo%402x.png) +![SendGrid Logo](twilio_sendgrid_logo.png) -[![Build Status](https://travis-ci.org/sendgrid/java-http-client.svg?branch=master)](https://travis-ci.org/sendgrid/java-http-client) +[![Build Status](https://travis-ci.org/sendgrid/java-http-client.svg?branch=main)](https://travis-ci.org/sendgrid/java-http-client) [![Maven Central](https://img.shields.io/maven-central/v/com.sendgrid/java-http-client.svg)](http://mvnrepository.com/artifact/com.sendgrid/java-http-client) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE.md) [![Twitter Follow](https://img.shields.io/twitter/follow/sendgrid.svg?style=social&label=Follow)](https://twitter.com/sendgrid) @@ -25,7 +25,7 @@ If you are looking for the SendGrid API client library, please see [this repo](h # Announcements **The default branch name for this repository has been changed to `main` as of 07/27/2020.** -All updates to this project are documented in our [CHANGELOG](https://github.com/sendgrid/java-http-client/blob/master/CHANGELOG.md). +All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). # Installation @@ -67,7 +67,7 @@ repositories { ## Dependencies -- Please see the [build.gradle file](https://github.com/sendgrid/java-http-client/blob/master/build.gradle) +- Please see the [pom.xml file](pom.xml) # Quick Start @@ -124,7 +124,7 @@ If you are interested in the future direction of this project, please take a loo # How to Contribute -We encourage contribution to our projects please see our [CONTRIBUTING](https://github.com/sendgrid/java-http-client/blob/master/CONTRIBUTING.md) guide for details. +We encourage contribution to our projects please see our [CONTRIBUTING](CONTRIBUTING.md) guide for details. Quick links: diff --git a/USAGE.md b/USAGE.md index c3a9ad1..4a01093 100644 --- a/USAGE.md +++ b/USAGE.md @@ -1,6 +1,6 @@ # Usage -- [Example Code](https://github.com/sendgrid/java-http-client/tree/master/examples) +- [Example Code](examples) The example uses SendGrid, you can get your free account [here](https://sendgrid.com/free?source=java-http-client). diff --git a/docker/Dockerfile b/docker/Dockerfile index 79a5b0b..5e2749f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,13 +1,13 @@ FROM store/oracle/serverjre:8 -ENV OAI_SPEC_URL="https://raw.githubusercontent.com/sendgrid/sendgrid-oai/master/oai_stoplight.json" +ENV OAI_SPEC_URL="https://raw.githubusercontent.com/sendgrid/sendgrid-oai/HEAD/oai_stoplight.json" RUN yum install -y git WORKDIR /root # install Prism -ADD https://raw.githubusercontent.com/stoplightio/prism/master/install.sh install.sh +ADD https://raw.githubusercontent.com/stoplightio/prism/HEAD/install.sh install.sh RUN chmod +x ./install.sh && sync && \ ./install.sh && \ rm ./install.sh diff --git a/docker/README.md b/docker/README.md index 3af57b8..fabe4c0 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,5 +1,5 @@ # Supported tags and respective `Dockerfile` links - - `v1.0.0`, `latest` [(Dockerfile)](https://github.com/sendgrid/java-http-client/blob/master/docker/Dockerfile) + - `v1.0.0`, `latest` [(Dockerfile)](Dockerfile) # Quick reference Due to Oracle's JDK license, you must build this Docker image using the official Oracle image located in the Docker Store. You will need a Docker store account. Once you have an account, you must accept the Oracle license [here](https://store.docker.com/images/oracle-serverjre-8). On the command line, type `docker login` and provide your credentials. You may then build the image using this command `docker build -t sendgrid/java-http-client -f Dockerfile .` @@ -11,7 +11,7 @@ Due to Oracle's JDK license, you must build this Docker image using the official https://github.com/sendgrid/java-http-client/issues - **Where to get more info:** - [USAGE.md](https://github.com/sendgrid/java-http-client/blob/master/docker/USAGE.md) + [USAGE.md](USAGE.md) - **Maintained by:** [SendGrid Inc.](https://sendgrid.com) @@ -26,6 +26,6 @@ Due to Oracle's JDK license, you must build this Docker image using the official $ docker run -it -v /path/to/cool-java-http-client:/mnt/java-http-client sendgrid/java-http-client ``` -For more detailed information, see [USAGE.md](https://github.com/sendgrid/java-http-client/blob/master/docker/USAGE.md). +For more detailed information, see [USAGE.md](USAGE.md). ![SendGrid Logo](https://uiux.s3.amazonaws.com/2016-logos/email-logo%402x.png) diff --git a/pom.xml b/pom.xml index ff7fb89..cebd4ce 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ The MIT License (MIT) - https://github.com/sendgrid/java-http-client/blob/master/LICENSE.md + https://github.com/sendgrid/java-http-client/blob/HEAD/LICENSE.md repo diff --git a/twilio_sendgrid_logo.png b/twilio_sendgrid_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c22239ac0cc70e10a51f828390d713edc8a29b GIT binary patch literal 14596 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 literal 0 HcmV?d00001 From 1ef0336d3851763870bb71e08e595b1e2520f24a Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Tue, 18 Aug 2020 10:11:13 -0500 Subject: [PATCH 044/101] docs: clean up and reconcile first timers documentation --- FIRST_TIMERS.md | 48 ++++++++++++++++++++++------------ static/img/github-fork.png | Bin 0 -> 15189 bytes static/img/github-sign-up.png | Bin 0 -> 116981 bytes 3 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 static/img/github-fork.png create mode 100644 static/img/github-sign-up.png diff --git a/FIRST_TIMERS.md b/FIRST_TIMERS.md index b1d0386..0b00fd5 100644 --- a/FIRST_TIMERS.md +++ b/FIRST_TIMERS.md @@ -1,38 +1,54 @@ # How To Contribute to Twilio SendGrid Repositories via GitHub - Contributing to the Twilio SendGrid repositories is easy! All you need to do is find an open issue (see the bottom of this page for a list of repositories containing open issues), fix it and submit a pull request. Once you have submitted your pull request, the team can easily review it before it is merged into the repository. To make a pull request, follow these steps: 1. Log into GitHub. If you do not already have a GitHub account, you will have to create one in order to submit a change. Click the Sign up link in the upper right-hand corner to create an account. Enter your username, password, and email address. If you are an employee of Twilio SendGrid, please use your full name with your GitHub account and enter Twilio SendGrid as your company so we can easily identify you. - + + +2. __[Fork](https://help.github.com/fork-a-repo/)__ the [java-http-client](https://github.com/sendgrid/java-http-client) repository: + + -Once signed in, go to the repository you want to modify. There are two different options: either modifying the file directly on the GitHub website (useful when it is a single file) or forking the repository. +3. __Clone__ your fork via the following commands: -### Single file modification +```bash +# Clone your fork of the repo into the current directory +git clone https://github.com/your_username/java-http-client +# Navigate to the newly cloned directory +cd java-http-client +# Assign the original repo to a remote called "upstream" +git remote add upstream https://github.com/sendgrid/java-http-client +``` -2. Once you are viewing a file you want to modify in GitHub, click the pencil icon to begin editing: +> Don't forget to replace *your_username* in the URL by your real GitHub username. - +4. __Create a new topic branch__ (off the main project development branch) to contain your feature, change, or fix: -3. Once you have made your changes, you will be given the option of creating a new branch in a Pull Request. This is a request to create a copy, or branch, of the original Docs but with your changes. Once your changes are approved, your branch will then be merged back into the original. +```bash +git checkout -b +``` -4. To create a Pull Request, you’ll have to fill out a Commit Changes form. Follow the built-in template and provide information about any changes you have made to the page. Leave the default branch option and name. +5. __Commit your changes__ in logical chunks. -5. When done, click **Propose file change**. The team will be notified of your request, and will be able to process it. +Please adhere to these [git commit message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) or your code is unlikely be merged into the main project. Use Git's [interactive rebase](https://help.github.com/articles/interactive-rebase) feature to tidy up your commits before making them public. Probably you will also have to create tests (if needed) or create or update the example code that demonstrates the functionality of this change to the code. -### Forking the repository +6. __Locally merge (or rebase)__ the upstream development branch into your topic branch: -2. Once you are viewing the repository, click the **Fork** button (top right corner) to create a new fork. Doing so will create a fork of the repository that you will be able to access from your profile. +```bash +git pull [--rebase] upstream main +``` -3. Make changes to the fork, either by using the web interface as described above or by [cloning](https://help.github.com/articles/cloning-a-repository/) your repository. +7. __Push__ your topic branch up to your fork: -4. Once you have made your changes, if they have been made in your local machine, you will need to commit the changes and push them to GitHub. +```bash +git push origin +``` -5. Create a [pull request](https://help.github.com/articles/creating-a-pull-request/#changing-the-branch-range-and-destination-repository). +8. __[Open a Pull Request](https://help.github.com/articles/creating-a-pull-request/#changing-the-branch-range-and-destination-repository/)__ with a clear title and description against the `main` branch. All tests must be passing before we will review the PR. -### Important notice +## Important notice Before creating a pull request, make sure that you respect the repository's constraints regarding contributions. You can find them in the [CONTRIBUTING.md](CONTRIBUTING.md) file. @@ -58,8 +74,6 @@ Before creating a pull request, make sure that you respect the repository's cons * [Java HTTP Client](https://github.com/sendgrid/java-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [Ruby HTTP Client](https://github.com/sendgrid/ruby-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [Go HTTP Client](https://github.com/sendgrid/rest/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Node.js HTTP Client](https://github.com/sendgrid/nodejs-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Open Source Data Collector](https://github.com/sendgrid/open-source-library-data-collector/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [Open API Definition](https://github.com/sendgrid/sendgrid-oai/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [DX Automator](https://github.com/sendgrid/dx-automator/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [Documentation](https://github.com/sendgrid/docs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) diff --git a/static/img/github-fork.png b/static/img/github-fork.png new file mode 100644 index 0000000000000000000000000000000000000000..6503be362193808dc19bce69d8ccdf518d9ef93f GIT binary patch literal 15189 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 Oll& Date: Wed, 19 Aug 2020 18:54:18 +0000 Subject: [PATCH 045/101] [Librarian] Version Bump --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5804188..67d4c16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2020-08-19] Version 4.3.6 +-------------------------- +**Library - Chore** +- [PR #128](https://github.com/sendgrid/java-http-client/pull/128): update GitHub branch references to use HEAD. Thanks to [@thinkingserious](https://github.com/thinkingserious)! + +**Library - Docs** +- [PR #97](https://github.com/sendgrid/java-http-client/pull/97): Correcting *.md files using Grammarly. Thanks to [@pushkyn](https://github.com/pushkyn)! +- [PR #101](https://github.com/sendgrid/java-http-client/pull/101): Add first timers file. Thanks to [@Varpie](https://github.com/Varpie)! + + [2020-08-05] Version 4.3.5 -------------------------- **Library - Docs** From 6f952ee98b41e5250f40f1f07144cc053f55d769 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 19 Aug 2020 19:47:18 +0000 Subject: [PATCH 046/101] Release 4.3.6 --- README.md | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b153a13..778aabd 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.5' + compile 'com.sendgrid:java-http-client:4.3.6' } repositories { @@ -55,7 +55,7 @@ repositories { com.sendgrid java-http-client - 4.3.5 + 4.3.6 ``` diff --git a/pom.xml b/pom.xml index cebd4ce..d71788d 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.5 + 4.3.6 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.5 + 4.3.6 From 1dc1ac916e9af7918853fde32019a59cebbd4614 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Mon, 24 Aug 2020 09:57:47 -0500 Subject: [PATCH 047/101] docs: remove roadmap/milestone sections for CONTRIBUTING and README --- CONTRIBUTING.md | 2 -- README.md | 6 ------ 2 files changed, 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9163345..7069100 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,8 +9,6 @@ Hello! Thank you for choosing to help contribute to one of the SendGrid open sou - [Creating a Pull Request](#creating-a-pull-request) - [Code Reviews](#code-reviews) -We use [Milestones](https://github.com/sendgrid/java-http-client/milestones) to help define current roadmaps, please feel free to grab an issue from the current milestone. Please indicate that you have begun work on it to avoid collisions. Once a PR is made, community review, comments, suggestions, and additional PRs are welcomed and encouraged. - ## Feature Request diff --git a/README.md b/README.md index 778aabd..1bfe523 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,6 @@ If you are looking for the SendGrid API client library, please see [this repo](h * [Installation](#installation) * [Quick Start](#quick-start) * [Usage](./USAGE.md) -* [Roadmap](#roadmap) * [How to Contribute](#contribute) * [About](#about) * [License](#license) @@ -116,11 +115,6 @@ try { } ``` - -# Roadmap - -If you are interested in the future direction of this project, please take a look at our [milestones](https://github.com/sendgrid/java-http-client/milestones). We would love to hear your feedback. - # How to Contribute From 391dc9cee36069f2f455664d6913b81103e1133c Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Mon, 24 Aug 2020 12:36:36 -0500 Subject: [PATCH 048/101] chore: drop Oracle JVM testing which is no longer supported by TravisCI --- .travis.yml | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3cdff31..40a4828 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,9 @@ language: java before_install: - echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import --batch || true -matrix: - include: - - jdk: openjdk8 - dist: xenial - - jdk: openjdk11 - dist: xenial - - jdk: oraclejdk8 - dist: trusty - - jdk: oraclejdk11 - dist: trusty +jdk: + - openjdk8 + - openjdk11 install: - mvn --settings .maven.xml install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V after_success: From daa992e870bb9d911ed5cfc8925861565146699e Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Fri, 28 Aug 2020 14:46:32 -0700 Subject: [PATCH 049/101] chore: move encrypted tokens to environment variables --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 40a4828..da0ac4b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,5 +23,4 @@ notifications: on_pull_requests: false on_success: never on_failure: change - rooms: - - secure: K5X3v1dEP7Kg0MUYj8fMwyvEtQVG2iNr0URcEBfdWiH8XSST669p66TKbvo8e9PeZGfAkXJ+aqQBrqjxuNZAdMOOsGSVcIGkO8lOPK0EiiubggnDPUlaaJxm7+kV1IJJLstR5Xnj0t8Mt2adPQia+izG+4lWhTYSN1LtxKzwM0aDu3GnqA4uRRDZvQe44LhXAd3YbUTTZX5geWD7X1QS34iRnAWxmxGulBRoXSVfe0kf8womrz+wksgF/g6+yOxR+teKDogVUnBmBxpua+Z2lSMOLLPwjbRy8Y57M9F4DWpKH96WFQEEBFE0GBs+ygMkMbC5xQ6XEyEF9ArcF2IOxvroCM7wRXvEwnslcinoH11B6PTyUvjQrYB7KSMNpiJAi67f4G/LtoAMgy9lJklG/K7glG9oVSM8eREhGzFUyHsq+zwnCieKi57vb4+BYRoaiSy8Le1oH4sZ53DuXmrP/LStuAb8lP8svSzM8oAltC/NLxSCQt6tdS+CdX7Us/zaqcLtWdgvq1xqFhJiYv1iv3Odi37hRn7F/JhcDzN89BK9hbkCawR2MQ+ND41COzkhs0oEgVTj5gjYUJc9Y2Utac1ONvUF3x0NC3EyjSPiEKgtyYjaa5z+hPkAWR9LMqMQa1pKpfHXwkGsMeXJ4HisKl/L8U3rhccM0h5dkGRIPjU= + rooms: $SLACK_TOKEN From 9c213db3c5077902fb80b11941fcb15ce74eaec8 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Tue, 1 Sep 2020 13:23:33 -0700 Subject: [PATCH 050/101] Revert "chore: move encrypted tokens to environment variables" This reverts commit daa992e8 --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index da0ac4b..40a4828 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,5 @@ notifications: on_pull_requests: false on_success: never on_failure: change - rooms: $SLACK_TOKEN + rooms: + - secure: K5X3v1dEP7Kg0MUYj8fMwyvEtQVG2iNr0URcEBfdWiH8XSST669p66TKbvo8e9PeZGfAkXJ+aqQBrqjxuNZAdMOOsGSVcIGkO8lOPK0EiiubggnDPUlaaJxm7+kV1IJJLstR5Xnj0t8Mt2adPQia+izG+4lWhTYSN1LtxKzwM0aDu3GnqA4uRRDZvQe44LhXAd3YbUTTZX5geWD7X1QS34iRnAWxmxGulBRoXSVfe0kf8womrz+wksgF/g6+yOxR+teKDogVUnBmBxpua+Z2lSMOLLPwjbRy8Y57M9F4DWpKH96WFQEEBFE0GBs+ygMkMbC5xQ6XEyEF9ArcF2IOxvroCM7wRXvEwnslcinoH11B6PTyUvjQrYB7KSMNpiJAi67f4G/LtoAMgy9lJklG/K7glG9oVSM8eREhGzFUyHsq+zwnCieKi57vb4+BYRoaiSy8Le1oH4sZ53DuXmrP/LStuAb8lP8svSzM8oAltC/NLxSCQt6tdS+CdX7Us/zaqcLtWdgvq1xqFhJiYv1iv3Odi37hRn7F/JhcDzN89BK9hbkCawR2MQ+ND41COzkhs0oEgVTj5gjYUJc9Y2Utac1ONvUF3x0NC3EyjSPiEKgtyYjaa5z+hPkAWR9LMqMQa1pKpfHXwkGsMeXJ4HisKl/L8U3rhccM0h5dkGRIPjU= From 51fcea76c870749013d5d9fc9e09c68111af1f7f Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Wed, 14 Oct 2020 15:53:27 -0500 Subject: [PATCH 051/101] chore: fix spelling typos --- FIRST_TIMERS.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/FIRST_TIMERS.md b/FIRST_TIMERS.md index 0b00fd5..fe354fe 100644 --- a/FIRST_TIMERS.md +++ b/FIRST_TIMERS.md @@ -61,13 +61,13 @@ Before creating a pull request, make sure that you respect the repository's cons * [Node.js SDK](https://github.com/sendgrid/sendgrid-nodejs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [Java SDK](https://github.com/sendgrid/sendgrid-java/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [Go SDK](https://github.com/sendgrid/sendgrid-go/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Python STMPAPI Client](https://github.com/sendgrid/smtpapi-python/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [PHP STMPAPI Client](https://github.com/sendgrid/smtpapi-php/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [C# STMPAPI Client](https://github.com/sendgrid/smtpapi-csharp/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Ruby STMPAPI Client](https://github.com/sendgrid/smtpapi-ruby/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Node.js STMPAPI Client](https://github.com/sendgrid/smtpapi-nodejs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Java STMPAPI Client](https://github.com/sendgrid/smtpapi-java/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Go STMPAPI Client](https://github.com/sendgrid/smtpapi-go/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Python SMTPAPI Client](https://github.com/sendgrid/smtpapi-python/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [PHP SMTPAPI Client](https://github.com/sendgrid/smtpapi-php/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [C# SMTPAPI Client](https://github.com/sendgrid/smtpapi-csharp/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Ruby SMTPAPI Client](https://github.com/sendgrid/smtpapi-ruby/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Node.js SMTPAPI Client](https://github.com/sendgrid/smtpapi-nodejs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Java SMTPAPI Client](https://github.com/sendgrid/smtpapi-java/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) +* [Go SMTPAPI Client](https://github.com/sendgrid/smtpapi-go/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [Python HTTP Client](https://github.com/sendgrid/python-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [PHP HTTP Client](https://github.com/sendgrid/php-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) * [C# HTTP Client](https://github.com/sendgrid/csharp-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) From 6de86833289768e3bd66c8e8fd12a81727423dc3 Mon Sep 17 00:00:00 2001 From: Twilio Date: Thu, 15 Oct 2020 16:23:24 +0000 Subject: [PATCH 052/101] chore: update template files --- PULL_REQUEST_TEMPLATE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index a868180..7bbf316 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -19,13 +19,13 @@ Closes #2 A short description of what this PR does. ### Checklist -- [ ] I acknowledge that all my contributions will be made under the project's license +- [x] I acknowledge that all my contributions will be made under the project's license - [ ] I have made a material change to the repo (functionality, testing, spelling, grammar) -- [ ] I have read the [Contribution Guidelines](CONTRIBUTING.md) and my PR follows them +- [ ] I have read the [Contribution Guidelines](https://github.com/sendgrid/java-http-client/blob/main/CONTRIBUTING.md) and my PR follows them - [ ] I have titled the PR appropriately - [ ] I have updated my branch with the main branch - [ ] I have added tests that prove my fix is effective or that my feature works -- [ ] I have added necessary documentation about the functionality in the appropriate .md file +- [ ] I have added the necessary documentation about the functionality in the appropriate .md file - [ ] I have added inline documentation to the code I modified If you have questions, please file a [support ticket](https://twilio.com/help/contact), or create a GitHub Issue in this repository. From f76df36f6dc86540c69060240dc9fe3003923791 Mon Sep 17 00:00:00 2001 From: Twilio Date: Thu, 15 Oct 2020 16:33:58 +0000 Subject: [PATCH 053/101] chore: update template files --- PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index 7bbf316..6a0810a 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -28,4 +28,4 @@ A short description of what this PR does. - [ ] I have added the necessary documentation about the functionality in the appropriate .md file - [ ] I have added inline documentation to the code I modified -If you have questions, please file a [support ticket](https://twilio.com/help/contact), or create a GitHub Issue in this repository. +If you have questions, please file a [support ticket](https://support.sendgrid.com/hc/en-us), or create a GitHub Issue in this repository. From 19e283e00df42176233864ffe625c1965c039b52 Mon Sep 17 00:00:00 2001 From: Twilio Date: Thu, 15 Oct 2020 21:27:17 +0000 Subject: [PATCH 054/101] chore: update template files --- PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index 6a0810a..593da34 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -28,4 +28,4 @@ A short description of what this PR does. - [ ] I have added the necessary documentation about the functionality in the appropriate .md file - [ ] I have added inline documentation to the code I modified -If you have questions, please file a [support ticket](https://support.sendgrid.com/hc/en-us), or create a GitHub Issue in this repository. +If you have questions, please file a [support ticket](https://support.sendgrid.com), or create a GitHub Issue in this repository. From 658f103f81632bb4d8fd1a6ab74f5ac0e56dbf86 Mon Sep 17 00:00:00 2001 From: Twilio Date: Tue, 27 Oct 2020 21:32:36 +0000 Subject: [PATCH 055/101] chore: update template files --- LICENSE.md => LICENSE | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename LICENSE.md => LICENSE (100%) diff --git a/LICENSE.md b/LICENSE similarity index 100% rename from LICENSE.md rename to LICENSE From fee19f7de79e38b352cbd6f017995320a2333ea9 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Tue, 27 Oct 2020 16:42:33 -0500 Subject: [PATCH 056/101] chore: update license references --- README.md | 4 ++-- pom.xml | 4 ++-- src/test/java/com/sendgrid/LicenseTest.java | 2 +- src/test/java/com/sendgrid/TestRequiredFilesExist.java | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 1bfe523..5befbd5 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://travis-ci.org/sendgrid/java-http-client.svg?branch=main)](https://travis-ci.org/sendgrid/java-http-client) [![Maven Central](https://img.shields.io/maven-central/v/com.sendgrid/java-http-client.svg)](http://mvnrepository.com/artifact/com.sendgrid/java-http-client) -[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE.md) +[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Twitter Follow](https://img.shields.io/twitter/follow/sendgrid.svg?style=social&label=Follow)](https://twitter.com/sendgrid) [![GitHub contributors](https://img.shields.io/github/contributors/sendgrid/java-http-client.svg)](https://github.com/sendgrid/java-http-client/graphs/contributors) @@ -137,4 +137,4 @@ If you need help installing or using the library, please check the [Twilio SendG If you've instead found a bug in the library or would like new features added, go ahead and open issues or pull requests against this repo! # License -[The MIT License (MIT)](LICENSE.md) +[The MIT License (MIT)](LICENSE) diff --git a/pom.xml b/pom.xml index d71788d..e507629 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ The MIT License (MIT) - https://github.com/sendgrid/java-http-client/blob/HEAD/LICENSE.md + https://github.com/sendgrid/java-http-client/blob/HEAD/LICENSE repo @@ -240,4 +240,4 @@ - \ No newline at end of file + diff --git a/src/test/java/com/sendgrid/LicenseTest.java b/src/test/java/com/sendgrid/LicenseTest.java index 493458e..04e4849 100644 --- a/src/test/java/com/sendgrid/LicenseTest.java +++ b/src/test/java/com/sendgrid/LicenseTest.java @@ -13,7 +13,7 @@ public class LicenseTest { @Test public void testLicenseShouldHaveCorrectYear() throws IOException { String copyrightText = null; - try (BufferedReader br = new BufferedReader(new FileReader("./LICENSE.md"))) { + try (BufferedReader br = new BufferedReader(new FileReader("./LICENSE"))) { for (String line; (line = br.readLine()) != null; ) { if (line.startsWith("Copyright")) { copyrightText = line; diff --git a/src/test/java/com/sendgrid/TestRequiredFilesExist.java b/src/test/java/com/sendgrid/TestRequiredFilesExist.java index 01b43c9..fa73126 100644 --- a/src/test/java/com/sendgrid/TestRequiredFilesExist.java +++ b/src/test/java/com/sendgrid/TestRequiredFilesExist.java @@ -59,9 +59,9 @@ public class TestRequiredFilesExist { assertTrue(new File("./ISSUE_TEMPLATE.md").exists()); } - // ./LICENSE.md + // ./LICENSE @Test public void checkLicenseExists() { - assertTrue(new File("./LICENSE.md").exists()); + assertTrue(new File("./LICENSE").exists()); } // ./PULL_REQUEST_TEMPLATE.md From d6d23c692389ace4dcb15237836f34e3e6e55a05 Mon Sep 17 00:00:00 2001 From: Elmer Thomas Date: Fri, 30 Oct 2020 14:15:15 -0700 Subject: [PATCH 057/101] chore: update badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5befbd5..fdc795e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![SendGrid Logo](twilio_sendgrid_logo.png) -[![Build Status](https://travis-ci.org/sendgrid/java-http-client.svg?branch=main)](https://travis-ci.org/sendgrid/java-http-client) +[![Build Status](https://travis-ci.com/sendgrid/java-http-client.svg?branch=main)](https://travis-ci.com/sendgrid/java-http-client) [![Maven Central](https://img.shields.io/maven-central/v/com.sendgrid/java-http-client.svg)](http://mvnrepository.com/artifact/com.sendgrid/java-http-client) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Twitter Follow](https://img.shields.io/twitter/follow/sendgrid.svg?style=social&label=Follow)](https://twitter.com/sendgrid) From ba8ffa2acc892844f9ce03bdb10e28b8ca694b65 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 6 Jan 2021 18:16:51 +0000 Subject: [PATCH 058/101] chore: update template files --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 29aba59..e5439a9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (C) 2020, Twilio SendGrid, Inc. +Copyright (C) 2021, Twilio SendGrid, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From a3f78754657d4af8318051147bb1afb3fff60264 Mon Sep 17 00:00:00 2001 From: Twilio Date: Fri, 12 Mar 2021 20:33:32 +0000 Subject: [PATCH 059/101] chore: update template files --- .github/ISSUE_TEMPLATE/config.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..221c533 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,10 @@ +contact_links: + - name: Twilio SendGrid Support + url: https://support.sendgrid.com + about: Get Support + - name: Stack Overflow + url: https://stackoverflow.com/questions/tagged/java-http-client+or+sendgrid+java + about: Ask questions on Stack Overflow + - name: Documentation + url: https://sendgrid.com/docs/for-developers/ + about: View Reference Documentation From 369ff6558de7078c238c0990d6c4ed32f3ec9bca Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Fri, 23 Apr 2021 11:02:21 -0700 Subject: [PATCH 060/101] chore: rotate key --- .travis.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index 40a4828..3e52375 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,22 +1,22 @@ language: java before_install: - - echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import --batch || true +- echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import --batch || true jdk: - - openjdk8 - - openjdk11 +- openjdk8 +- openjdk11 install: - - mvn --settings .maven.xml install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V +- mvn --settings .maven.xml install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true + -B -V after_success: - - bash <(curl -s https://codecov.io/bash) -t $CODECOV_KEY +- bash <(curl -s https://codecov.io/bash) -t $CODECOV_KEY deploy: - - provider: script - script: mvn clean deploy --settings .maven.xml -DskipTests=true -B -U -Prelease - skip_cleanup: true - on: - tags: true - jdk: openjdk8 - branch: main - +- provider: script + script: mvn clean deploy --settings .maven.xml -DskipTests=true -B -U -Prelease + skip_cleanup: true + on: + tags: true + jdk: openjdk8 + branch: main notifications: slack: if: branch = main @@ -24,4 +24,4 @@ notifications: on_success: never on_failure: change rooms: - - secure: K5X3v1dEP7Kg0MUYj8fMwyvEtQVG2iNr0URcEBfdWiH8XSST669p66TKbvo8e9PeZGfAkXJ+aqQBrqjxuNZAdMOOsGSVcIGkO8lOPK0EiiubggnDPUlaaJxm7+kV1IJJLstR5Xnj0t8Mt2adPQia+izG+4lWhTYSN1LtxKzwM0aDu3GnqA4uRRDZvQe44LhXAd3YbUTTZX5geWD7X1QS34iRnAWxmxGulBRoXSVfe0kf8womrz+wksgF/g6+yOxR+teKDogVUnBmBxpua+Z2lSMOLLPwjbRy8Y57M9F4DWpKH96WFQEEBFE0GBs+ygMkMbC5xQ6XEyEF9ArcF2IOxvroCM7wRXvEwnslcinoH11B6PTyUvjQrYB7KSMNpiJAi67f4G/LtoAMgy9lJklG/K7glG9oVSM8eREhGzFUyHsq+zwnCieKi57vb4+BYRoaiSy8Le1oH4sZ53DuXmrP/LStuAb8lP8svSzM8oAltC/NLxSCQt6tdS+CdX7Us/zaqcLtWdgvq1xqFhJiYv1iv3Odi37hRn7F/JhcDzN89BK9hbkCawR2MQ+ND41COzkhs0oEgVTj5gjYUJc9Y2Utac1ONvUF3x0NC3EyjSPiEKgtyYjaa5z+hPkAWR9LMqMQa1pKpfHXwkGsMeXJ4HisKl/L8U3rhccM0h5dkGRIPjU= + secure: Pk4BJvzEPXTTsXD5Q39BVPmEh3c6C0vhImWByUAmEwXI+y2qWG3gXlU9KzbdGTI/50bw3mfUkEzpH9wFlRa9A8zB1eAuyuC89S1JKtaKARuzaqw3yJYUh9YV9xmJ128I9/F7Zgnr22K0DxStQp+qunMP8n8YWsOsBh+RiiFGbx8X53JDT+rgzyTqAMbxWLqj4IZX8Fzdw54dMClob8zGkSRtkFoyaYV1rodrOucfK1pRFeCt7nsK2+4PaLIHNY1IPbK+M/aE0dn6A8FxWB2RAE83bqAOjPNDuZkWdkZYtnwZZXHhfQ/RNrQbMM6rKFvEuW+BtHD/zvm60dNgovJhx1oM9hqCBFTwgDIV6XdnROPpEsfB+DRcYubaUdJ2XHSOFVJDWDdTq01nf3AtpfGlXE0kufdiEFhgbBpFV2QYFxae5az+bLEQvpNkcsSd3NIETRKx5HqUNJ/3xQK12zfQTWF1VV/ugfvJuz5MrY84hvr3TRG0K3njevYtTbBa0EWHfH5dWnzdJXgrrNNVKqA9/o/349otINAXYg3h1b4CbYSyEJOnCPc6J553jgoVxm1lrNgTRNFWZ3IxR3GmK0CG2xDew6Nx4gbIGjK3+7W6GTN9xy6KcErU7MogcMNVcAk0hQ8jQDxenG65e8coGHmt+ZlIxpqyWq0bv8xlgmVWiAY= From d7160c46361d72ab1b559248c75069ab9d8f475b Mon Sep 17 00:00:00 2001 From: Charley Wu Date: Tue, 18 May 2021 03:45:24 +0800 Subject: [PATCH 061/101] Bump org.apache.httpcomponents.httpclient from 4.5.12 to 4.5.13 (#131) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e507629..cc6f07b 100644 --- a/pom.xml +++ b/pom.xml @@ -148,7 +148,7 @@ org.apache.httpcomponents httpclient - 4.5.12 + 4.5.13 From 9ee62ba2e05782e0fc908b40c7dc8b3ec946b46b Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 19 May 2021 21:19:10 +0000 Subject: [PATCH 062/101] [Librarian] Version Bump --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67d4c16..c22cfe7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2021-05-19] Version 4.3.7 +-------------------------- +**Library - Chore** +- [PR #131](https://github.com/sendgrid/java-http-client/pull/131): Bump org.apache.httpcomponents.httpclient from 4.5.12 to 4.5.13. Thanks to [@akunzai](https://github.com/akunzai)! + + [2020-08-19] Version 4.3.6 -------------------------- **Library - Chore** From 0aff8bce09644642cb352e31f80a06d347641203 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 19 May 2021 21:21:33 +0000 Subject: [PATCH 063/101] Release 4.3.7 --- README.md | 4 ++-- pom.xml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fdc795e..f7bee96 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.6' + compile 'com.sendgrid:java-http-client:4.3.7' } repositories { @@ -54,7 +54,7 @@ repositories { com.sendgrid java-http-client - 4.3.6 + 4.3.7 ``` diff --git a/pom.xml b/pom.xml index cc6f07b..6ace9b5 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.6 + 4.3.7 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.6 + 4.3.7 @@ -143,7 +143,7 @@ org.apache.httpcomponents httpcore - 4.4.13 + 4.4.14 org.apache.httpcomponents @@ -240,4 +240,4 @@ - + \ No newline at end of file From 2a98eef7566d0cba06d82a7c57284c121cb49688 Mon Sep 17 00:00:00 2001 From: Elmer Thomas Date: Wed, 16 Jun 2021 16:47:21 -0700 Subject: [PATCH 064/101] update slack token --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3e52375..761c155 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,4 +24,4 @@ notifications: on_success: never on_failure: change rooms: - secure: Pk4BJvzEPXTTsXD5Q39BVPmEh3c6C0vhImWByUAmEwXI+y2qWG3gXlU9KzbdGTI/50bw3mfUkEzpH9wFlRa9A8zB1eAuyuC89S1JKtaKARuzaqw3yJYUh9YV9xmJ128I9/F7Zgnr22K0DxStQp+qunMP8n8YWsOsBh+RiiFGbx8X53JDT+rgzyTqAMbxWLqj4IZX8Fzdw54dMClob8zGkSRtkFoyaYV1rodrOucfK1pRFeCt7nsK2+4PaLIHNY1IPbK+M/aE0dn6A8FxWB2RAE83bqAOjPNDuZkWdkZYtnwZZXHhfQ/RNrQbMM6rKFvEuW+BtHD/zvm60dNgovJhx1oM9hqCBFTwgDIV6XdnROPpEsfB+DRcYubaUdJ2XHSOFVJDWDdTq01nf3AtpfGlXE0kufdiEFhgbBpFV2QYFxae5az+bLEQvpNkcsSd3NIETRKx5HqUNJ/3xQK12zfQTWF1VV/ugfvJuz5MrY84hvr3TRG0K3njevYtTbBa0EWHfH5dWnzdJXgrrNNVKqA9/o/349otINAXYg3h1b4CbYSyEJOnCPc6J553jgoVxm1lrNgTRNFWZ3IxR3GmK0CG2xDew6Nx4gbIGjK3+7W6GTN9xy6KcErU7MogcMNVcAk0hQ8jQDxenG65e8coGHmt+ZlIxpqyWq0bv8xlgmVWiAY= + secure: jnmSBE28sD/3ZFMDtnBtrxpB4h8aOPmqXJXv7rUQMUflf5+9slbaj8des72QpNAWOJnHjY0MasfKCuQlau9b5iPllJEF3aVswCORFErsLT3U5UW4qolC0MeTygj3g6RQUsrgFxuUxOrDW6OSkFV4gASyrFIqeI+pBj8Xu0YAdxnIJGTAKYQ+c8wLL4uiUgle3id0QRTv6BArezROjAlFpE7S40BCN/ulgVOT1X0gD3HtuXkSscnmnqmWY2UurbHQ3yPcR2xJo75tY6Hf4CxTJAqioVH8ygbboMMFYbzhlfZyGofbz01g5mUNRB6s39AnoxoOhkDJRJY6J3i+xhJBufLN8XxiFyq176ngZJDjCF/pjg5sWDdlmG8pHZawrBEecMOrg29CnuuBzNZpWz1+93cOD4Ak1UtZC5m04+X8oMUx1Q+pjRPdFJYSHXStBBYNV1/aNCNIOFVm6tAN+JgpO6I3aEKI2PMJaxeqUtU931pEzz/48DJYCHIsL7ZSDopPjenPck6UfhrwE4fubzwfac8JVnwTGKqENlVChPP7jMTb8tK2a2RpMel7PMrriTUm+RMoEFi8x2wntPm9CdqQ+bn8VsOppQ2IIOj85d4prcPxfTJMUsKAQh5WRHHT472WxH+OOOFYo6fZLEam+toTmW/zeK8+oCefVy+1SQR8hHk= From 9a5101b9ff0e879dba61c4466f3ec56a24d69368 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Mon, 26 Jul 2021 10:46:45 -0700 Subject: [PATCH 065/101] chore: update travis config --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 761c155..3fa7c29 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: java before_install: - echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import --batch || true +- echo $GPG_OWNERTRUST | base64 --decode | $GPG_EXECUTABLE --import-ownertrust --batch || true jdk: - openjdk8 - openjdk11 From b400628c3613a882bd4bfdb7bcc3242798143a7e Mon Sep 17 00:00:00 2001 From: Jennifer Mah Date: Fri, 19 Nov 2021 13:49:17 -0800 Subject: [PATCH 066/101] chore: add mvn package to the makefile --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index dd38561..a12c566 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,9 @@ install: mvn clean install -DskipTests=true -Dgpg.skip -B cp target/java-http-client-$(VERSION).jar java-http-client.jar +package: + mvn package -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B + test: mvn test From 20c05a35fb382f4959495409ce17c36c0b501054 Mon Sep 17 00:00:00 2001 From: Jennifer Mah Date: Fri, 19 Nov 2021 14:09:12 -0800 Subject: [PATCH 067/101] chore: add jar copying to make package --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index a12c566..4b128c6 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ install: package: mvn package -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B + cp target/java-http-client-$(VERSION).jar java-http-client.jar test: mvn test From c86cf5db9de32e9aae32de4bd0caabbf85562ef9 Mon Sep 17 00:00:00 2001 From: Jennifer Mah Date: Fri, 19 Nov 2021 14:19:19 -0800 Subject: [PATCH 068/101] chore: clean up make file --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4b128c6..dc3bb05 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ install: cp target/java-http-client-$(VERSION).jar java-http-client.jar package: - mvn package -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B + mvn package -DskipTests=true -Dgpg.skip -B cp target/java-http-client-$(VERSION).jar java-http-client.jar test: From b43916931710d684b3369a7b089235382f00cfe5 Mon Sep 17 00:00:00 2001 From: Jennifer Mah <42650198+JenniferMah@users.noreply.github.com> Date: Sat, 20 Nov 2021 10:56:49 -0800 Subject: [PATCH 069/101] chore: clean up makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index dc3bb05..3d76197 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: install test test-integration clean +.PHONY: install package test test-integration clean VERSION := $(shell mvn help:evaluate -Dexpression=project.version --batch-mode | grep -e '^[^\[]') install: From 338e5650e10430c165ceed3d2dd57db8e2b42872 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Tue, 30 Nov 2021 15:31:14 -0800 Subject: [PATCH 070/101] chore: migrate to github actions (#133) --- .codeclimate.yml | 88 ------------------- .github/workflows/release.yml | 50 +++++++++++ .github/workflows/test.yml | 50 +++++++++++ .maven.xml | 24 ----- .travis.yml | 28 ------ README.md | 2 +- .../com/sendgrid/TestRequiredFilesExist.java | 9 -- 7 files changed, 101 insertions(+), 150 deletions(-) delete mode 100644 .codeclimate.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml delete mode 100644 .maven.xml delete mode 100644 .travis.yml diff --git a/.codeclimate.yml b/.codeclimate.yml deleted file mode 100644 index c84b2ee..0000000 --- a/.codeclimate.yml +++ /dev/null @@ -1,88 +0,0 @@ -# This is a sample .codeclimate.yml configured for Engine analysis on Code -# Climate Platform. For an overview of the Code Climate Platform, see here: -# http://docs.codeclimate.com/article/300-the-codeclimate-platform - -# Under the engines key, you can configure which engines will analyze your repo. -# Each key is an engine name. For each value, you need to specify enabled: true -# to enable the engine as well as any other engines-specific configuration. - -# For more details, see here: -# http://docs.codeclimate.com/article/289-configuring-your-repository-via-codeclimate-yml#platform - -# For a list of all available engines, see here: -# http://docs.codeclimate.com/article/296-engines-available-engines - -#engines: -# to turn on an engine, add it here and set enabled to `true` -# to turn off an engine, set enabled to `false` or remove it -# rubocop: -# enabled: true -# golint: -# enabled: true -# gofmt: -# enabled: true -# eslint: -# enabled: true -# csslint: -# enabled: true - -# Engines can analyze files and report issues on them, but you can separately -# decide which files will receive ratings based on those issues. This is -# specified by path patterns under the ratings key. - -# For more details see here: -# http://docs.codeclimate.com/article/289-configuring-your-repository-via-codeclimate-yml#platform - -# ratings: -# paths: -# - app/** -# - lib/** -# - "**.rb" -# - "**.go" - -# You can globally exclude files from being analyzed by any engine using the -# exclude_paths key. - -#All maintainability checks are enabled by default with the following configurations. -#checks, -# argument-count: -# config: -# threshold: 4 -# complex-logic: -# config: -# threshold: 4 -# file-lines: -# config: -# threshold: 250 -# method-complexity: -# config: -# threshold: 5 -# method-count: -# config: -# threshold: 20 -# method-lines: -# config: -# threshold: 25 -# nested-control-flow: -# config: -# threshold: 4 -# return-statements: -# config: -# threshold: 4 -# similar-code: -# config: -# threshold: # language-specific defaults. an override will affect all languages. -# identical-code: -# config: -# threshold: # language-specific defaults. an override will affect all languages. - -engines: - sonar-java: - enabled: true - channel: beta - -exclude_paths: -- "scripts/" -- ".github/" -- "gradle/" -- "**/test/" \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..d4317b9 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,50 @@ +name: Release +on: + push: + tags: + - '*' + workflow_dispatch: + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Set up Sonatype Maven + uses: actions/setup-java@v2 + with: + java-version: 8 + distribution: temurin + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} + gpg-passphrase: GPG_PASSPHRASE + + - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V + - name: Publish to Maven + env: + MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + run: mvn clean deploy -DskipTests=true -B -U -Prelease + + notify-on-failure: + name: Slack notify on failure + if: ${{ failure() }} + needs: [release] + runs-on: ubuntu-latest + steps: + - uses: rtCamp/action-slack-notify@v2 + env: + SLACK_COLOR: 'danger' + SLACK_ICON_EMOJI: ':github:' + SLACK_MESSAGE: ${{ format('Failed to release {1}{3} {0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id, ':') }} + SLACK_TITLE: Release Failure + SLACK_USERNAME: GitHub Actions + SLACK_MSG_AUTHOR: twilio-dx + SLACK_FOOTER: Posted automatically using GitHub Actions + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + MSG_MINIMAL: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..c985db3 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,50 @@ +name: Tests +on: + push: + branches: [ '*' ] + pull_request: + branches: [ main ] + schedule: + # Run automatically at 8AM PST Monday-Friday + - cron: '0 15 * * 1-5' + workflow_dispatch: + +jobs: + test: + name: Test + runs-on: ubuntu-latest + timeout-minutes: 20 + strategy: + matrix: + java: [8, 11] + steps: + - uses: actions/checkout@v2 + + - name: Set up Java + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: ${{ matrix.java }} + cache: 'maven' + + - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V + - name: Run Unit Tests + run: mvn test -B + + notify-on-failure: + name: Slack notify on failure + if: ${{ failure() && github.ref == 'refs/heads/main' && github.event_name != 'pull_request' }} + needs: [test] + runs-on: ubuntu-latest + steps: + - uses: rtCamp/action-slack-notify@v2 + env: + SLACK_COLOR: ${{ needs.test.status }} + SLACK_ICON_EMOJI: ':github:' + SLACK_MESSAGE: ${{ format('Build {2} in {1} failed{3} {0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id, ':') }} + SLACK_TITLE: Build Failure + SLACK_USERNAME: GitHub Actions + SLACK_MSG_AUTHOR: twilio-dx + SLACK_FOOTER: Posted automatically using GitHub Actions + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + MSG_MINIMAL: true diff --git a/.maven.xml b/.maven.xml deleted file mode 100644 index bef1ab6..0000000 --- a/.maven.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - ossrh - ${env.SONATYPE_USERNAME} - ${env.SONATYPE_PASSWORD} - - - - - - ossrh - - true - - - ${env.GPG_EXECUTABLE} - ${env.GPG_PASSPHRASE} - - - - diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3fa7c29..0000000 --- a/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -language: java -before_install: -- echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --import --batch || true -- echo $GPG_OWNERTRUST | base64 --decode | $GPG_EXECUTABLE --import-ownertrust --batch || true -jdk: -- openjdk8 -- openjdk11 -install: -- mvn --settings .maven.xml install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true - -B -V -after_success: -- bash <(curl -s https://codecov.io/bash) -t $CODECOV_KEY -deploy: -- provider: script - script: mvn clean deploy --settings .maven.xml -DskipTests=true -B -U -Prelease - skip_cleanup: true - on: - tags: true - jdk: openjdk8 - branch: main -notifications: - slack: - if: branch = main - on_pull_requests: false - on_success: never - on_failure: change - rooms: - secure: jnmSBE28sD/3ZFMDtnBtrxpB4h8aOPmqXJXv7rUQMUflf5+9slbaj8des72QpNAWOJnHjY0MasfKCuQlau9b5iPllJEF3aVswCORFErsLT3U5UW4qolC0MeTygj3g6RQUsrgFxuUxOrDW6OSkFV4gASyrFIqeI+pBj8Xu0YAdxnIJGTAKYQ+c8wLL4uiUgle3id0QRTv6BArezROjAlFpE7S40BCN/ulgVOT1X0gD3HtuXkSscnmnqmWY2UurbHQ3yPcR2xJo75tY6Hf4CxTJAqioVH8ygbboMMFYbzhlfZyGofbz01g5mUNRB6s39AnoxoOhkDJRJY6J3i+xhJBufLN8XxiFyq176ngZJDjCF/pjg5sWDdlmG8pHZawrBEecMOrg29CnuuBzNZpWz1+93cOD4Ak1UtZC5m04+X8oMUx1Q+pjRPdFJYSHXStBBYNV1/aNCNIOFVm6tAN+JgpO6I3aEKI2PMJaxeqUtU931pEzz/48DJYCHIsL7ZSDopPjenPck6UfhrwE4fubzwfac8JVnwTGKqENlVChPP7jMTb8tK2a2RpMel7PMrriTUm+RMoEFi8x2wntPm9CdqQ+bn8VsOppQ2IIOj85d4prcPxfTJMUsKAQh5WRHHT472WxH+OOOFYo6fZLEam+toTmW/zeK8+oCefVy+1SQR8hHk= diff --git a/README.md b/README.md index f7bee96..463f315 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![SendGrid Logo](twilio_sendgrid_logo.png) -[![Build Status](https://travis-ci.com/sendgrid/java-http-client.svg?branch=main)](https://travis-ci.com/sendgrid/java-http-client) +[![BuildStatus](https://github.com/sendgrid/java-http-client/actions/workflows/test.yml/badge.svg)](https://github.com/sendgrid/java-http-client/actions/workflows/test.yml) [![Maven Central](https://img.shields.io/maven-central/v/com.sendgrid/java-http-client.svg)](http://mvnrepository.com/artifact/com.sendgrid/java-http-client) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Twitter Follow](https://img.shields.io/twitter/follow/sendgrid.svg?style=social&label=Follow)](https://twitter.com/sendgrid) diff --git a/src/test/java/com/sendgrid/TestRequiredFilesExist.java b/src/test/java/com/sendgrid/TestRequiredFilesExist.java index fa73126..792b209 100644 --- a/src/test/java/com/sendgrid/TestRequiredFilesExist.java +++ b/src/test/java/com/sendgrid/TestRequiredFilesExist.java @@ -29,15 +29,6 @@ public class TestRequiredFilesExist { assertTrue(new File("./.gitignore").exists()); } - // ./.travis.yml - @Test public void checkTravisExists() { - assertTrue(new File("./.travis.yml").exists()); - } - - // ./.codeclimate.yml - @Test public void checkCodeClimateExists() { - assertTrue(new File("./.codeclimate.yml").exists()); - } // ./CHANGELOG.md @Test public void checkChangelogExists() { From d9c77a316bae2ba34667ce40374b78fe2d72a9ce Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Wed, 1 Dec 2021 11:52:12 -0800 Subject: [PATCH 071/101] chore: fix pom for release (#135) --- pom.xml | 42 +++++++++--------------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index 6ace9b5..7b84d4d 100644 --- a/pom.xml +++ b/pom.xml @@ -27,38 +27,6 @@ 4.3.7 - - gpg - - false - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - - - ${gpg.keyname} - ${gpg.passphrase} - - --pinentry-mode - loopback - - - - - - release @@ -116,6 +84,14 @@ sign + + ${gpg.keyname} + ${gpg.passphrase} + + --pinentry-mode + loopback + + @@ -240,4 +216,4 @@ - \ No newline at end of file + From 6a8b2e0191c78df50d1a3d0be98a61b9da1d0e65 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 1 Dec 2021 21:10:22 +0000 Subject: [PATCH 072/101] [Librarian] Version Bump --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c22cfe7..a8ea9ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2021-12-01] Version 4.3.8 +-------------------------- +**Library - Chore** +- [PR #135](https://github.com/sendgrid/java-http-client/pull/135): fix pom for release. Thanks to [@eshanholtz](https://github.com/eshanholtz)! +- [PR #133](https://github.com/sendgrid/java-http-client/pull/133): migrate to github actions. Thanks to [@eshanholtz](https://github.com/eshanholtz)! + + [2021-05-19] Version 4.3.7 -------------------------- **Library - Chore** From 8436779ca9a3c4c1c0e872b7e518970951711a8e Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 1 Dec 2021 21:12:37 +0000 Subject: [PATCH 073/101] Release 4.3.8 --- README.md | 4 ++-- pom.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 463f315..845bf38 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.7' + compile 'com.sendgrid:java-http-client:4.3.8' } repositories { @@ -54,7 +54,7 @@ repositories { com.sendgrid java-http-client - 4.3.7 + 4.3.8 ``` diff --git a/pom.xml b/pom.xml index 7b84d4d..72ff9bf 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.7 + 4.3.8 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.7 + 4.3.8 @@ -216,4 +216,4 @@ - + \ No newline at end of file From 24fc351ebf809a616cfd9acad71df420d2c521a7 Mon Sep 17 00:00:00 2001 From: Jennifer Mah <42650198+JenniferMah@users.noreply.github.com> Date: Tue, 4 Jan 2022 15:05:37 -0700 Subject: [PATCH 074/101] chore: update license year (#136) --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index e5439a9..5db04ff 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (C) 2021, Twilio SendGrid, Inc. +Copyright (C) 2022, Twilio SendGrid, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From 51f1b1567a96a6dd600b7a93fcc998c07995fb7d Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 12 Jan 2022 19:20:18 +0000 Subject: [PATCH 075/101] [Librarian] Version Bump --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8ea9ba..36faf73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2022-01-12] Version 4.3.9 +-------------------------- +**Library - Chore** +- [PR #136](https://github.com/sendgrid/java-http-client/pull/136): update license year. Thanks to [@JenniferMah](https://github.com/JenniferMah)! + + [2021-12-01] Version 4.3.8 -------------------------- **Library - Chore** From cccce61fafa2dbf71f2307a188f7cf2b6b1a94f1 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 12 Jan 2022 19:23:58 +0000 Subject: [PATCH 076/101] Release 4.3.9 --- README.md | 4 ++-- pom.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 845bf38..1d0198d 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.8' + compile 'com.sendgrid:java-http-client:4.3.9' } repositories { @@ -54,7 +54,7 @@ repositories { com.sendgrid java-http-client - 4.3.8 + 4.3.9 ``` diff --git a/pom.xml b/pom.xml index 72ff9bf..e95b166 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.8 + 4.3.9 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.8 + 4.3.9 @@ -119,7 +119,7 @@ org.apache.httpcomponents httpcore - 4.4.14 + 4.4.15 org.apache.httpcomponents From a8d5e4da2d336a2b8e0d81c660d3ed24c46b2c84 Mon Sep 17 00:00:00 2001 From: Mikko Date: Wed, 2 Feb 2022 23:41:52 +0200 Subject: [PATCH 077/101] Support multiple duplicate queryparams (#134) The SendGrid API documentation states that the user can supply up to ten categories, but there is no way to supply them using the Java library. This commit fixes the problem by interpreting any value that has an ampersand in it as a list of values, which will be inserted as multiple query params. For example, the call request.addQueryParam("categories", "cat1&cat2") will output "?categories=cat1&categories=cat2" into the URL. --- README.md | 2 ++ src/main/java/com/sendgrid/Client.java | 15 +++++++++++- src/test/java/com/sendgrid/ClientTest.java | 28 ++++++++++++++++++---- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1d0198d..0c15ca9 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,8 @@ try { request.addHeader("Authorization", "Bearer YOUR_API_KEY"); request.addQueryParam("limit", "100"); request.addQueryParam("offset", "0"); +// Will be parsed to categories=cake&categories=pie&categories=baking +request.addQueryParam("categories", "cake&pie&baking"); request.setBody("{\"name\": \"My Request Body\"}"); request.setMethod(Method.POST); String param = "param"; diff --git a/src/main/java/com/sendgrid/Client.java b/src/main/java/com/sendgrid/Client.java index 340f12c..d0865fd 100644 --- a/src/main/java/com/sendgrid/Client.java +++ b/src/main/java/com/sendgrid/Client.java @@ -9,6 +9,8 @@ import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; +import java.util.Arrays; +import java.util.List; import org.apache.http.Header; import org.apache.http.HttpMessage; @@ -129,8 +131,19 @@ public URI buildUri(String baseUri, String endpoint, Map queryPa builder.setPath(endpoint); if (queryParams != null) { + String multiValueDelimiter = "&"; + for (Map.Entry entry : queryParams.entrySet()) { - builder.setParameter(entry.getKey(), entry.getValue()); + String value = entry.getValue(); + + if (value.indexOf(multiValueDelimiter) != -1) { + List values = Arrays.asList(value.split(multiValueDelimiter)); + for (String val : values) { + builder.addParameter(entry.getKey(), val); + } + } else { + builder.setParameter(entry.getKey(), entry.getValue()); + } } } diff --git a/src/test/java/com/sendgrid/ClientTest.java b/src/test/java/com/sendgrid/ClientTest.java index 9367379..0425199 100644 --- a/src/test/java/com/sendgrid/ClientTest.java +++ b/src/test/java/com/sendgrid/ClientTest.java @@ -33,8 +33,10 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; +import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; +import java.net.URL; import java.util.HashMap; import java.util.Map; @@ -62,6 +64,7 @@ public void testbuildUri() { Map queryParams = new HashMap(); queryParams.put("test1", "1"); queryParams.put("test2", "2"); + queryParams.put("test3", "3&4&5"); try { uri = client.buildUri(baseUri, endpoint, queryParams); } catch (URISyntaxException ex) { @@ -70,10 +73,23 @@ public void testbuildUri() { Assert.assertTrue(errors.toString(), false); } - String url = uri.toString(); - System.out.println(url); - Assert.assertTrue(url.equals("https://api.test.com/endpoint?test2=2&test1=1") || - url.equals("https://api.test.com/endpoint?test1=1&test2=2")); + URL url = null; + try { + url = uri.toURL(); + } catch (MalformedURLException ex) { + StringWriter errors = new StringWriter(); + ex.printStackTrace(new PrintWriter(errors)); + Assert.assertTrue(errors.toString(), false); + } + + Assert.assertTrue(url.getProtocol().equals("https")); + Assert.assertTrue(url.getHost().equals("api.test.com")); + Assert.assertTrue(url.getPath().equals("/endpoint")); + Assert.assertTrue(this.queryParamHasCorrectValue(url, "test1", "1")); + Assert.assertTrue(this.queryParamHasCorrectValue(url, "test2", "2")); + Assert.assertTrue(this.queryParamHasCorrectValue(url, "test3", "3")); + Assert.assertTrue(this.queryParamHasCorrectValue(url, "test3", "4")); + Assert.assertTrue(this.queryParamHasCorrectValue(url, "test3", "5")); } @Test @@ -174,4 +190,8 @@ public void testPut() { public void testDelete() { testMethod(Method.DELETE, 204); } + + private boolean queryParamHasCorrectValue(URL url, String key, String value) { + return url.getQuery().indexOf(key + "=" + value) != -1; + } } From c06b8c20cd49f9e4b21b7b13aa49e6261265d05d Mon Sep 17 00:00:00 2001 From: Shwetha Radhakrishna Date: Thu, 3 Feb 2022 14:47:53 -0600 Subject: [PATCH 078/101] chore: merge test and deploy workflows (#137) --- .../{release.yml => test-and-deploy.yml} | 48 ++++++++++++++---- .github/workflows/test.yml | 50 ------------------- README.md | 2 +- 3 files changed, 39 insertions(+), 61 deletions(-) rename .github/workflows/{release.yml => test-and-deploy.yml} (50%) delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/release.yml b/.github/workflows/test-and-deploy.yml similarity index 50% rename from .github/workflows/release.yml rename to .github/workflows/test-and-deploy.yml index d4317b9..c25ad2d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/test-and-deploy.yml @@ -1,13 +1,41 @@ -name: Release +name: Test and Deploy on: push: - tags: - - '*' + branches: [ '*' ] + tags: [ '*' ] + pull_request: + branches: [ main ] + schedule: + # Run automatically at 8AM PST Monday-Friday + - cron: '0 15 * * 1-5' workflow_dispatch: jobs: - release: - name: Release + test: + name: Test + runs-on: ubuntu-latest + timeout-minutes: 20 + strategy: + matrix: + java: [8, 11] + steps: + - uses: actions/checkout@v2 + + - name: Set up Java + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: ${{ matrix.java }} + cache: 'maven' + + - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V + - name: Run Unit Tests + run: mvn test -B + + deploy: + name: Deploy + if: success() && github.ref_type == 'tag' + needs: [ test ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -33,16 +61,16 @@ jobs: notify-on-failure: name: Slack notify on failure - if: ${{ failure() }} - needs: [release] + if: failure() && github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.ref_type == 'tag') + needs: [ test, deploy ] runs-on: ubuntu-latest steps: - uses: rtCamp/action-slack-notify@v2 env: - SLACK_COLOR: 'danger' + SLACK_COLOR: failure SLACK_ICON_EMOJI: ':github:' - SLACK_MESSAGE: ${{ format('Failed to release {1}{3} {0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id, ':') }} - SLACK_TITLE: Release Failure + SLACK_MESSAGE: ${{ format('Tests *{0}*, Deploy *{1}*, {2}/{3}/actions/runs/{4}', needs.test.result, needs.deploy.result, github.server_url, github.repository, github.run_id) }} + SLACK_TITLE: Action Failure - ${{ github.repository }} SLACK_USERNAME: GitHub Actions SLACK_MSG_AUTHOR: twilio-dx SLACK_FOOTER: Posted automatically using GitHub Actions diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index c985db3..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Tests -on: - push: - branches: [ '*' ] - pull_request: - branches: [ main ] - schedule: - # Run automatically at 8AM PST Monday-Friday - - cron: '0 15 * * 1-5' - workflow_dispatch: - -jobs: - test: - name: Test - runs-on: ubuntu-latest - timeout-minutes: 20 - strategy: - matrix: - java: [8, 11] - steps: - - uses: actions/checkout@v2 - - - name: Set up Java - uses: actions/setup-java@v2 - with: - distribution: 'temurin' - java-version: ${{ matrix.java }} - cache: 'maven' - - - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V - - name: Run Unit Tests - run: mvn test -B - - notify-on-failure: - name: Slack notify on failure - if: ${{ failure() && github.ref == 'refs/heads/main' && github.event_name != 'pull_request' }} - needs: [test] - runs-on: ubuntu-latest - steps: - - uses: rtCamp/action-slack-notify@v2 - env: - SLACK_COLOR: ${{ needs.test.status }} - SLACK_ICON_EMOJI: ':github:' - SLACK_MESSAGE: ${{ format('Build {2} in {1} failed{3} {0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id, ':') }} - SLACK_TITLE: Build Failure - SLACK_USERNAME: GitHub Actions - SLACK_MSG_AUTHOR: twilio-dx - SLACK_FOOTER: Posted automatically using GitHub Actions - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} - MSG_MINIMAL: true diff --git a/README.md b/README.md index 0c15ca9..90e8d1b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![SendGrid Logo](twilio_sendgrid_logo.png) -[![BuildStatus](https://github.com/sendgrid/java-http-client/actions/workflows/test.yml/badge.svg)](https://github.com/sendgrid/java-http-client/actions/workflows/test.yml) +[![Test and Deploy](https://github.com/sendgrid/java-http-client/actions/workflows/test-and-deploy.yml/badge.svg)](https://github.com/sendgrid/java-http-client/actions/workflows/test-and-deploy.yml) [![Maven Central](https://img.shields.io/maven-central/v/com.sendgrid/java-http-client.svg)](http://mvnrepository.com/artifact/com.sendgrid/java-http-client) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Twitter Follow](https://img.shields.io/twitter/follow/sendgrid.svg?style=social&label=Follow)](https://twitter.com/sendgrid) From 124fdab301af76c2110f7beec8e230e4eeea9354 Mon Sep 17 00:00:00 2001 From: Shwetha Radhakrishna Date: Thu, 3 Feb 2022 16:57:41 -0600 Subject: [PATCH 079/101] chore: add gh release to workflow (#138) * chore: add gh release to workflow --- .github/workflows/test-and-deploy.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml index c25ad2d..f256032 100644 --- a/.github/workflows/test-and-deploy.yml +++ b/.github/workflows/test-and-deploy.yml @@ -51,7 +51,17 @@ jobs: gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: GPG_PASSPHRASE - - run: mvn install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V + - name: Install Dependencies + run: make install + + - name: Create GitHub Release + uses: sendgrid/dx-automator/actions/release@main + with: + assets: java-http-client.jar + footer: '**[Maven](https://mvnrepository.com/artifact/com.sendgrid/java-http-client/${version})**' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Publish to Maven env: MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }} From 496c97828bbc33b8090cd97a51fd105e90a65d8c Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Fri, 4 Feb 2022 10:04:32 -0600 Subject: [PATCH 080/101] chore: make Slack message consistent across all repos --- .github/workflows/test-and-deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml index f256032..26660a8 100644 --- a/.github/workflows/test-and-deploy.yml +++ b/.github/workflows/test-and-deploy.yml @@ -79,7 +79,7 @@ jobs: env: SLACK_COLOR: failure SLACK_ICON_EMOJI: ':github:' - SLACK_MESSAGE: ${{ format('Tests *{0}*, Deploy *{1}*, {2}/{3}/actions/runs/{4}', needs.test.result, needs.deploy.result, github.server_url, github.repository, github.run_id) }} + SLACK_MESSAGE: ${{ format('Test *{0}*, Deploy *{1}*, {2}/{3}/actions/runs/{4}', needs.test.result, needs.deploy.result, github.server_url, github.repository, github.run_id) }} SLACK_TITLE: Action Failure - ${{ github.repository }} SLACK_USERNAME: GitHub Actions SLACK_MSG_AUTHOR: twilio-dx From 12fd4828a7f7562e14a5a40b67b0d94b188f9987 Mon Sep 17 00:00:00 2001 From: childish-sambino Date: Tue, 8 Feb 2022 11:11:46 -0600 Subject: [PATCH 081/101] chore: upgrade supported language versions (#139) --- .github/workflows/test-and-deploy.yml | 4 ++-- README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml index 26660a8..7450708 100644 --- a/.github/workflows/test-and-deploy.yml +++ b/.github/workflows/test-and-deploy.yml @@ -17,7 +17,7 @@ jobs: timeout-minutes: 20 strategy: matrix: - java: [8, 11] + java: [ 8, 11, 17 ] steps: - uses: actions/checkout@v2 @@ -43,7 +43,7 @@ jobs: - name: Set up Sonatype Maven uses: actions/setup-java@v2 with: - java-version: 8 + java-version: 17 distribution: temurin server-id: ossrh server-username: MAVEN_USERNAME diff --git a/README.md b/README.md index 90e8d1b..59a7e5d 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). ## Prerequisites -- Java 8 or 11 +- Java 8, 11, or 17 ## Install via Maven w/ Gradle From 55b77e4991a3bcb432b6b21347ade316aceeec37 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 9 Feb 2022 23:50:25 +0000 Subject: [PATCH 082/101] [Librarian] Version Bump --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36faf73..ebef906 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2022-02-09] Version 4.4.0 +-------------------------- +**Library - Chore** +- [PR #139](https://github.com/sendgrid/java-http-client/pull/139): upgrade supported language versions. Thanks to [@childish-sambino](https://github.com/childish-sambino)! +- [PR #138](https://github.com/sendgrid/java-http-client/pull/138): add gh release to workflow. Thanks to [@shwetha-manvinkurke](https://github.com/shwetha-manvinkurke)! +- [PR #137](https://github.com/sendgrid/java-http-client/pull/137): merge test and deploy workflows. Thanks to [@shwetha-manvinkurke](https://github.com/shwetha-manvinkurke)! + +**Library - Feature** +- [PR #134](https://github.com/sendgrid/java-http-client/pull/134): Support multiple duplicate queryparams. Thanks to [@mjjs](https://github.com/mjjs)! + + [2022-01-12] Version 4.3.9 -------------------------- **Library - Chore** From 138a0db78c8fc9c4ca0f65f66dd8d767e5975401 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 9 Feb 2022 23:51:00 +0000 Subject: [PATCH 083/101] Release 4.4.0 --- README.md | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 59a7e5d..e2525ee 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.3.9' + compile 'com.sendgrid:java-http-client:4.4.0' } repositories { @@ -54,7 +54,7 @@ repositories { com.sendgrid java-http-client - 4.3.9 + 4.4.0 ``` diff --git a/pom.xml b/pom.xml index e95b166..21c1e88 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.3.9 + 4.4.0 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.3.9 + 4.4.0 From 98f55e32f02e30481ff734af35552ed2c1adcc28 Mon Sep 17 00:00:00 2001 From: Jennifer Mah <42650198+JenniferMah@users.noreply.github.com> Date: Wed, 9 Feb 2022 16:57:12 -0800 Subject: [PATCH 084/101] fix: fix deployment to maven --- pom.xml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 21c1e88..07fd2b8 100644 --- a/pom.xml +++ b/pom.xml @@ -104,6 +104,16 @@ 1.8 + + + com.thoughtworks.xstream + xstream + 1.4.15 + junit junit-dep @@ -216,4 +226,4 @@ - \ No newline at end of file + From e975850aa901ef117f58e7b45c2ad60693153325 Mon Sep 17 00:00:00 2001 From: Jennifer Mah Date: Wed, 9 Feb 2022 17:14:38 -0800 Subject: [PATCH 085/101] fix: fix twilio-php docs --- pom.xml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 07fd2b8..9b2ebef 100644 --- a/pom.xml +++ b/pom.xml @@ -46,6 +46,18 @@ https://oss.sonatype.org/ true + + + + com.thoughtworks.xstream + xstream + 1.4.15 + + org.apache.maven.plugins @@ -104,16 +116,6 @@ 1.8 - - - com.thoughtworks.xstream - xstream - 1.4.15 - junit junit-dep From a1d0c6e854aa31517721e012b2a82d2ca893ca50 Mon Sep 17 00:00:00 2001 From: Jennifer Mah Date: Wed, 9 Feb 2022 17:19:35 -0800 Subject: [PATCH 086/101] chore: remove potential fix --- pom.xml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/pom.xml b/pom.xml index 9b2ebef..58e19ba 100644 --- a/pom.xml +++ b/pom.xml @@ -46,18 +46,6 @@ https://oss.sonatype.org/ true - - - - com.thoughtworks.xstream - xstream - 1.4.15 - - org.apache.maven.plugins From 262149b2ba45a72d845b54a4bf4c94ebec61aa67 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Thu, 10 Feb 2022 14:17:54 -0600 Subject: [PATCH 087/101] fix: rollback to Java 8 for Sonatype deployment --- .github/workflows/test-and-deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml index 7450708..d464089 100644 --- a/.github/workflows/test-and-deploy.yml +++ b/.github/workflows/test-and-deploy.yml @@ -43,7 +43,7 @@ jobs: - name: Set up Sonatype Maven uses: actions/setup-java@v2 with: - java-version: 17 + java-version: 8 distribution: temurin server-id: ossrh server-username: MAVEN_USERNAME From 779951837591c527083a62b698fdfd40bedba8c9 Mon Sep 17 00:00:00 2001 From: Jennifer Mah <42650198+JenniferMah@users.noreply.github.com> Date: Thu, 24 Feb 2022 14:19:21 -0800 Subject: [PATCH 088/101] feat: add GH action to update dependencies (#141) --- .github/workflows/update-dependencies.yml | 58 +++++++++++++++++++++++ Makefile | 5 +- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/update-dependencies.yml diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml new file mode 100644 index 0000000..0dd69a7 --- /dev/null +++ b/.github/workflows/update-dependencies.yml @@ -0,0 +1,58 @@ +name: Update dependencies +on: + schedule: + # Run automatically at 7AM PST Tuesday + - cron: '0 14 * * 2' + workflow_dispatch: + +jobs: + update-dependencies-and-test: + name: Update Dependencies & Test + runs-on: ubuntu-latest + timeout-minutes: 20 + strategy: + max-parallel: 1 + matrix: + java: [ 8, 11, 17 ] + + steps: + - name: Checkout java-http-client + uses: actions/checkout@v2 + + - name: Set up Java + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: ${{ matrix.java }} + cache: 'maven' + + - name: Updating semver dependencies + run: make update-deps + + - run: mvn install -Dgpg.skip -Dmaven.javadoc.skip=true -B -V + + - name: Add & Commit + if: matrix.java == '17' + uses: EndBug/add-and-commit@v8.0.2 + with: + add: 'pom.xml' + default_author: 'github_actions' + message: 'chore: update java-http-client dependencies' + + notify-on-failure: + name: Slack notify on failure + if: failure() + needs: [ update-dependencies-and-test ] + runs-on: ubuntu-latest + steps: + - uses: rtCamp/action-slack-notify@v2 + env: + SLACK_COLOR: failure + SLACK_ICON_EMOJI: ':github:' + SLACK_MESSAGE: ${{ format('Update dependencies *{0}*, {1}/{2}/actions/runs/{3}', needs.update-dependencies-and-test.result, github.server_url, github.repository, github.run_id) }} + SLACK_TITLE: Action Failure - ${{ github.repository }} + SLACK_USERNAME: GitHub Actions + SLACK_MSG_AUTHOR: twilio-dx + SLACK_FOOTER: Posted automatically using GitHub Actions + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + MSG_MINIMAL: true diff --git a/Makefile b/Makefile index 3d76197..851986a 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: install package test test-integration clean +.PHONY: install package test update-deps test-integration clean VERSION := $(shell mvn help:evaluate -Dexpression=project.version --batch-mode | grep -e '^[^\[]') install: @@ -13,5 +13,8 @@ package: test: mvn test +update-deps: + mvn versions:use-latest-releases versions:commit -DallowMajorUpdates=false + clean: mvn clean From 5da655731414e99ecf8f83fc868b7bbf5a623c09 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Mon, 28 Feb 2022 12:35:22 -0800 Subject: [PATCH 089/101] chore: push Datadog Release Metric upon deploy success (#142) --- .github/workflows/test-and-deploy.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml index d464089..9abc8c2 100644 --- a/.github/workflows/test-and-deploy.yml +++ b/.github/workflows/test-and-deploy.yml @@ -69,6 +69,11 @@ jobs: GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} run: mvn clean deploy -DskipTests=true -B -U -Prelease + - name: Submit metric to Datadog + uses: sendgrid/dx-automator/actions/datadog-release-metric@main + env: + DD_API_KEY: ${{ secrets.DATADOG_API_KEY }} + notify-on-failure: name: Slack notify on failure if: failure() && github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.ref_type == 'tag') From 73aba662547b7d3d492aab8c91a281759a3cac4f Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 9 Mar 2022 12:21:54 -0800 Subject: [PATCH 090/101] [Librarian] Version Bump --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebef906..150eafc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2022-03-09] Version 4.5.0 +-------------------------- +**Library - Chore** +- [PR #142](https://github.com/sendgrid/java-http-client/pull/142): push Datadog Release Metric upon deploy success. Thanks to [@eshanholtz](https://github.com/eshanholtz)! + +**Library - Feature** +- [PR #141](https://github.com/sendgrid/java-http-client/pull/141): add GH action to update dependencies. Thanks to [@JenniferMah](https://github.com/JenniferMah)! + + [2022-02-09] Version 4.4.0 -------------------------- **Library - Chore** From 782246b4c70b7688d98d95b867d94f6c773b3927 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 9 Mar 2022 12:21:54 -0800 Subject: [PATCH 091/101] Release 4.5.0 --- README.md | 4 ++-- pom.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e2525ee..c26ede1 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.4.0' + compile 'com.sendgrid:java-http-client:4.5.0' } repositories { @@ -54,7 +54,7 @@ repositories { com.sendgrid java-http-client - 4.4.0 + 4.5.0 ``` diff --git a/pom.xml b/pom.xml index 58e19ba..6cdc6ba 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.4.0 + 4.5.0 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.4.0 + 4.5.0 @@ -216,4 +216,4 @@ - + \ No newline at end of file From 4cef06671c23f72dd51c61587c9b5153ff035628 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Thu, 24 Mar 2022 10:48:08 -0500 Subject: [PATCH 092/101] chore: remove outdated announcements --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index c26ede1..b174c12 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,6 @@ If you are looking for the SendGrid API client library, please see [this repo](h # Announcements -**The default branch name for this repository has been changed to `main` as of 07/27/2020.** All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). @@ -60,10 +59,6 @@ repositories { `mvn install` -## Install via Fat Jar - -[sendgrid-java-latest.jar](http://dx.sendgrid.com/downloads/java-http-client/java-http-client-latest.jar) - ## Dependencies - Please see the [pom.xml file](pom.xml) From dc8dc648c90bec259bc6197af3f77b48c843fc25 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Fri, 25 Mar 2022 13:39:49 -0500 Subject: [PATCH 093/101] feat: add PR title validation --- .github/workflows/pr-lint.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/pr-lint.yml diff --git a/.github/workflows/pr-lint.yml b/.github/workflows/pr-lint.yml new file mode 100644 index 0000000..8388f21 --- /dev/null +++ b/.github/workflows/pr-lint.yml @@ -0,0 +1,15 @@ +name: Lint PR +on: + pull_request_target: + types: [ opened, edited, reopened ] + +jobs: + validate: + name: Validate title + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v4 + with: + types: chore docs fix feat test + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From dd508e44f4a5a2b576f753d929b8dc0f9206ae15 Mon Sep 17 00:00:00 2001 From: Bilal Boussayoud Date: Fri, 25 Mar 2022 15:27:45 -0600 Subject: [PATCH 094/101] fix: override default gh token (#143) --- .github/workflows/update-dependencies.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 0dd69a7..35ec8ed 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -34,6 +34,8 @@ jobs: - name: Add & Commit if: matrix.java == '17' uses: EndBug/add-and-commit@v8.0.2 + env: + GITHUB_TOKEN: ${{ secrets.SG_JAVA_GITHUB_TOKEN }} with: add: 'pom.xml' default_author: 'github_actions' From 10f70383d467dbadda96192232d8b23068261a21 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Thu, 21 Apr 2022 14:44:33 -0500 Subject: [PATCH 095/101] test: lint PRs on synchronize events Since synchronize events clears the status checks, it needs to be re-run. --- .github/workflows/pr-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-lint.yml b/.github/workflows/pr-lint.yml index 8388f21..dc7af3d 100644 --- a/.github/workflows/pr-lint.yml +++ b/.github/workflows/pr-lint.yml @@ -1,7 +1,7 @@ name: Lint PR on: pull_request_target: - types: [ opened, edited, reopened ] + types: [ opened, edited, synchronize, reopened ] jobs: validate: From e98f15c21324ca52cb24fda2479adfa444906835 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Thu, 12 May 2022 10:28:24 -0500 Subject: [PATCH 096/101] chore: drop the issue links from FIRST_TIMERS doc --- FIRST_TIMERS.md | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/FIRST_TIMERS.md b/FIRST_TIMERS.md index fe354fe..ab29f04 100644 --- a/FIRST_TIMERS.md +++ b/FIRST_TIMERS.md @@ -51,29 +51,3 @@ git push origin ## Important notice Before creating a pull request, make sure that you respect the repository's constraints regarding contributions. You can find them in the [CONTRIBUTING.md](CONTRIBUTING.md) file. - -## Repositories with Open, Easy, Help Wanted, Issue Filters - -* [Python SDK](https://github.com/sendgrid/sendgrid-python/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [PHP SDK](https://github.com/sendgrid/sendgrid-php/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [C# SDK](https://github.com/sendgrid/sendgrid-csharp/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Ruby SDK](https://github.com/sendgrid/sendgrid-ruby/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Node.js SDK](https://github.com/sendgrid/sendgrid-nodejs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Java SDK](https://github.com/sendgrid/sendgrid-java/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Go SDK](https://github.com/sendgrid/sendgrid-go/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Python SMTPAPI Client](https://github.com/sendgrid/smtpapi-python/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [PHP SMTPAPI Client](https://github.com/sendgrid/smtpapi-php/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [C# SMTPAPI Client](https://github.com/sendgrid/smtpapi-csharp/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Ruby SMTPAPI Client](https://github.com/sendgrid/smtpapi-ruby/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Node.js SMTPAPI Client](https://github.com/sendgrid/smtpapi-nodejs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Java SMTPAPI Client](https://github.com/sendgrid/smtpapi-java/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Go SMTPAPI Client](https://github.com/sendgrid/smtpapi-go/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Python HTTP Client](https://github.com/sendgrid/python-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [PHP HTTP Client](https://github.com/sendgrid/php-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [C# HTTP Client](https://github.com/sendgrid/csharp-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Java HTTP Client](https://github.com/sendgrid/java-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Ruby HTTP Client](https://github.com/sendgrid/ruby-http-client/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Go HTTP Client](https://github.com/sendgrid/rest/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Open API Definition](https://github.com/sendgrid/sendgrid-oai/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [DX Automator](https://github.com/sendgrid/dx-automator/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) -* [Documentation](https://github.com/sendgrid/docs/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3A%22status%3A+help+wanted%22) From 832502a69e7c960a6045f88cd5ec9d00c62f9bf2 Mon Sep 17 00:00:00 2001 From: "Gareth Paul Jones (GPJ)" Date: Thu, 12 May 2022 11:38:49 -0700 Subject: [PATCH 097/101] docs: Update to align with SendGrid Support (#144) --- .github/ISSUE_TEMPLATE/config.yml | 10 ------- CONTRIBUTING.md | 29 ------------------ ISSUE_TEMPLATE.md | 30 ------------------- README.md | 6 +++- .../com/sendgrid/TestRequiredFilesExist.java | 5 ---- 5 files changed, 5 insertions(+), 75 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 ISSUE_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 221c533..0000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,10 +0,0 @@ -contact_links: - - name: Twilio SendGrid Support - url: https://support.sendgrid.com - about: Get Support - - name: Stack Overflow - url: https://stackoverflow.com/questions/tagged/java-http-client+or+sendgrid+java - about: Ask questions on Stack Overflow - - name: Documentation - url: https://sendgrid.com/docs/for-developers/ - about: View Reference Documentation diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7069100..ff28f44 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,5 @@ Hello! Thank you for choosing to help contribute to one of the SendGrid open source projects. There are many ways you can contribute and help is always welcome. We simply ask that you follow the following contribution policies. -- [Feature Request](#feature-request) -- [Submit a Bug Report](#submit-a-bug-report) - [Improvements to the Codebase](#improvements-to-the-codebase) - [Understanding the Code Base](#understanding-the-codebase) - [Testing](#testing) @@ -9,33 +7,6 @@ Hello! Thank you for choosing to help contribute to one of the SendGrid open sou - [Creating a Pull Request](#creating-a-pull-request) - [Code Reviews](#code-reviews) - -## Feature Request - -If you'd like to make a feature request, please read this section. - -The GitHub issue tracker is the preferred channel for library feature requests, but please respect the following restrictions: - -- Please **search for existing issues** in order to ensure we don't have duplicate bugs/feature requests. -- Please be respectful and considerate of others when commenting on issues - - -## Submit a Bug Report - -Note: DO NOT include your credentials in ANY code examples, descriptions, or media you make public. - -A software bug is a demonstrable issue in the code base. In order for us to diagnose the issue and respond as quickly as possible, please add as much detail as possible into your bug report. - -Before you decide to create a new issue, please try the following: - -1. Check the Github issues tab if the identified issue has already been reported, if so, please add a +1 to the existing post. -2. Update to the latest version of this code and check if the issue has already been fixed -3. Copy and fill in the Bug Report Template we have provided below - -### Please use our Bug Report Template - -In order to make the process easier, we've included a [sample bug report template](ISSUE_TEMPLATE.md). - ## Improvements to the Codebase diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md deleted file mode 100644 index b05b163..0000000 --- a/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,30 +0,0 @@ - - -### Issue Summary -A summary of the issue and the environment in which it occurs. If suitable, include the steps required to reproduce the bug. Please feel free to include screenshots, screencasts, or code examples. - -### Steps to Reproduce -1. This is the first step -2. This is the second step -3. Further steps, etc. - -### Code Snippet -```java -# paste code here -``` - -### Exception/Log -``` -# paste exception/log here -``` - -### Technical details: -* java-http-client version: -* java version: - diff --git a/README.md b/README.md index b174c12..c4f940f 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ If you are looking for the SendGrid API client library, please see [this repo](h * [Usage](./USAGE.md) * [How to Contribute](#contribute) * [About](#about) +* [Support](#support) * [License](#license) @@ -129,7 +130,10 @@ Quick links: java-http-client is maintained and funded by Twilio SendGrid, Inc. The names and logos for java-http-client are trademarks of Twilio SendGrid, Inc. -If you need help installing or using the library, please check the [Twilio SendGrid Support Help Center](https://support.sendgrid.com). + +# Support + +If you need help using SendGrid, please check the [Twilio SendGrid Support Help Center](https://support.sendgrid.com). If you've instead found a bug in the library or would like new features added, go ahead and open issues or pull requests against this repo! diff --git a/src/test/java/com/sendgrid/TestRequiredFilesExist.java b/src/test/java/com/sendgrid/TestRequiredFilesExist.java index 792b209..02e3d35 100644 --- a/src/test/java/com/sendgrid/TestRequiredFilesExist.java +++ b/src/test/java/com/sendgrid/TestRequiredFilesExist.java @@ -45,11 +45,6 @@ public class TestRequiredFilesExist { assertTrue(new File("./CONTRIBUTING.md").exists()); } - // ./ISSUE_TEMPLATE.md - @Test public void checkIssuesTemplateExists() { - assertTrue(new File("./ISSUE_TEMPLATE.md").exists()); - } - // ./LICENSE @Test public void checkLicenseExists() { assertTrue(new File("./LICENSE").exists()); From 6cffc4e912c5e180c0df481cf084ac43242ee930 Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 18 May 2022 13:35:23 -0700 Subject: [PATCH 098/101] [Librarian] Version Bump --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 150eafc..e4a94c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +[2022-05-18] Version 4.5.1 +-------------------------- +**Library - Docs** +- [PR #144](https://github.com/sendgrid/java-http-client/pull/144): Update to align with SendGrid Support. Thanks to [@garethpaul](https://github.com/garethpaul)! + +**Library - Fix** +- [PR #143](https://github.com/sendgrid/java-http-client/pull/143): override default gh token. Thanks to [@beebzz](https://github.com/beebzz)! + + [2022-03-09] Version 4.5.0 -------------------------- **Library - Chore** From 83a9696b3e0b7eb3f92772deadf9ee21f926777a Mon Sep 17 00:00:00 2001 From: Twilio Date: Wed, 18 May 2022 13:35:23 -0700 Subject: [PATCH 099/101] Release 4.5.1 --- README.md | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c4f940f..0f646b8 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ All updates to this project are documented in our [CHANGELOG](CHANGELOG.md). ... dependencies { ... - compile 'com.sendgrid:java-http-client:4.5.0' + compile 'com.sendgrid:java-http-client:4.5.1' } repositories { @@ -54,7 +54,7 @@ repositories { com.sendgrid java-http-client - 4.5.0 + 4.5.1 ``` diff --git a/pom.xml b/pom.xml index 6cdc6ba..efcc8d7 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar A simple HTTP client HTTP REST client, simplified for Java - 4.5.0 + 4.5.1 https://github.com/sendgrid/java-http-client @@ -24,7 +24,7 @@ https://github.com/sendgrid/java-http-client scm:git:git@github.com:sendgrid/java-http-client.git scm:git:git@github.com:sendgrid/java-http-client.git - 4.5.0 + 4.5.1 From 6540eda398f109c24f32dc0436559c9471ec9ecc Mon Sep 17 00:00:00 2001 From: Raghav Katyal Date: Wed, 6 Jul 2022 16:14:46 -0700 Subject: [PATCH 100/101] Adding misc as PR type (#145) --- .github/workflows/pr-lint.yml | 2 +- PULL_REQUEST_TEMPLATE.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-lint.yml b/.github/workflows/pr-lint.yml index dc7af3d..2f5232b 100644 --- a/.github/workflows/pr-lint.yml +++ b/.github/workflows/pr-lint.yml @@ -10,6 +10,6 @@ jobs: steps: - uses: amannn/action-semantic-pull-request@v4 with: - types: chore docs fix feat test + types: chore docs fix feat test misc env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index 593da34..bc85492 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -3,7 +3,7 @@ We appreciate the effort for this pull request but before that please make sure Please format the PR title appropriately based on the type of change: [!]: -Where is one of: docs, chore, feat, fix, test. +Where is one of: docs, chore, feat, fix, test, misc. Add a '!' after the type for breaking changes (e.g. feat!: new breaking feature). **All third-party contributors acknowledge that any contributions they provide will be made under the same open-source license that the open-source project is provided under.** From 956969baa6ae17ab326e818e1bf9a367e23b8c80 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Tue, 3 Jan 2023 09:09:30 -0600 Subject: [PATCH 101/101] docs: updated the year in the license --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 5db04ff..3154774 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (C) 2022, Twilio SendGrid, Inc. +Copyright (C) 2023, Twilio SendGrid, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in