diff --git a/29th_first_semina/app/build.gradle b/29th_first_semina/app/build.gradle
index 211b7b2..a83babc 100644
--- a/29th_first_semina/app/build.gradle
+++ b/29th_first_semina/app/build.gradle
@@ -38,6 +38,9 @@ android {
dependencies {
+ implementation "com.squareup.retrofit2:retrofit:2.9.0"
+ implementation "com.squareup.retrofit2:converter-gson:2.9.0"
+ implementation "com.google.code.gson:gson:2.8.6"
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
diff --git a/29th_first_semina/app/src/main/AndroidManifest.xml b/29th_first_semina/app/src/main/AndroidManifest.xml
index 09ee285..c8f1704 100644
--- a/29th_first_semina/app/src/main/AndroidManifest.xml
+++ b/29th_first_semina/app/src/main/AndroidManifest.xml
@@ -5,20 +5,14 @@
-
-
-
-
-
-
-
-
+
@@ -28,7 +22,7 @@
-
+
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignInActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignInActivity.kt
deleted file mode 100644
index fd1f25e..0000000
--- a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignInActivity.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.example.a29th_first_semina.ui.view.sigin
-
-import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.widget.Toast
-import com.example.a29th_first_semina.databinding.ActivitySigninBinding
-import com.example.a29th_first_semina.ui.view.home.HomeActivity
-
-class SignInActivity : AppCompatActivity() {
- private lateinit var binding: ActivitySigninBinding
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivitySigninBinding.inflate(layoutInflater)
- setContentView(binding.root)
- initButtonClickEvent()
-
- }
-
- private fun initButtonClickEvent() {
-
- clickLoginEvent()
- clickSignUpEvent()
- }
-
- private fun moveHomeActivity() {
- val homeIntent = Intent(this, HomeActivity::class.java)
- startActivity(homeIntent)
- }
-
- private fun moveSignUpActivity() {
- val signupIntent = Intent(this, SignUpActivity::class.java)
- startActivity(signupIntent)
-
- }
-
- private fun clickLoginEvent() {
-
- with(binding) {
- btnLogin.setOnClickListener {
- val userId = etId.text
- val userPassword= etPwd.text
- if (userId.isEmpty() || userPassword.isEmpty()) {
- Toast.makeText(this@SignInActivity, "로그인 실패", Toast.LENGTH_SHORT).show()
- } else {
- moveHomeActivity()
- }
-
- }
-
- }
-
- }
-
- private fun clickSignUpEvent() {
- binding.tvSignup.setOnClickListener {
- moveSignUpActivity()
- }
-
- }
-}
\ No newline at end of file
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignUpActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignUpActivity.kt
deleted file mode 100644
index 199b107..0000000
--- a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignUpActivity.kt
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.example.a29th_first_semina.ui.view.sigin
-
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.widget.Toast
-import com.example.a29th_first_semina.databinding.ActivitySignUpBinding
-
-class SignUpActivity : AppCompatActivity() {
- private lateinit var binding: ActivitySignUpBinding
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivitySignUpBinding.inflate(layoutInflater)
- setContentView(binding.root)
- initButtonClick()
- }
-
- private fun initButtonClick() {
- clickSignUpEvent()
- }
-
- private fun clickSignUpEvent() {
-
- binding.apply {
- val userName = etName.text
- val userId = etId.text
- val userPwd = etPwd.text
-
- btnSignup.setOnClickListener {
- if (userName.isEmpty() || userId.isEmpty() || userPwd.isEmpty() ){
- Toast.makeText(this@SignUpActivity, "입력되지 않은 정보가 있습니다", Toast.LENGTH_SHORT)
- .show()
- }
- else {
- finish()
- }
- }
- }
-
-
- }
-}
\ No newline at end of file
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetLoginData.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetLoginData.kt
new file mode 100644
index 0000000..1c21f47
--- /dev/null
+++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetLoginData.kt
@@ -0,0 +1,9 @@
+package com.example.a29th_first_semina.ui.view.sigin.data
+
+import com.google.gson.annotations.SerializedName
+
+data class RequsetLoginData(
+ @SerializedName("email")
+ val email : String,
+ val password : String,
+)
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetSignUpdata.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetSignUpdata.kt
new file mode 100644
index 0000000..8eb3dec
--- /dev/null
+++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetSignUpdata.kt
@@ -0,0 +1,8 @@
+package com.example.a29th_first_semina.ui.view.sigin.data
+
+data class RequsetSignUpdata(
+ val email : String,
+ val name : String,
+ val password : String,
+
+)
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseLoginData.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseLoginData.kt
new file mode 100644
index 0000000..bced1c6
--- /dev/null
+++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseLoginData.kt
@@ -0,0 +1,15 @@
+package com.example.a29th_first_semina.ui.view.sigin.data
+
+data class ResponseLoginData(
+ val status : Int,
+ val success : Boolean,
+ val message : String,
+ val data : Data
+) {
+
+ data class Data(
+ val id: Int,
+ val name: String,
+ val email: String
+ )
+}
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseSignUpData.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseSignUpData.kt
new file mode 100644
index 0000000..f8b1388
--- /dev/null
+++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseSignUpData.kt
@@ -0,0 +1,17 @@
+package com.example.a29th_first_semina.ui.view.sigin.data
+
+data class ResponseSignUpData(
+
+ val status : Int,
+ val success : Boolean,
+ val message : String,
+ val data : Data
+) {
+
+ data class Data(
+ val id: Int,
+ val name: String,
+ val email: String
+
+ )
+}
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/Service.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/Service.kt
new file mode 100644
index 0000000..462e1b6
--- /dev/null
+++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/Service.kt
@@ -0,0 +1,24 @@
+package com.example.a29th_first_semina.ui.view.sigin.di
+
+import android.telecom.Call
+import com.example.a29th_first_semina.ui.view.sigin.data.RequsetLoginData
+import com.example.a29th_first_semina.ui.view.sigin.data.RequsetSignUpdata
+import com.example.a29th_first_semina.ui.view.sigin.data.ResponseLoginData
+import com.example.a29th_first_semina.ui.view.sigin.data.ResponseSignUpData
+import retrofit2.http.Body
+import retrofit2.http.Headers
+import retrofit2.http.POST
+
+interface Service {
+ @Headers("Content-Type:application/json")
+ @POST("user/login")
+ fun postLogin(
+ @Body body : RequsetLoginData
+ ) : retrofit2.Call
+
+
+ @POST("user/signup")
+ fun postSignup(
+ @Body body : RequsetSignUpdata
+ ) : retrofit2.Call
+}
\ No newline at end of file
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/ServiceCreater.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/ServiceCreater.kt
new file mode 100644
index 0000000..aca30ac
--- /dev/null
+++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/ServiceCreater.kt
@@ -0,0 +1,18 @@
+package com.example.a29th_first_semina.ui.view.sigin.di
+
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+object ServiceCreater {
+
+ private const val BASE_URL = "https://asia-northeast3-we-sopt-29.cloudfunctions.net/api/"
+
+ private val retrofit : Retrofit = Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build()
+
+ val service : Service = retrofit.create(Service::class.java)
+
+
+}
\ No newline at end of file
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignInActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignInActivity.kt
new file mode 100644
index 0000000..2e413e8
--- /dev/null
+++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignInActivity.kt
@@ -0,0 +1,101 @@
+package com.example.a29th_first_semina.ui.view.sigin.view
+
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.util.Log
+import android.widget.Toast
+import com.example.a29th_first_semina.databinding.ActivitySigninBinding
+import com.example.a29th_first_semina.ui.view.home.HomeActivity
+import com.example.a29th_first_semina.ui.view.sigin.di.ServiceCreater
+import com.example.a29th_first_semina.ui.view.sigin.data.RequsetLoginData
+import com.example.a29th_first_semina.ui.view.sigin.data.ResponseLoginData
+import retrofit2.Callback
+import retrofit2.Response
+
+class SignInActivity : AppCompatActivity() {
+ private lateinit var binding: ActivitySigninBinding
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivitySigninBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ initButtonClickEvent()
+
+ }
+
+ private fun initButtonClickEvent() {
+
+ clickLoginEvent()
+ clickSignUpEvent()
+ }
+
+ private fun moveHomeActivity() {
+ val homeIntent = Intent(this, HomeActivity::class.java)
+ startActivity(homeIntent)
+ }
+
+ private fun moveSignUpActivity() {
+ val signupIntent = Intent(this, SignUpActivity::class.java)
+ startActivity(signupIntent)
+
+ }
+
+ private fun clickLoginEvent() {
+
+ with(binding) {
+ btnLogin.setOnClickListener {
+ val userId = etId.text
+ val userPassword= etPwd.text
+ if (userId.isEmpty() || userPassword.isEmpty()) {
+ Toast.makeText(this@SignInActivity, "아이디/비번 둘 다 입력해라", Toast.LENGTH_SHORT).show()
+ } else {
+ initNetwork()
+ }
+
+ }
+
+ }
+
+ }
+
+ private fun clickSignUpEvent() {
+ binding.tvSignup.setOnClickListener {
+ moveSignUpActivity()
+ }
+
+ }
+
+ private fun initNetwork(){
+ val requsetLoginData = RequsetLoginData(
+ email = binding.etId.text.toString(),
+ password = binding.etPwd.text.toString()
+ )
+
+ val call : retrofit2.Call = ServiceCreater.service.postLogin(requsetLoginData)
+
+ call.enqueue(object : Callback{
+ override fun onResponse(
+ call: retrofit2.Call,
+ response: Response
+ ) {
+ if(response.isSuccessful){
+ val data = response.body()?.data
+ moveHomeActivity()
+ Log.d("서버통신 상태",response.body()?.status.toString())
+ }
+ else {
+ Toast.makeText(
+ this@SignInActivity,
+ response.body()?.status.toString(),
+ Toast.LENGTH_SHORT
+ ).show()
+ Log.d("서버통신 상태", response.body()?.status.toString())
+ }
+ }
+
+ override fun onFailure(call: retrofit2.Call, t: Throwable) {
+ Log.d("로그인통신 실패","실패임")
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignUpActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignUpActivity.kt
new file mode 100644
index 0000000..43010ca
--- /dev/null
+++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignUpActivity.kt
@@ -0,0 +1,81 @@
+package com.example.a29th_first_semina.ui.view.sigin.view
+
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.util.Log
+import android.widget.Toast
+import com.example.a29th_first_semina.databinding.ActivitySignUpBinding
+import com.example.a29th_first_semina.ui.view.sigin.di.ServiceCreater
+import com.example.a29th_first_semina.ui.view.sigin.data.RequsetSignUpdata
+import com.example.a29th_first_semina.ui.view.sigin.data.ResponseSignUpData
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
+
+class SignUpActivity : AppCompatActivity() {
+ private lateinit var binding: ActivitySignUpBinding
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivitySignUpBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ initButtonClick()
+ }
+
+ private fun initButtonClick() {
+ clickSignUpEvent()
+ }
+
+ private fun clickSignUpEvent() {
+
+ binding.apply {
+ val userName = etName.text
+ val userId = etId.text
+ val userPwd = etPwd.text
+
+ btnSignup.setOnClickListener {
+ if (userName.isEmpty() || userId.isEmpty() || userPwd.isEmpty() ){
+ Toast.makeText(this@SignUpActivity, "입력되지 않은 정보가 있습니다", Toast.LENGTH_SHORT)
+ .show()
+ }
+ else {
+ initNetwork()
+ }
+ }
+ }
+
+
+ }
+
+ private fun initNetwork() {
+ val requsetSignupData = RequsetSignUpdata(
+ email = binding.etId.text.toString(),
+ password = binding.etPwd.toString(),
+ name = binding.etName.toString()
+ )
+
+ val call : Call = ServiceCreater.service.postSignup(requsetSignupData)
+
+ call.enqueue(object : Callback{
+ override fun onResponse(
+ call: Call,
+ response: Response
+ ) {
+ if(response.isSuccessful){
+ val data = response.body()?.data
+ Log.d("서버통신 상태", response.body()?.status.toString())
+ finish()
+ }
+
+ else{
+ Log.d("서버통신 상태", response.body()?.status.toString())
+ }
+ }
+
+ override fun onFailure(call: Call, t: Throwable) {
+ Log.d("서버통신 상태", "실패")
+ }
+ })
+
+
+ }
+}
\ No newline at end of file
diff --git a/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml b/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml
index f39715a..a33cdcb 100644
--- a/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml
+++ b/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
- tools:context=".ui.view.sigin.SignUpActivity">
+ tools:context=".ui.view.sigin.view.SignUpActivity">
+ tools:context=".ui.view.sigin.view.SignInActivity">